Skip to content
Snippets Groups Projects
  • Daniel Stenberg's avatar
    c85bf83e
    - Fixed a few variable return types for some system calls. Made configure · c85bf83e
    Daniel Stenberg authored
      check for ssize_t to make it possible to use that when receiving the send()
      error code. This is necessary to prevent compiler warnings on some systems.
    
    - Made configure create config.h, and all source files now include setup.h that
      might include the proper config.h (or a handicrafted alternative).
    
    - Switched to 'ares_socket_t' type for sockets in ares, since Windows don't
      use 'int' for that.
    
    - automake-ified and libool-ified c-ares. Now it builds libcares as a shared
      lib on most platforms if wanted. (This bloated the size of the release
      archive with another 200K!)
    
    - Makefile.am now uses Makefile.inc for the c sources, h headers and man
      pages, to make it easier for other makefiles to use the exact same set of
      files.
    
    - Adjusted 'maketgz' to use the new automake magic when building distribution
      archives.
    c85bf83e
    History
    - Fixed a few variable return types for some system calls. Made configure
    Daniel Stenberg authored
      check for ssize_t to make it possible to use that when receiving the send()
      error code. This is necessary to prevent compiler warnings on some systems.
    
    - Made configure create config.h, and all source files now include setup.h that
      might include the proper config.h (or a handicrafted alternative).
    
    - Switched to 'ares_socket_t' type for sockets in ares, since Windows don't
      use 'int' for that.
    
    - automake-ified and libool-ified c-ares. Now it builds libcares as a shared
      lib on most platforms if wanted. (This bloated the size of the release
      archive with another 200K!)
    
    - Makefile.am now uses Makefile.inc for the c sources, h headers and man
      pages, to make it easier for other makefiles to use the exact same set of
      files.
    
    - Adjusted 'maketgz' to use the new automake magic when building distribution
      archives.
ares__close_sockets.c 1.62 KiB
/* 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.
 */

#include "setup.h"

#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 != ARES_SOCKET_BAD)
    {
      closesocket(server->tcp_socket);
      server->tcp_socket = ARES_SOCKET_BAD;
    }
  if (server->udp_socket != ARES_SOCKET_BAD)
    {
      closesocket(server->udp_socket);
      server->udp_socket = ARES_SOCKET_BAD;
    }
}