apr-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From traw...@apache.org
Subject cvs commit: apr/network_io/win32 sendrecv.c sockets.c
Date Mon, 02 Apr 2001 23:58:38 GMT
trawick     01/04/02 16:58:38

  Modified:    include/arch/win32 networkio.h
               network_io/win32 sendrecv.c sockets.c
  Log:
  fix apr_recvfrom() on Win32 so that it returns APR_EOF only for a
  stream socket
  
  Revision  Changes    Path
  1.18      +1 -0      apr/include/arch/win32/networkio.h
  
  Index: networkio.h
  ===================================================================
  RCS file: /home/cvs/apr/include/arch/win32/networkio.h,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- networkio.h	2001/02/16 04:15:52	1.17
  +++ networkio.h	2001/04/02 23:58:36	1.18
  @@ -61,6 +61,7 @@
   struct apr_socket_t {
       apr_pool_t *cntxt;
       SOCKET sock;
  +    int type; /* SOCK_STREAM, SOCK_DGRAM */
       apr_sockaddr_t *local_addr;
       apr_sockaddr_t *remote_addr;
       apr_interval_time_t timeout;
  
  
  
  1.37      +1 -9      apr/network_io/win32/sendrecv.c
  
  Index: sendrecv.c
  ===================================================================
  RCS file: /home/cvs/apr/network_io/win32/sendrecv.c,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- sendrecv.c	2001/04/02 17:54:01	1.36
  +++ sendrecv.c	2001/04/02 23:58:37	1.37
  @@ -179,22 +179,14 @@
   {
       apr_ssize_t rv;
   
  -    if (from == NULL){
  -        return APR_ENOMEM;
  -        /* Not sure if this is correct.  Maybe we should just allocate
  -           the memory??
  -         */
  -    }
  -
       rv = recvfrom(sock->sock, buf, (*len), flags, 
                     (struct sockaddr*)&from->sa, &from->salen);
       if (rv == SOCKET_ERROR) {
           (*len) = 0;
           return apr_get_netos_error();
       }
  -
       (*len) = rv;
  -    if (rv == 0)
  +    if (rv == 0 && sock->type == SOCK_STREAM)
           return APR_EOF;
   
       return APR_SUCCESS;
  
  
  
  1.53      +8 -5      apr/network_io/win32/sockets.c
  
  Index: sockets.c
  ===================================================================
  RCS file: /home/cvs/apr/network_io/win32/sockets.c,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- sockets.c	2001/03/31 18:58:16	1.52
  +++ sockets.c	2001/04/02 23:58:37	1.53
  @@ -72,8 +72,9 @@
       return APR_SUCCESS;
   }
   
  -static void set_socket_vars(apr_socket_t *sock, int family)
  +static void set_socket_vars(apr_socket_t *sock, int family, int type)
   {
  +    sock->type = type;
       sock->local_addr->sa.sin.sin_family = family;
       sock->remote_addr->sa.sin.sin_family = family;
   
  @@ -150,7 +151,7 @@
       if ((*new)->sock == INVALID_SOCKET) {
           return apr_get_netos_error();
       }
  -    set_socket_vars(*new, AF_INET);
  +    set_socket_vars(*new, AF_INET, type);
   
       (*new)->timeout = -1;
       (*new)->disconnected = 0;
  @@ -222,7 +223,7 @@
                                        apr_pool_t *connection_context)
   {
       alloc_socket(new, connection_context);
  -    set_socket_vars(*new, sock->local_addr->sa.sin.sin_family);
  +    set_socket_vars(*new, sock->local_addr->sa.sin.sin_family, SOCK_STREAM);
   
       (*new)->timeout = -1;   
       (*new)->disconnected = 0;
  @@ -326,7 +327,7 @@
                                              apr_pool_t *cont)
   {
       alloc_socket(apr_sock, cont);
  -    set_socket_vars(*apr_sock, os_sock_info->family);
  +    set_socket_vars(*apr_sock, os_sock_info->family, os_sock_info->type);
       (*apr_sock)->timeout = -1;
       (*apr_sock)->disconnected = 0;
       (*apr_sock)->sock = *os_sock_info->os_sock;
  @@ -358,7 +359,9 @@
   {
       if ((*sock) == NULL) {
           alloc_socket(sock, cont);
  -        set_socket_vars(*sock, AF_INET);
  +        /* XXX figure out the actual socket type here */
  +        /* *or* just decide that apr_os_sock_put() has to be told the family and type */
  +        set_socket_vars(*sock, AF_INET, SOCK_STREAM);
           (*sock)->timeout = -1;
           (*sock)->disconnected = 0;
       }
  
  
  

Mime
View raw message