jfclere     2004/08/01 10:56:32

  Modified:    ajp/proxy proxy_ajp.c
  Log:
  Close only when needed.
  
  Revision  Changes    Path
  1.6       +13 -11    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.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- proxy_ajp.c       1 Aug 2004 15:05:01 -0000       1.5
  +++ proxy_ajp.c       1 Aug 2004 17:56:32 -0000       1.6
  @@ -13,7 +13,7 @@
    * limitations under the License.
    */
   
  -/* HTTP routines for Apache proxy */
  +/* AJP routines for Apache proxy */
   
   #include "mod_proxy.h"
   #include "ajp.h"
  @@ -34,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);
   
  @@ -278,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);
   
  @@ -513,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;
  @@ -641,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;
       }
   
  @@ -649,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