dgaudet     98/07/01 11:18:27

  Modified:    src      CHANGES
               src/main buff.c
  Log:
  It's definately wrong to start ap_bprintf() on a connection that's got an
  error, or one which is not buffered.
  
  It's wrong for ap_bflush() to return 0 when B_EOUT is set -- B_EOUT can
  be set by timeout(), and it seems pointless for code everywhere to have
  to test for B_EOUT when they can simply test for a ap_bflush() failure.
  
  Revision  Changes    Path
  1.943     +4 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.942
  retrieving revision 1.943
  diff -u -r1.942 -r1.943
  --- CHANGES   1998/07/01 01:37:27     1.942
  +++ CHANGES   1998/07/01 18:18:23     1.943
  @@ -1,5 +1,9 @@
   Changes with Apache 1.3.1
   
  +  *) The ap_bprintf() code neglected to test if there was an error on
  +     the connection.  ap_bflush() misdiagnosed a failure as a success.
  +     [Dean Gaudet]
  +
     *) add support for #perl arg interpolation in mod_include
        [Doug MacEachern]
   
  
  
  
  1.78      +8 -1      apache-1.3/src/main/buff.c
  
  Index: buff.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/main/buff.c,v
  retrieving revision 1.77
  retrieving revision 1.78
  diff -u -r1.77 -r1.78
  --- buff.c    1998/06/04 19:58:57     1.77
  +++ buff.c    1998/07/01 18:18:25     1.78
  @@ -1193,6 +1193,7 @@
       static char *cbuf = NULL;
       static int csize = 0;
   
  +    /* XXX: martin don't you want to do this after the error tests below? */
       if (bgetflag(fb, B_EBCDIC2ASCII)) {
           if (nbyte > csize) {
               if (cbuf != NULL)
  @@ -1362,7 +1363,7 @@
       int ret;
   
       if (!(fb->flags & B_WR) || (fb->flags & B_EOUT))
  -     return 0;
  +     return -1;
   
       if (fb->flags & B_WRERR)
        return -1;
  @@ -1523,6 +1524,9 @@
       int res;
       struct bprintf_data b;
   
  +    /* XXX: only works with buffered writes */
  +    if ((fb->flags & (B_WRERR | B_EOUT | B_WR)) != B_WR)
  +     return -1;
       b.vbuff.curpos = (char *)&fb->outbase[fb->outcnt];
       b.vbuff.endpos = (char *)&fb->outbase[fb->bufsiz];
       b.fb = fb;
  @@ -1547,6 +1551,9 @@
       struct bprintf_data b;
       int res;
   
  +    /* XXX: only works with buffered writes */
  +    if ((fb->flags & (B_WRERR | B_EOUT | B_WR)) != B_WR)
  +     return -1;
       b.vbuff.curpos = (char *)&fb->outbase[fb->outcnt];
       b.vbuff.endpos = (char *)&fb->outbase[fb->bufsiz];
       b.fb = fb;
  
  
  

Reply via email to