danmil      01/01/10 18:36:14

  Modified:    src/native/mod_jk/common jk_ajp13_worker.c
  Log:
  - Clarified Ajp13 protocol: if the container tries to read
    past the end of the input stream, the server sends an empty packet back.
  
  Revision  Changes    Path
  1.3       +14 -12    jakarta-tomcat/src/native/mod_jk/common/jk_ajp13_worker.c
  
  Index: jk_ajp13_worker.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/native/mod_jk/common/jk_ajp13_worker.c,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- jk_ajp13_worker.c 2000/11/10 18:48:50     1.2
  +++ jk_ajp13_worker.c 2001/01/11 02:36:14     1.3
  @@ -57,7 +57,7 @@
    * Description: Experimental bi-directionl protocol.                       *
    * Author:      Costin <[EMAIL PROTECTED]>                              *
    * Author:      Gal Shachor <[EMAIL PROTECTED]>                           *
  - * Version:     $Revision: 1.2 $                                           *
  + * Version:     $Revision: 1.3 $                                           *
    ***************************************************************************/
   
   #include "jk_pool.h"
  @@ -267,7 +267,7 @@
       read_buf += 4; /* leave some space for the buffer headers */
       read_buf += 2; /* leave some space for the read length */
   
  -    if(read_fully_from_server(r, read_buf, len) <= 0) {
  +    if(read_fully_from_server(r, read_buf, len) < 0) {
           jk_log(l, JK_LOG_ERROR, 
                  "read_into_msg_buff: Error - read_fully_from_server failed\n");
           return JK_FALSE;                        
  @@ -331,23 +331,25 @@
   
           case JK_AJP13_GET_BODY_CHUNK:
               {
  -                 unsigned len = (unsigned)jk_b_get_int(msg);
  +             unsigned len = (unsigned)jk_b_get_int(msg);
   
                   if(len > MAX_SEND_BODY_SZ) {
                       len = MAX_SEND_BODY_SZ;
                   }
                   if(len > ep->left_bytes_to_send) {
                       len = ep->left_bytes_to_send;
  -                }
  -                if(len > 0) {
  -                    if(read_into_msg_buff(ep, r, msg, l, len)) {
  -                        return JK_AJP13_HAS_RESPONSE;
  -                    }                  
  -
  -                    jk_log(l, JK_LOG_ERROR, 
  -                           "Error ajp13_process_callback - read_into_msg_buff 
failed\n");
  -                    return JK_INTERNAL_ERROR;
                   }
  +             if(len < 0) {
  +                 len = 0;
  +             }
  +
  +             if(read_into_msg_buff(ep, r, msg, l, len)) {
  +                 return JK_AJP13_HAS_RESPONSE;
  +             }                  
  +
  +             jk_log(l, JK_LOG_ERROR, 
  +                    "Error ajp13_process_callback - read_into_msg_buff failed\n");
  +             return JK_INTERNAL_ERROR;           
               }
            break;
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to