dgaudet     98/01/26 22:25:05

  Modified:    src      Tag: APACHE_1_2_X buff.c
  Log:
  This is the proper fix for chunked encoding and bputc()... the last one
  misses cases where bputc() is mixed with other bwrite() calls.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.26.2.3  +12 -9     apache/src/buff.c
  
  Index: buff.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/buff.c,v
  retrieving revision 1.26.2.2
  retrieving revision 1.26.2.3
  diff -u -r1.26.2.2 -r1.26.2.3
  --- buff.c    1998/01/14 00:02:56     1.26.2.2
  +++ buff.c    1998/01/27 06:25:02     1.26.2.3
  @@ -187,7 +187,13 @@
   }
   
   /*
  - * start chunked encoding
  + * Start chunked encoding.
  + *
  + * Note that in order for bputc() to be an efficient macro we have to
  + * guarantee that start_chunk() has always been called on the buffer before 
we
  + * leave any routine in this file.  Said another way, if a routine here uses
  + * end_chunk() and writes something on the wire, then it has to call
  + * start_chunk() or set an error condition before returning.
    */
   static void
   start_chunk( BUFF *fb )
  @@ -584,16 +590,9 @@
   bflsbuf(int c, BUFF *fb)
   {
       char ss[1];
  -    int rc;
   
       ss[0] = c;
  -    rc = bwrite(fb, ss, 1);
  -    /* We do start_chunk() here so that the bputc macro can be smaller
  -     * and faster
  -     */
  -    if (rc == 1 && (fb->flags & B_CHUNK))
  -     start_chunk(fb);
  -    return rc;
  +    return bwrite(fb, ss, 1);
   }
   
   /*
  @@ -913,6 +912,10 @@
        if (fb->flags & B_EOUT)
            return -1;
       }
  +
  +    if (fb->flags & B_CHUNK)
  +     start_chunk(fb);
  +
       return 0;
   }
   
  
  
  

Reply via email to