106f25ae9SGregory Neil Shapiro /* 25dd76dd0SGregory Neil Shapiro * Copyright (c) 1999-2003, 2006 Proofpoint, Inc. and its suppliers. 306f25ae9SGregory Neil Shapiro * All rights reserved. 406f25ae9SGregory Neil Shapiro * 506f25ae9SGregory Neil Shapiro * By using this file, you agree to the terms and conditions set 606f25ae9SGregory Neil Shapiro * forth in the LICENSE file which can be found at the top level of 706f25ae9SGregory Neil Shapiro * the sendmail distribution. 806f25ae9SGregory Neil Shapiro * 906f25ae9SGregory Neil Shapiro */ 1006f25ae9SGregory Neil Shapiro 1140266059SGregory Neil Shapiro #include <sm/gen.h> 124313cc83SGregory Neil Shapiro SM_RCSID("@(#)$Id: handler.c,v 8.40 2013-11-22 20:51:36 ca Exp $") 1306f25ae9SGregory Neil Shapiro 1406f25ae9SGregory Neil Shapiro #include "libmilter.h" 1506f25ae9SGregory Neil Shapiro 16d0cef73dSGregory Neil Shapiro #if !_FFR_WORKERS_POOL 1706f25ae9SGregory Neil Shapiro /* 18da7d7b9cSGregory Neil Shapiro ** MI_HANDLE_SESSION -- Handle a connected session in its own context 1906f25ae9SGregory Neil Shapiro ** 2006f25ae9SGregory Neil Shapiro ** Parameters: 2106f25ae9SGregory Neil Shapiro ** ctx -- context structure 2206f25ae9SGregory Neil Shapiro ** 2306f25ae9SGregory Neil Shapiro ** Returns: 2406f25ae9SGregory Neil Shapiro ** MI_SUCCESS/MI_FAILURE 2506f25ae9SGregory Neil Shapiro */ 2606f25ae9SGregory Neil Shapiro 2706f25ae9SGregory Neil Shapiro int 2806f25ae9SGregory Neil Shapiro mi_handle_session(ctx) 2906f25ae9SGregory Neil Shapiro SMFICTX_PTR ctx; 3006f25ae9SGregory Neil Shapiro { 3106f25ae9SGregory Neil Shapiro int ret; 3206f25ae9SGregory Neil Shapiro 3306f25ae9SGregory Neil Shapiro if (ctx == NULL) 3406f25ae9SGregory Neil Shapiro return MI_FAILURE; 3506f25ae9SGregory Neil Shapiro ctx->ctx_id = (sthread_t) sthread_get_id(); 3606f25ae9SGregory Neil Shapiro 3706f25ae9SGregory Neil Shapiro /* 38*5b0945b5SGregory Neil Shapiro ** Detach so resources are freed when the thread returns. 3913bd1963SGregory Neil Shapiro ** If we ever "wait" for threads, this call must be removed. 4006f25ae9SGregory Neil Shapiro */ 4194c01205SGregory Neil Shapiro 4206f25ae9SGregory Neil Shapiro if (pthread_detach(ctx->ctx_id) != 0) 4394c01205SGregory Neil Shapiro ret = MI_FAILURE; 4494c01205SGregory Neil Shapiro else 4506f25ae9SGregory Neil Shapiro ret = mi_engine(ctx); 469bd497b8SGregory Neil Shapiro mi_clr_ctx(ctx); 4706f25ae9SGregory Neil Shapiro ctx = NULL; 4806f25ae9SGregory Neil Shapiro return ret; 4906f25ae9SGregory Neil Shapiro } 50d0cef73dSGregory Neil Shapiro #endif /* !_FFR_WORKERS_POOL */ 51