handler.c revision 363466
1/*
2 *  Copyright (c) 1999-2003, 2006 Proofpoint, Inc. and its suppliers.
3 *	All rights reserved.
4 *
5 * By using this file, you agree to the terms and conditions set
6 * forth in the LICENSE file which can be found at the top level of
7 * the sendmail distribution.
8 *
9 */
10
11#include <sm/gen.h>
12SM_RCSID("@(#)$Id: handler.c,v 8.40 2013-11-22 20:51:36 ca Exp $")
13
14#include "libmilter.h"
15
16#if !_FFR_WORKERS_POOL
17/*
18**  MI_HANDLE_SESSION -- Handle a connected session in its own context
19**
20**	Parameters:
21**		ctx -- context structure
22**
23**	Returns:
24**		MI_SUCCESS/MI_FAILURE
25*/
26
27int
28mi_handle_session(ctx)
29	SMFICTX_PTR ctx;
30{
31	int ret;
32
33	if (ctx == NULL)
34		return MI_FAILURE;
35	ctx->ctx_id = (sthread_t) sthread_get_id();
36
37	/*
38	**  Detach so resources are freed when the thread returns.
39	**  If we ever "wait" for threads, this call must be removed.
40	*/
41
42	if (pthread_detach(ctx->ctx_id) != 0)
43		ret = MI_FAILURE;
44	else
45		ret = mi_engine(ctx);
46	mi_clr_ctx(ctx);
47	ctx = NULL;
48	return ret;
49}
50#endif /* !_FFR_WORKERS_POOL */
51