Author: adrian.chadd
Date: Tue Jun 16 03:26:35 2009
New Revision: 14095

Modified:
    branches/LUSCA_HEAD/src/client_side.c

Log:
Commit a modified r12427 from squid-2-HEAD - Fixup various error corner  
cases in the method_t change.

From: Mark Nottingham <[email protected]>



Modified: branches/LUSCA_HEAD/src/client_side.c
==============================================================================
--- branches/LUSCA_HEAD/src/client_side.c       (original)
+++ branches/LUSCA_HEAD/src/client_side.c       Tue Jun 16 03:26:35 2009
@@ -119,7 +119,7 @@
  static void clientProcessMiss(clientHttpRequest *);
  static void clientProcessHit(clientHttpRequest * http);
  static void clientBuildReplyHeader(clientHttpRequest * http, HttpReply *  
rep);
-static clientHttpRequest *parseHttpRequestAbort(ConnStateData * conn,  
const char *uri);
+static clientHttpRequest *parseHttpRequestAbort(ConnStateData * conn,  
method_t ** method_p, const char *uri);
  static clientHttpRequest *parseHttpRequest(ConnStateData *, HttpMsgBuf *,  
method_t **, int *);

  static void clientCheckNoCache(clientHttpRequest *);
@@ -3849,7 +3849,7 @@
  CBDATA_TYPE(clientHttpRequest);

  static clientHttpRequest *
-parseHttpRequestAbort(ConnStateData * conn, const char *uri)
+parseHttpRequestAbort(ConnStateData * conn, method_t ** method_p, const  
char *uri)
  {
      clientHttpRequest *http;
      CBDATA_INIT_TYPE(clientHttpRequest);
@@ -3862,6 +3862,8 @@
      http->range_iter.boundary = StringNull;
      httpBuildVersion(&http->http_ver, 1, 0);
      dlinkAdd(http, &http->active, &ClientActiveRequests);
+    if (method_p && !*method_p)
+        *method_p = urlMethodGetKnownByCode(METHOD_NONE);
      return http;
  }

@@ -3888,13 +3890,13 @@
      int ret;

      /* pre-set these values to make aborting simpler */
-    *method_p = NULL;
+    *method_p = urlMethodGetKnownByCode(METHOD_NONE);
      *status = -1;

      /* Parse the request line */
      ret = httpMsgParseRequestLine(hmsg);
      if (ret == -1)
-       return parseHttpRequestAbort(conn, "error:invalid-request");
+       return parseHttpRequestAbort(conn, &method_p, "error:invalid-request");
      if (ret == 0) {
        debug(33, 5) ("Incomplete request, waiting for end of request line\n");
        *status = 0;
@@ -3917,7 +3919,7 @@
      /* Enforce max_request_size */
      if (req_sz >= Config.maxRequestHeaderSize) {
        debug(33, 5) ("parseHttpRequest: Too large request\n");
-       return parseHttpRequestAbort(conn, "error:request-too-large");
+       return parseHttpRequestAbort(conn, &method_p, 
"error:request-too-large");
      }
      /* Wrap the request method */
      method = urlMethodGet(hmsg->buf + hmsg->m_start, hmsg->m_len);
@@ -3931,7 +3933,7 @@
      /* Make sure URL fits inside MAX_URL */
      if (hmsg->u_len >= MAX_URL) {
        debug(33, 1) ("parseHttpRequest: URL too big (%d) chars: %s\n",  
hmsg->u_len, hmsg->buf + hmsg->u_start);
-       return parseHttpRequestAbort(conn, "error:request-too-large");
+       return parseHttpRequestAbort(conn, &method_p, 
"error:request-too-large");
      }
      xmemcpy(urlbuf, hmsg->buf + hmsg->u_start, hmsg->u_len);
      /* XXX off-by-one termination error? */
@@ -4092,7 +4094,7 @@
      dlinkDelete(&http->active, &ClientActiveRequests);
      safe_free(http->uri);
      cbdataFree(http);
-    return parseHttpRequestAbort(conn, "error:invalid-request");
+    return parseHttpRequestAbort(conn, &method_p, "error:invalid-request");
  }

  static int
@@ -4314,11 +4316,11 @@
                (long int) Config.maxRequestHeaderSize);
            err = errorCon(ERR_TOO_BIG, HTTP_REQUEST_URI_TOO_LONG, NULL);
            err->src_addr = conn->peer.sin_addr;
-           http = parseHttpRequestAbort(conn, "error:request-too-large");
+           http = parseHttpRequestAbort(conn,  
&method, "error:request-too-large");
            /* add to the client request queue */
            dlinkAddTail(http, &http->node, &conn->reqs);
            http->log_type = LOG_TCP_DENIED;
-           http->entry = clientCreateStoreEntry(http, NULL, 
null_request_flags);
+           http->entry = clientCreateStoreEntry(http, method,  
null_request_flags);
            errorAppendEntry(http->entry, err);
            return -1;
        }

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"lusca-commit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/lusca-commit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to