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>
  12 SM_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 **  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 
  27 int
  28 mi_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 free 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 */