mturk       2004/08/02 09:47:44

  Modified:    ajp/proxy proxy_ajp.c
  Log:
  Something weired happened with my CVS, repatching...
  
  Revision  Changes    Path
  1.8       +25 -21    jakarta-tomcat-connectors/ajp/proxy/proxy_ajp.c
  
  Index: proxy_ajp.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/ajp/proxy/proxy_ajp.c,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- proxy_ajp.c       2 Aug 2004 16:38:11 -0000       1.7
  +++ proxy_ajp.c       2 Aug 2004 16:47:44 -0000       1.8
  @@ -13,9 +13,10 @@
    * limitations under the License.
    */
   
  -/* HTTP routines for Apache proxy */
  +/* AJP routines for Apache proxy */
   
   #include "mod_proxy.h"
  +#include "ajp.h"
   
   module AP_MODULE_DECLARE_DATA proxy_ajp_module;
   
  @@ -33,7 +34,7 @@
       void           *data;  /* To store ajp data */
   } proxy_ajp_conn_t;
   
  -static apr_status_t ap_proxy_http_cleanup(request_rec *r,
  +static apr_status_t ap_proxy_ajp_cleanup(request_rec *r,
                                             proxy_ajp_conn_t *p_conn,
                                             proxy_conn_rec *backend);
   
  @@ -277,7 +278,7 @@
            * For now we do nothing, ie we get DNS round robin.
            * XXX FIXME
            */
  -        failed = ap_proxy_connect_to_backend(&p_conn->sock, "HTTP",
  +        failed = ap_proxy_connect_to_backend(&p_conn->sock, "AJP",
                                                p_conn->addr, p_conn->name,
                                                conf, r->server, c->pool);
   
  @@ -379,10 +380,9 @@
       }
   
       if (1) { /* XXXX only when something to send ? */
  -        void *msg;
  +        ajp_msg_t *msg;
           apr_size_t bufsiz;
           char *buff;
  -        long len;
           status = ajp_alloc_data_msg(r, &buff, &bufsiz, &msg);
           if (status != APR_SUCCESS) {
               return status;
  @@ -412,7 +412,8 @@
       }
   
       /* read the response */
  -    status = ajp_read_header(p_conn->sock, r, &(p_conn->data));
  +    status = ajp_read_header(p_conn->sock, r,
  +                             (ajp_msg_t **)&(p_conn->data));
       if (status != APR_SUCCESS) {
           ap_log_error(APLOG_MARK, APLOG_ERR, status, r->server,
                        "proxy: request failed to %pI (%s)",
  @@ -421,8 +422,8 @@
       }
   
       /* parse the reponse */
  -    result = ajp_parse_type(r,p_conn->data);
  -    if (result == 4) {
  +    result = ajp_parse_type(r, p_conn->data);
  +    if (result == CMD_AJP13_SEND_HEADERS) {
           ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
                        "proxy: got response from %pI (%s)",
                        p_conn->addr, p_conn->name);
  @@ -463,16 +464,16 @@
       
       type = ajp_parse_type(r, p_conn->data);
       status = APR_SUCCESS;
  -    while (type != 5) {
  -        if (type == 4) {
  +    while (type != CMD_AJP13_END_RESPONSE) {
  +        if (type == CMD_AJP13_SEND_HEADERS) {
               /* AJP13_SEND_HEADERS: process them */
               status = ajp_parse_header(r, p_conn->data); 
               if (status != APR_SUCCESS) {
                   break;
               }
  -        } else if  (type == 3) {
  +        } else if  (type == CMD_AJP13_SEND_BODY_CHUNK) {
               /* AJP13_SEND_BODY_CHUNK: piece of data */
  -            apr_size_t size;
  +            apr_uint16_t size;
               char *buff;
   
               status = ajp_parse_data(r, p_conn->data, &size, &buff);
  @@ -483,7 +484,8 @@
               break;
           }
           /* Read the next message */
  -        status = ajp_read_header(p_conn->sock, r, &(p_conn->data));
  +        status = ajp_read_header(p_conn->sock, r,
  +                                 (ajp_msg_t **)&(p_conn->data));
           if (status != APR_SUCCESS) {
               break;
           }
  @@ -511,19 +513,18 @@
   }
   
   static
  -apr_status_t ap_proxy_http_cleanup(request_rec *r, proxy_ajp_conn_t *p_conn,
  +apr_status_t ap_proxy_ajp_cleanup(request_rec *r, proxy_ajp_conn_t *p_conn,
                                      proxy_conn_rec *backend) {
  -    /* If there are no KeepAlives, or if the connection has been signalled
  +    /* If the connection has been signalled
        * to close, close the socket and clean up
        */
   
       /* if the connection is < HTTP/1.1, or Connection: close,
        * we close the socket, otherwise we leave it open for KeepAlive support
        */
  -    if (p_conn->close || (r->proto_num < HTTP_VERSION(1,1))) {
  -        ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
  -                      "ap_proxy_http_cleanup closing %d %d %d %s",
  -                       p_conn->sock, p_conn->close, r->proto_num, 
apr_table_get(r->headers_out, "Connection"));
  +    if (p_conn->close) {
  +        ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
  +                      "ap_proxy_ajp_cleanup closing");
           if (p_conn->sock) {
               apr_socket_close(p_conn->sock);
               p_conn->sock = NULL;
  @@ -639,6 +640,8 @@
       status = ap_proxy_ajp_request(p, r, p_conn, origin, conf, uri, url,
                                      server_portstr);
       if ( status != OK ) {
  +        p_conn->close++;
  +        ap_proxy_ajp_cleanup(r, p_conn, backend);
           return status;
       }
   
  @@ -647,12 +650,13 @@
                                               server_portstr);
       if ( status != OK ) {
           /* clean up even if there is an error */
  -        ap_proxy_http_cleanup(r, p_conn, backend);
  +        p_conn->close++;
  +        ap_proxy_ajp_cleanup(r, p_conn, backend);
           return status;
       }
   
       /* Step Five: Clean Up */
  -    status = ap_proxy_http_cleanup(r, p_conn, backend);
  +    status = ap_proxy_ajp_cleanup(r, p_conn, backend);
       if ( status != OK ) {
           return status;
       }
  
  
  

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

Reply via email to