1 /*
2  * h_site_idle.c
3  *
4  * (C)2000-2011 by Marc Huber <Marc.Huber@web.de>
5  * All rights reserved.
6  *
7  * $Id: h_site_idle.c,v 1.12 2015/03/14 06:11:26 marc Exp marc $
8  *
9  */
10 
11 #include "headers.h"
12 
13 static const char rcsid[] __attribute__ ((used)) = "$Id: h_site_idle.c,v 1.12 2015/03/14 06:11:26 marc Exp marc $";
14 
h_site_idle(struct context * ctx,char * arg)15 void h_site_idle(struct context *ctx, char *arg)
16 {
17     DebugIn(DEBUG_COMMAND);
18 
19     if (arg) {
20 	u_long t;
21 	if (1 == sscanf(arg, "%lu", &t)) {
22 	    if ((time_t) t < ctx->idle_timeout_min || (time_t) t > ctx->idle_timeout_max)
23 		replyf(ctx, MSG_501_Inactivity_range, ctx->idle_timeout_min, ctx->idle_timeout_max);
24 	    else {
25 		io_sched_del(ctx->io, ctx, (void *) cleanup);
26 		ctx->idle_timeout = (time_t) t;
27 		if (t)
28 		    io_sched_app(ctx->io, ctx, (void *) cleanup, (time_t) t, 0);
29 		replyf(ctx, MSG_200_Inactivity_set, ctx->idle_timeout);
30 	    }
31 	} else
32 	    reply(ctx, MSG_500_Inactivity);
33     } else
34 	replyf(ctx, MSG_200_Current_inactivity, ctx->idle_timeout);
35 
36     DebugOut(DEBUG_COMMAND);
37 }
38