httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From do...@apache.org
Subject cvs commit: httpd-2.0/modules/http http_protocol.c
Date Tue, 07 Aug 2001 19:54:06 GMT
dougm       01/08/07 12:54:06

  Modified:    modules/http http_protocol.c
  Log:
  this change breaks POST, backing out for the moment
  
  Revision  Changes    Path
  1.346     +31 -2     httpd-2.0/modules/http/http_protocol.c
  
  Index: http_protocol.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/http/http_protocol.c,v
  retrieving revision 1.345
  retrieving revision 1.346
  diff -u -r1.345 -r1.346
  --- http_protocol.c	2001/08/07 18:37:04	1.345
  +++ http_protocol.c	2001/08/07 19:54:06	1.346
  @@ -656,8 +656,37 @@
              ### we could probably just use brigade_partition() in here.
           */
   
  -        apr_brigade_partition(ctx->b, *readbytes, &e);
  -        b = apr_brigade_split(ctx->b, e);
  +        while (!APR_BRIGADE_EMPTY(ctx->b)) {
  +            const char *ignore;
  +
  +            e = APR_BRIGADE_FIRST(ctx->b);
  +            if ((rv = apr_bucket_read(e, &ignore, &len, mode)) != APR_SUCCESS)
{
  +                /* probably APR_IS_EAGAIN(rv); socket state isn't correct;
  +                 * remove log once we get this squared away */
  +                ap_log_error(APLOG_MARK, APLOG_ERR, rv, f->c->base_server, 
  +                             "apr_bucket_read");
  +                return rv;
  +            }
  +
  +            if (len) {
  +                /* note: this can sometimes insert empty buckets into the
  +                 * brigade, or the data might come in a few characters at
  +                 * a time - don't assume that one call to apr_bucket_read()
  +                 * will return the full string.
  +                 */
  +                if (*readbytes < len) {
  +                    apr_bucket_split(e, *readbytes);
  +                    *readbytes = 0;
  +                }
  +                else {
  +                    *readbytes -= len;
  +                }
  +                APR_BUCKET_REMOVE(e);
  +                APR_BRIGADE_INSERT_TAIL(b, e);
  +                break; /* once we've gotten some data, deliver it to caller */
  +            }
  +            apr_bucket_delete(e);
  +        }
   
           /* ### this is a hack. it is saying, "if we have read everything
              ### that was requested, then we are at the end of the request."
  
  
  

Mime
View raw message