2011-03-06 06:58:58 -05:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
#include "imapfilter.h"
|
|
|
|
#include "session.h"
|
|
|
|
#include "list.h"
|
|
|
|
|
|
|
|
|
|
|
|
extern list *sessions;
|
|
|
|
|
|
|
|
|
2012-02-14 16:13:15 -05:00
|
|
|
void session_init(session *ssn);
|
|
|
|
|
|
|
|
|
2011-03-06 06:58:58 -05:00
|
|
|
/*
|
|
|
|
* Allocate memory for a new session and add it to the sessions linked list.
|
|
|
|
*/
|
|
|
|
session *
|
|
|
|
session_new(void)
|
|
|
|
{
|
2012-02-14 16:13:15 -05:00
|
|
|
session *s = (session *)xmalloc(sizeof(session));
|
2011-03-06 06:58:58 -05:00
|
|
|
|
|
|
|
session_init(s);
|
|
|
|
|
|
|
|
sessions = list_append(sessions, s);
|
|
|
|
|
|
|
|
return s;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Set session variables to safe values.
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
session_init(session *ssn)
|
|
|
|
{
|
|
|
|
|
|
|
|
ssn->server = NULL;
|
|
|
|
ssn->port = NULL;
|
2012-02-23 13:17:41 -05:00
|
|
|
ssn->sslproto = NULL;
|
2011-03-06 06:58:58 -05:00
|
|
|
ssn->username = NULL;
|
2012-02-11 16:47:08 -05:00
|
|
|
ssn->password = NULL;
|
2011-03-06 06:58:58 -05:00
|
|
|
ssn->socket = -1;
|
2012-02-23 13:17:41 -05:00
|
|
|
ssn->sslconn = NULL;
|
2011-03-06 06:58:58 -05:00
|
|
|
ssn->protocol = PROTOCOL_NONE;
|
|
|
|
ssn->capabilities = CAPABILITY_NONE;
|
|
|
|
ssn->ns.prefix = NULL;
|
|
|
|
ssn->ns.delim = '\0';
|
2012-02-11 16:47:08 -05:00
|
|
|
ssn->selected = NULL;
|
2011-03-06 06:58:58 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
2012-02-11 16:47:08 -05:00
|
|
|
* Remove session from sessions linked list and free allocated memory.
|
2011-03-06 06:58:58 -05:00
|
|
|
*/
|
|
|
|
void
|
|
|
|
session_destroy(session *ssn)
|
|
|
|
{
|
2012-02-11 16:47:08 -05:00
|
|
|
|
|
|
|
if (!ssn)
|
|
|
|
return;
|
2011-03-06 06:58:58 -05:00
|
|
|
|
|
|
|
sessions = list_remove(sessions, ssn);
|
|
|
|
|
|
|
|
if (ssn->ns.prefix)
|
|
|
|
xfree(ssn->ns.prefix);
|
|
|
|
xfree(ssn);
|
|
|
|
}
|