diff options
author | Daniel Stenberg <daniel@haxx.se> | 2003-10-07 21:54:04 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2003-10-07 21:54:04 +0000 |
commit | 0436fbe226ca8ea71a751f4a86a228632e5cbc63 (patch) | |
tree | 5cf6478e89608a8000bd36014ba4032bcc9c0528 /ares/ares__close_sockets.c | |
parent | 6494889e3ba6b1432258f0a8ed402723607cff21 (diff) |
ares 1.1.1 with collected applied patches
Diffstat (limited to 'ares/ares__close_sockets.c')
-rw-r--r-- | ares/ares__close_sockets.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/ares/ares__close_sockets.c b/ares/ares__close_sockets.c new file mode 100644 index 000000000..2b8be1020 --- /dev/null +++ b/ares/ares__close_sockets.c @@ -0,0 +1,57 @@ +/* Copyright 1998 by the Massachusetts Institute of Technology. + * + * Permission to use, copy, modify, and distribute this + * software and its documentation for any purpose and without + * fee is hereby granted, provided that the above copyright + * notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting + * documentation, and that the name of M.I.T. not be used in + * advertising or publicity pertaining to distribution of the + * software without specific, written prior permission. + * M.I.T. makes no representations about the suitability of + * this software for any purpose. It is provided "as is" + * without express or implied warranty. + */ + +static const char rcsid[] = "$Id$"; + +#include <stdlib.h> +#ifdef WIN32 +#else +#include <unistd.h> +#endif +#include "ares.h" +#include "ares_private.h" + +void ares__close_sockets(struct server_state *server) +{ + struct send_request *sendreq; + + /* Free all pending output buffers. */ + while (server->qhead) + { + /* Advance server->qhead; pull out query as we go. */ + sendreq = server->qhead; + server->qhead = sendreq->next; + free(sendreq); + } + server->qtail = NULL; + + /* Reset any existing input buffer. */ + if (server->tcp_buffer) + free(server->tcp_buffer); + server->tcp_buffer = NULL; + server->tcp_lenbuf_pos = 0; + + /* Close the TCP and UDP sockets. */ + if (server->tcp_socket != -1) + { + closesocket(server->tcp_socket); + server->tcp_socket = -1; + } + if (server->udp_socket != -1) + { + closesocket(server->udp_socket); + server->udp_socket = -1; + } +} |