43 lines
1.1 KiB
C
43 lines
1.1 KiB
C
|
/*
|
||
|
* clean_exit() cleans up and terminates the program. It should be called
|
||
|
* instead of exit() when for some reason the real network daemon will not or
|
||
|
* cannot be run. Reason: in the case of a datagram-oriented service we must
|
||
|
* discard the not-yet received data from the client. Otherwise, inetd will
|
||
|
* see the same datagram again and again, and go into a loop.
|
||
|
*
|
||
|
* Author: Wietse Venema, Eindhoven University of Technology, The Netherlands.
|
||
|
*/
|
||
|
|
||
|
#ifndef lint
|
||
|
static char sccsid[] = "@(#) clean_exit.c 1.4 94/12/28 17:42:19";
|
||
|
#endif
|
||
|
|
||
|
#include <stdio.h>
|
||
|
|
||
|
extern void exit();
|
||
|
|
||
|
#include "tcpd.h"
|
||
|
|
||
|
/* clean_exit - clean up and exit */
|
||
|
|
||
|
void clean_exit(request)
|
||
|
struct request_info *request;
|
||
|
{
|
||
|
|
||
|
/*
|
||
|
* In case of unconnected protocols we must eat up the not-yet received
|
||
|
* data or inetd will loop.
|
||
|
*/
|
||
|
|
||
|
if (request->sink)
|
||
|
request->sink(request->fd);
|
||
|
|
||
|
/*
|
||
|
* Be kind to the inetd. We already reported the problem via the syslogd,
|
||
|
* and there is no need for additional garbage in the logfile.
|
||
|
*/
|
||
|
|
||
|
sleep(5);
|
||
|
exit(0);
|
||
|
}
|