Although this code is in contrib/ there is no active upstream. Reviewed by: brooks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D36047
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>
|
|
#include <unistd.h>
|
|
|
|
extern void exit();
|
|
|
|
#include "tcpd.h"
|
|
|
|
/* clean_exit - clean up and exit */
|
|
|
|
void clean_exit(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);
|
|
}
|