Author: rjung
Date: Thu Aug 2 07:47:00 2007
New Revision: 562131
URL: http://svn.apache.org/viewvc?view=rev&rev=562131
Log:
Move fail on status a little down the protocol
stack, so that we haven't yet returned the headers.
Modified:
tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
URL:
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c?view=diff&rev=562131&r1=562130&r2=562131
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c Thu Aug 2
07:47:00 2007
@@ -1423,6 +1423,18 @@
return (JK_TRUE);
}
+
+static int is_http_status_fail(ajp_worker_t *w, int status)
+{
+ unsigned int i;
+ for (i = 0; i < w->http_status_fail_num; i++) {
+ if (w->http_status_fail[i] == status)
+ return 1;
+ }
+ return 0;
+}
+
+
/*
* What to do with incoming data (dispatcher)
*/
@@ -1445,13 +1457,17 @@
JK_TRACE_EXIT(l);
return JK_AJP13_ERROR;
}
+ r->http_response_status = res.status;
+ if (is_http_status_fail(ae->worker, res.status)) {
+ JK_TRACE_EXIT(l);
+ return JK_STATUS_ERROR;
+ }
r->start_response(r, res.status, res.msg,
(const char *const *)res.header_names,
(const char *const *)res.header_values,
res.num_headers);
if (r->flush && r->flush_header)
r->flush(r);
- r->http_response_status = res.status;
}
return JK_AJP13_SEND_HEADERS;
@@ -1564,17 +1580,6 @@
return JK_AJP13_NO_RESPONSE;
}
-static int is_http_status_fail(ajp_worker_t *w, int status)
-{
- unsigned int i;
- for (i = 0; i < w->http_status_fail_num; i++) {
- if (w->http_status_fail[i] == status)
- return 1;
- }
- return 0;
-}
-
-
/*
* get replies from Tomcat via Ajp13/Ajp14
* We will know only at read time if the remote host closed
@@ -1733,11 +1738,11 @@
return JK_TRUE;
}
else if (JK_AJP13_SEND_HEADERS == rc) {
- if (is_http_status_fail(p->worker, s->http_response_status)) {
- JK_TRACE_EXIT(l);
- return JK_STATUS_ERROR;
- }
headeratclient = JK_TRUE;
+ }
+ else if (JK_STATUS_ERROR == rc) {
+ JK_TRACE_EXIT(l);
+ return JK_STATUS_ERROR;
}
else if (JK_AJP13_HAS_RESPONSE == rc) {
/*
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]