httpd-docs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From r..@locus.apache.org
Subject cvs commit: apache-2.0/src/lib/apr/include apr_file_io.h
Date Sat, 04 Nov 2000 16:34:52 GMT
rbb         00/11/04 08:34:51

  Modified:    src      CHANGES
               src/ap   ap_buckets_pipe.c
               src/lib/apr/file_io/unix pipe.c
               src/lib/apr/include apr_file_io.h
  Log:
  Make non-blocking reads from pipes work through the bucket interface.
  
  Revision  Changes    Path
  1.307     +5 -0      apache-2.0/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/CHANGES,v
  retrieving revision 1.306
  retrieving revision 1.307
  diff -u -r1.306 -r1.307
  --- CHANGES	2000/11/03 04:34:41	1.306
  +++ CHANGES	2000/11/04 16:34:45	1.307
  @@ -1,4 +1,9 @@
   Changes with Apache 2.0a8
  +  *) Make blocking and non-blocking bucket reads work correctly for
  +     sockets and pipes.  These are the only bucket types that should
  +     have non-blocking reads, because the other bucket types should
  +     ALWAYS be able to return something immediately.
  +     [Ryan Bloom]
   
     *) In the Apache/Win32 console window, accept Ctrl+C to stop the 
        server, but use Ctrl+Break to initiate a graceful restart 
  
  
  
  1.18      +10 -0     apache-2.0/src/ap/ap_buckets_pipe.c
  
  Index: ap_buckets_pipe.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/ap/ap_buckets_pipe.c,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- ap_buckets_pipe.c	2000/11/04 01:30:28	1.17
  +++ ap_buckets_pipe.c	2000/11/04 16:34:47	1.18
  @@ -65,11 +65,21 @@
       ap_bucket *b;
       char *buf;
       apr_status_t rv;
  +    apr_interval_time_t timeout;
   
  +    if (block == AP_NONBLOCK_READ) {
  +        apr_get_pipe_timeout(p, &timeout);
  +        apr_set_pipe_timeout(p, 0);
  +    }
  +
       buf = malloc(IOBUFSIZE); /* XXX: check for failure? */
       *str = buf;
       *len = IOBUFSIZE;
       rv = apr_read(p, buf, len);
  +
  +    if (block == AP_NONBLOCK_READ) {
  +        apr_set_pipe_timeout(p, timeout);
  +    }
   
       if (rv != APR_SUCCESS && rv != APR_EOF) {
           *str = NULL;
  
  
  
  1.41      +7 -0      apache-2.0/src/lib/apr/file_io/unix/pipe.c
  
  Index: pipe.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/file_io/unix/pipe.c,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- pipe.c	2000/10/25 15:02:41	1.40
  +++ pipe.c	2000/11/04 16:34:49	1.41
  @@ -145,6 +145,13 @@
       return APR_EINVAL;
   }
   
  +apr_status_t apr_get_pipe_timeout(apr_file_t *thepipe, apr_interval_time_t *timeout)
  +{
  +    if (thepipe->pipe == 1) {
  +        *timeout = thepipe->timeout;
  +    }
  +}
  +
   apr_status_t apr_create_pipe(apr_file_t **in, apr_file_t **out, apr_pool_t *cont)
   {
       int filedes[2];
  
  
  
  1.69      +8 -0      apache-2.0/src/lib/apr/include/apr_file_io.h
  
  Index: apr_file_io.h
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/include/apr_file_io.h,v
  retrieving revision 1.68
  retrieving revision 1.69
  diff -u -r1.68 -r1.69
  --- apr_file_io.h	2000/10/23 17:21:13	1.68
  +++ apr_file_io.h	2000/11/04 16:34:50	1.69
  @@ -595,6 +595,14 @@
                                   apr_pool_t *cont);
   
   /**
  + * Get the timeout value for a pipe or manipulate the blocking state.
  + * @param thepipe The pipe we are getting a timeout for.
  + * @param timeoutThe timeout value in microseconds.  Values < 0 mean wait 
  + *        forever, 0 means do not wait at all.
  + */
  +apr_status_t apr_get_pipe_timeout(apr_file_t *thepipe, apr_interval_time_t *timeout);
  +
  +/**
    * Set the timeout value for a pipe or manipulate the blocking state.
    * @param thepipe The pipe we are setting a timeout on.
    * @param timeoutThe timeout value in microseconds.  Values < 0 mean wait 
  
  
  

Mime
View raw message