You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by hg...@apache.org on 2004/02/06 09:37:46 UTC

cvs commit: jakarta-tomcat-connectors/jk/native/common jk_ajp_common.c

hgomez      2004/02/06 00:37:46

  Modified:    jk/native/common jk_ajp_common.c
  Log:
  More info to track the potential problem in POST recovery
  
  Revision  Changes    Path
  1.46      +16 -9     jakarta-tomcat-connectors/jk/native/common/jk_ajp_common.c
  
  Index: jk_ajp_common.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_ajp_common.c,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- jk_ajp_common.c	25 Jan 2004 23:51:41 -0000	1.45
  +++ jk_ajp_common.c	6 Feb 2004 08:37:46 -0000	1.46
  @@ -1007,6 +1007,7 @@
                               ajp_operation_t *op)
   {
   	int err = 0;
  +	int postlen;
   	
       /* Up to now, we can recover */
       op->recoverable = JK_TRUE;
  @@ -1074,18 +1075,23 @@
              ae->left_bytes_to_send, jk_b_get_len(op->reply) - AJP_HEADER_LEN);
   
       /*
  -     * POST recovery job is done here.
  -     * It's not very fine to have posted data in reply but that's the only easy
  -     * way to do that for now. Sharing the reply is really a bad solution but
  -     * it will works for POST DATA less than 8k.
  +     * POST recovery job is done here and will work when data to 
  +     * POST are less than 8k, since it's the maximum size of op-post buffer.
        * We send here the first part of data which was sent previously to the
        * remote Tomcat
        */
  -    if (jk_b_get_len(op->post) > AJP_HEADER_LEN) {
  +     
  +    /* Did we have something to resend (ie the op-post has been feeded previously */
  +    
  +    postlen = jk_b_get_len(op->post);    
  +    if (postlen > AJP_HEADER_LEN) {
           if(!ajp_connection_tcp_send_message(ae, op->post, l)) {
  -            jk_log(l, JK_LOG_ERROR, "Error resending request body\n");
  +            jk_log(l, JK_LOG_ERROR, "Error resending request body (%d)\n", postlen);
               return JK_FALSE;
           }
  +        else
  +        	jk_log(l, JK_LOG_DEBUG, "Resent the request body (%d)\n", postlen);
  +        	
       }
       else {
           /* We never sent any POST data and we check if we have to send at
  @@ -1096,7 +1102,7 @@
   	/* || s->is_chunked - this can't be done here. The original protocol
              sends the first chunk of post data ( based on Content-Length ),
              and that's what the java side expects.
  -	   Sending this data for chunked would break other ajp13 serers.
  +	   Sending this data for chunked would break other ajp13 servers.
   
   	   Note that chunking will continue to work - using the normal read.
   	*/
  @@ -1185,6 +1191,7 @@
                   jk_log(l, JK_LOG_INFO,
                          "ERROR reading POST data from client. "
                          "Connection aborted or network problems\n");
  +                       
                   return JK_CLIENT_ERROR;       
               }
           break;
  @@ -1439,7 +1446,7 @@
                  p->worker->name, errno);
   
       } else {
  -        jk_log(l, JK_LOG_ERROR, "In jk_endpoint_t::service, NULL parameters\n");
  +        jk_log(l, JK_LOG_ERROR, "ajp: end of service with error\n");
       }
   
       return JK_FALSE;
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org