cvs commit: apache-apr/apr/network_io/unix sendrecv.c

1999-04-19 Thread fielding
fielding99/04/18 19:57:49

  Modified:apr/network_io/unix sendrecv.c
  Log:
  Fix the algorithm for apr_send.  The same needs to be done for apr_read.
  Why are these functions called send and recv when they have no relation
  to the UNIX system functions send and recv?  write_with_nonblocking_timeout
  is what it does.
  
  Revision  ChangesPath
  1.3   +27 -26apache-apr/apr/network_io/unix/sendrecv.c
  
  Index: sendrecv.c
  ===
  RCS file: /home/cvs/apache-apr/apr/network_io/unix/sendrecv.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- sendrecv.c1999/04/14 15:14:03 1.2
  +++ sendrecv.c1999/04/19 02:57:48 1.3
  @@ -60,37 +60,38 @@
   #include apr_network_io.h
   #include sys/time.h
   
  -apr_ssize_t  apr_send(apr_socket_t *sock, const char *buf, int len, time_t 
sec)
  +apr_ssize_t apr_send(apr_socket_t *sock, const char *buf, int len, time_t 
sec)
   {
  -fd_set fdset;
  -struct timeval tv;
  -int err = EAGAIN;
  -apr_int32_t rv;
  +ssize_t rv;
   
  -tv.tv_sec = sec;
  -if (tv.tv_sec == 0) {
  -return (write(sock-socketdes, buf, len));
  -}
  -rv = write(sock-socketdes, buf, len);
  +do {
  +rv = write(sock-socketdes, buf, len);
  +} while (rv == -1  errno == EINTR);
  +
  +if (rv == -1  errno == EAGAIN  sec  0) {
  +struct timeval tv;
  +fd_set fdset;
  +int srv;
  +
  +do {
  +FD_ZERO(fdset);
  +FD_SET(sock-socketdes, fdset);
  +tv.tv_sec  = sec;
  +tv.tv_usec = 0;
  +
  +srv = select(FD_SETSIZE, NULL, fdset, NULL, tv);
  +} while (srv == -1  errno == EINTR);
   
  -if (rv == -1) {
  -err = errno;
  - if (err == EAGAIN || errno == EINTR) {
  - FD_ZERO(fdset);
  - FD_SET(sock-socketdes, fdset);
  - tv.tv_usec = 0;
  +if (srv  1) {
  +return (apr_ssize_t) -1;
  +}
  +else {
   do {
  - rv = select(FD_SETSIZE, NULL, fdset, NULL, tv);
  - } while (rv == -1  errno == EINTR);
  -if (rv == -1 || rv == 0) {
  - err = errno;
  -return APR_FAILURE;
  - }
  - else {
  - return write(sock-socketdes, buf, len);
  - }
  - }
  +rv = write(sock-socketdes, buf, len);
  +} while (rv == -1  errno == EINTR);
  +}
   }
  +return (apr_ssize_t) rv;
   }
   
   apr_ssize_t apr_recv(apr_socket_t *sock, char *buf, int len, time_t sec)
  
  
  


Re: cvs commit: apache-apr/apr/network_io/unix sendrecv.c

1999-04-19 Thread Ryan Bloom
   Modified:apr/network_io/unix sendrecv.c
   Log:
   Fix the algorithm for apr_send.  The same needs to be done for apr_read.
   Why are these functions called send and recv when they have no relation
   to the UNIX system functions send and recv?  write_with_nonblocking_timeout
   is what it does.

They are called apr_send and apr_recv because they implement the apr send
and recv functions.  On Windows, they will use send and recv.  I wasn't
following any real naming guidelines, except for what makes sense when
writing the code.  the name apr_write_with_nonblocking_timeout seemed long
and unnecessary to me.  This is the apr primitive to send data over a
network.  To me, that is sending.

The original design document said we were going to use POSIX type calls,
but that was decided against, so I left most of the names the same because
they made sense, and changed arguments were appropriate.

Ryan

___
Ryan Bloom  [EMAIL PROTECTED]
4205 S Miami Blvd   
RTP, NC 27709   It's a beautiful sight to see good dancers 
doing simple steps.  It's a painful sight to
see beginners doing complicated patterns.   



cvs commit: apache-apr/apr/network_io/unix sendrecv.c

1999-04-19 Thread rbb
rbb 99/04/19 06:31:39

  Modified:apr/network_io/unix sendrecv.c
  Log:
  Updated receive to use the same algorithm as send.
  
  Revision  ChangesPath
  1.4   +27 -25apache-apr/apr/network_io/unix/sendrecv.c
  
  Index: sendrecv.c
  ===
  RCS file: /home/cvs/apache-apr/apr/network_io/unix/sendrecv.c,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- sendrecv.c1999/04/19 02:57:48 1.3
  +++ sendrecv.c1999/04/19 13:31:39 1.4
  @@ -96,33 +96,35 @@
   
   apr_ssize_t apr_recv(apr_socket_t *sock, char *buf, int len, time_t sec)
   {
  -fd_set fdset;
  -struct timeval tv;
  -int err = EAGAIN;
  -int rv;
  +ssize_t rv;
  +
  +do {
  +rv = read(sock-socketdes, buf, len);
  +} while (rv == -1  errno == EINTR);
   
  -tv.tv_sec = sec;
  -if (tv.tv_sec == 0) {
  - return (read(sock-socketdes, buf, len));
  -}
  -rv = read(sock-socketdes, buf, len);
  -if (rv == -1) {
  - err = errno;
  - if (err == EAGAIN || errno == EINTR) {
  - FD_ZERO(fdset);
  - FD_SET(sock-socketdes, fdset);
  - tv.tv_usec = 0;
  - do {
  -rv = select(FD_SETSIZE, fdset, NULL, NULL, tv);
  - } while (rv == -1  errno == EINTR);
  -if (rv == -1 || rv == 0) {
  - err = errno;
  -return APR_FAILURE;
  - }
  - else {
  - return read(sock-socketdes, buf, len);
  - }
  +if (rv == -1  errno == EAGAIN  sec  0) {
  +struct timeval tv;
  +fd_set fdset;
  +int srv;
  +
  +do {
  +FD_ZERO(fdset);
  +FD_SET(sock-socketdes, fdset);
  +tv.tv_sec  = sec;
  +tv.tv_usec = 0;
  +
  +srv = select(FD_SETSIZE, fdset, NULL, NULL, tv);
  +} while (srv == -1  errno == EINTR);
  +
  +if (srv  1) {
  +return (apr_ssize_t) -1;
  +}
  +else {
  +do {
  +rv = read(sock-socketdes, buf, len);
  +} while (rv == -1  errno == EINTR);
   }
   }
  +return (apr_ssize_t) rv;
   }
   
  
  
  


cvs commit: apache-apr/apr/network_io/unix sendrecv.c Makefile

1999-04-14 Thread rbb
rbb 99/04/14 07:03:58

  Modified:apr/network_io/unix Makefile
  Added:   apr/network_io/unix sendrecv.c
  Log:
  Add the apr_send and apr_recv functions, and the changes to the Makefile.
  
  Revision  ChangesPath
  1.2   +2 -1  apache-apr/apr/network_io/unix/Makefile
  
  Index: Makefile
  ===
  RCS file: /home/cvs/apache-apr/apr/network_io/unix/Makefile,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Makefile  1999/04/13 11:49:53 1.1
  +++ Makefile  1999/04/14 14:03:58 1.2
  @@ -47,7 +47,7 @@
   
   LIB=  libnetwork.a
   
  -OBJS= sockets.o
  +OBJS= sockets.o sendrecv.o
   
   .c.o:
$(CC) -c $(INCLUDES) $(CFLAGS) $
  @@ -83,3 +83,4 @@
   
   # DO NOT REMOVE
   sockets.o: sockets.c
  +sendrecv.o: sendrecv.c
  
  
  
  1.1  apache-apr/apr/network_io/unix/sendrecv.c
  
  Index: sendrecv.c
  ===
  /* 
   * Copyright (c) 1996-1999 The Apache Group.  All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *notice, this list of conditions and the following disclaimer. 
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *notice, this list of conditions and the following disclaimer in
   *the documentation and/or other materials provided with the
   *distribution.
   *
   * 3. All advertising materials mentioning features or use of this
   *software must display the following acknowledgment:
   *This product includes software developed by the Apache Group
   *for use in the Apache HTTP server project (http://www.apache.org/).
   *
   * 4. The names Apache Server and Apache Group must not be used to
   *endorse or promote products derived from this software without
   *prior written permission. For written permission, please contact
   *[EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called Apache
   *nor may Apache appear in their names without prior written
   *permission of the Apache Group.
   *
   * 6. Redistributions of any form whatsoever must retain the following
   *acknowledgment:
   *This product includes software developed by the Apache Group
   *for use in the Apache HTTP server project (http://www.apache.org/).
   *
   * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
   * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE APACHE GROUP OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
   * OF THE POSSIBILITY OF SUCH DAMAGE.
   * 
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Group and was originally based
   * on public domain software written at the National Center for
   * Supercomputing Applications, University of Illinois, Urbana-Champaign.
   * For more information on the Apache Group and the Apache HTTP server
   * project, please see http://www.apache.org/.
   *
   */
  
  #include apr_errno.h
  #include apr_general.h
  #include apr_network_io.h
  #include sys/time.h
  
  apr_int32_t  apr_send(apr_socket_t *sock, const char *buf, int len, time_t 
sec)
  {
  fd_set fdset;
  struct timeval tv;
  int err = EAGAIN;
  apr_int32_t rv;
  
  tv.tv_sec = sec;
  if (tv.tv_sec == 0) {
  return (write(sock-socketdes, buf, len));
  }
  rv = write(sock-socketdes, buf, len);
  
  if (rv == -1) {
  err = errno;
if (err == EAGAIN || errno == EINTR) {
FD_ZERO(fdset);
FD_SET(sock-socketdes, fdset);
tv.tv_usec = 0;
  do {
rv = select(FD_SETSIZE, NULL, fdset, NULL, tv);
} while (rv == -1  errno == EINTR);
  if (rv == -1 || rv == 0) {
err = errno;
  return APR_FAILURE;
}
else {
return write(sock-socketdes, buf, len);
}
}
  }
  }
  
  static int 

cvs commit: apache-apr/apr/network_io/unix sendrecv.c

1999-04-14 Thread rbb
rbb 99/04/14 08:14:03

  Modified:apr/network_io/unix sendrecv.c
  Log:
  Small update to apr_send and apr_recv.
  
  Revision  ChangesPath
  1.2   +2 -2  apache-apr/apr/network_io/unix/sendrecv.c
  
  Index: sendrecv.c
  ===
  RCS file: /home/cvs/apache-apr/apr/network_io/unix/sendrecv.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- sendrecv.c1999/04/14 14:03:58 1.1
  +++ sendrecv.c1999/04/14 15:14:03 1.2
  @@ -60,7 +60,7 @@
   #include apr_network_io.h
   #include sys/time.h
   
  -apr_int32_t  apr_send(apr_socket_t *sock, const char *buf, int len, time_t 
sec)
  +apr_ssize_t  apr_send(apr_socket_t *sock, const char *buf, int len, time_t 
sec)
   {
   fd_set fdset;
   struct timeval tv;
  @@ -93,7 +93,7 @@
   }
   }
   
  -static int recvwithtimeout(apr_socket_t *sock, char *buf, int len, time_t 
sec)
  +apr_ssize_t apr_recv(apr_socket_t *sock, char *buf, int len, time_t sec)
   {
   fd_set fdset;
   struct timeval tv;