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
-~----------~----~----~----~------~----~------~--~---