You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by wr...@apache.org on 2001/03/31 09:57:00 UTC

cvs commit: apr/network_io/win32 sendrecv.c

wrowe       01/03/30 23:57:00

  Modified:    network_io/win32 sendrecv.c
  Log:
    Hmmm... can't stand unimplemented features - needs review by the
    FirstBill though!
  
  Revision  Changes    Path
  1.34      +61 -0     apr/network_io/win32/sendrecv.c
  
  Index: sendrecv.c
  ===================================================================
  RCS file: /home/cvs/apr/network_io/win32/sendrecv.c,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- sendrecv.c	2001/02/16 04:16:04	1.33
  +++ sendrecv.c	2001/03/31 07:57:00	1.34
  @@ -69,6 +69,8 @@
    * bytes.
    */
   #define MAX_SEGMENT_SIZE 65536
  +
  +
   APR_DECLARE(apr_status_t) apr_send(apr_socket_t *sock, const char *buf,
                                      apr_size_t *len)
   {
  @@ -91,6 +93,7 @@
       return APR_SUCCESS;
   }
   
  +
   APR_DECLARE(apr_status_t) apr_recv(apr_socket_t *sock, char *buf,
                                      apr_size_t *len) 
   {
  @@ -115,6 +118,7 @@
   
   }
   
  +
   APR_DECLARE(apr_status_t) apr_sendv(apr_socket_t *sock,
                                       const struct iovec *vec,
                                       apr_int32_t nvec, apr_int32_t *nbytes)
  @@ -147,6 +151,61 @@
       *nbytes = dwBytes;
       return APR_SUCCESS;
   }
  +
  +
  +APR_DECLARE(apr_status_t) apr_sendto(apr_socket_t *sock, apr_sockaddr_t *where,
  +                                     apr_int32_t flags, const char *buf, 
  +                                     apr_size_t *len)
  +{
  +    apr_ssize_t rv;
  +
  +    rv = sendto(sock->sock, buf, (*len), flags, 
  +                (const struct sockaddr*)&where->sa, 
  +                where->salen);
  +    if (rv == SOCKET_ERROR) {
  +        *len = 0;
  +        return apr_get_netos_error();
  +    }
  +
  +    *len = rv;
  +    return APR_SUCCESS;
  +}
  +
  +
  +APR_DECLARE(apr_status_t) apr_recvfrom(apr_sockaddr_t *from, 
  +                                       apr_socket_t *sock,
  +                                       apr_int32_t flags, 
  +                                       char *buf, apr_size_t *len)
  +{
  +    apr_ssize_t rv;
  +    apr_status_t err;
  +
  +    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();
  +    }
  +
  +    if (err) {
  +        return errno;
  +    }
  +
  +    (*len) = rv;
  +    if (rv == 0)
  +        return APR_EOF;
  +
  +    return APR_SUCCESS;
  +}
  +
  +
   static void collapse_iovec(char **buf, int *len, struct iovec *iovec, int numvec, apr_pool_t *p)
   {
       int ptr = 0;
  @@ -169,6 +228,8 @@
           }
       }
   }
  +
  +
   #if APR_HAS_SENDFILE
   /*
    *#define WAIT_FOR_EVENT