Пример #1
0
void client_session_bailout(ClientSession_t **session)
{
	ClientSession_t *c = *session;

	if (! c) return;
	TRACE(TRACE_DEBUG,"[%p]", c);

	// brute force:
	if (server_conf->no_daemonize == 1) _exit(0);

	client_session_reset(c);
	c->state = CLIENTSTATE_ANY;
	ci_close(c->ci);
	c->ci = NULL;
	g_free(c);
	c = NULL;
}
Пример #2
0
void imap_cleanup_deferred(gpointer data)
{
	int rx;
	dm_thread_data *D = (dm_thread_data *)data;
	ImapSession *session = (ImapSession *)D->session;
	ClientBase_T *ci = session->ci;

	if (ci->rev) event_del(ci->rev);
	if (ci_wbuf_len(ci)) {
		ci_write_cb(ci);
		dm_queue_push(imap_cleanup_deferred, session, NULL);
		return;
	}

	rx = ci->rx;
	ci_close(ci);
	ci = NULL;

	dbmail_imap_session_delete(&session);

	if (rx == STDIN_FILENO)
		exit(0);
}