You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by mt...@apache.org on 2008/09/23 18:37:44 UTC
svn commit: r698229 - in /tomcat/connectors/trunk/jk:
native/apache-2.0/mod_jk.c native/common/jk_ajp_common.c
native/common/jk_service.h native/common/jk_util.c
xdocs/miscellaneous/changelog.xml
Author: mturk
Date: Tue Sep 23 09:37:44 2008
New Revision: 698229
URL: http://svn.apache.org/viewvc?rev=698229&view=rev
Log:
Add use_server_errors extension so server error pages can be displayed instead the one generated by Tomcat. Only Apache 2 for the moment
Modified:
tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c
tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
tomcat/connectors/trunk/jk/native/common/jk_service.h
tomcat/connectors/trunk/jk/native/common/jk_util.c
tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
Modified: tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c?rev=698229&r1=698228&r2=698229&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c (original)
+++ tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c Tue Sep 23 09:37:44 2008
@@ -688,6 +688,7 @@
e = (rule_extension_t *)ap_get_module_config(r->request_config, &jk_module);
if (e) {
s->extension.reply_timeout = e->reply_timeout;
+ s->extension.use_server_error_pages = e->use_server_error_pages;
if (e->activation) {
s->extension.activation = apr_palloc(r->pool, e->activation_size * sizeof(int));
memcpy(s->extension.activation, e->activation, e->activation_size * sizeof(int));
@@ -2364,7 +2365,10 @@
end->done(&end, xconf->log);
if (s.content_read < s.content_length ||
(s.is_chunked && !s.no_more_chunks)) {
-
+ if (JK_IS_DEBUG_LEVEL(xconf->log))
+ jk_log(xconf->log, JK_LOG_DEBUG,
+ "Consuming remaining request data for worker=%s",
+ STRNULL_FOR_NULL(worker_name));
/*
* If the servlet engine didn't consume all of the
* request data, consume and discard all further
@@ -2411,6 +2415,15 @@
jk_close_pool(&private_data.p);
if (rc > 0) {
+ if (s.extension.use_server_error_pages &&
+ s.http_response_status >= s.extension.use_server_error_pages) {
+ if (JK_IS_DEBUG_LEVEL(xconf->log))
+ jk_log(xconf->log, JK_LOG_DEBUG, "Forwarding status=%d"
+ " for worker=%s",
+ s.http_response_status, worker_name);
+ JK_TRACE_EXIT(xconf->log);
+ return s.http_response_status;
+ }
/* If tomcat returned no body and the status is not OK,
let apache handle the error code */
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?rev=698229&r1=698228&r2=698229&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c Tue Sep 23 09:37:44 2008
@@ -1656,17 +1656,24 @@
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);
+
+ if (r->extension.use_server_error_pages &&
+ r->http_response_status >= r->extension.use_server_error_pages)
+ r->response_blocked = JK_TRUE;
+
+ if (!r->response_blocked) {
+ 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);
+ }
}
return JK_AJP13_SEND_HEADERS;
case JK_AJP13_SEND_BODY_CHUNK:
- {
+ if (!r->response_blocked) {
unsigned int len = (unsigned int)jk_b_get_int(msg);
/*
* Do a sanity check on len to prevent write reading beyond buffer
@@ -1762,15 +1769,16 @@
}
ae->reuse = JK_TRUE;
}
- if (r->done) {
- /* Done with response */
- r->done(r);
- }
- else if (r->flush && !r->flush_packets) {
- /* Flush after the last write */
- r->flush(r);
+ if (!r->response_blocked) {
+ if (r->done) {
+ /* Done with response */
+ r->done(r);
+ }
+ else if (r->flush && !r->flush_packets) {
+ /* Flush after the last write */
+ r->flush(r);
+ }
}
-
JK_TRACE_EXIT(l);
return JK_AJP13_END_RESPONSE;
break;
Modified: tomcat/connectors/trunk/jk/native/common/jk_service.h
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_service.h?rev=698229&r1=698228&r2=698229&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_service.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_service.h Tue Sep 23 09:37:44 2008
@@ -87,6 +87,8 @@
int fail_on_status_size;
/* Dynamically allocated array with one entry per status. */
int *fail_on_status;
+ /* Use server error pages for responses >= 400. */
+ int use_server_error_pages;
};
typedef struct svc_extension svc_extension_t;
@@ -247,6 +249,11 @@
int response_started;
/*
+ * JK_TRUE if response should not be send to the client
+ */
+ int response_blocked;
+
+ /*
* HTTP status sent from container.
*/
int http_response_status;
Modified: tomcat/connectors/trunk/jk/native/common/jk_util.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_util.c?rev=698229&r1=698228&r2=698229&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_util.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_util.c Tue Sep 23 09:37:44 2008
@@ -1962,10 +1962,12 @@
s->flush_packets = JK_FALSE;
s->flush_header = JK_FALSE;
s->extension.reply_timeout = -1;
+ s->extension.use_server_error_pages = 0;
s->extension.activation = NULL;
s->extension.fail_on_status_size = 0;
s->extension.fail_on_status = NULL;
s->response_started = JK_FALSE;
+ s->response_blocked = JK_FALSE;
s->http_response_status = JK_HTTP_OK;
s->uw_map = NULL;
s->start_response = NULL;
Modified: tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml?rev=698229&r1=698228&r2=698229&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml Tue Sep 23 09:37:44 2008
@@ -44,6 +44,11 @@
<subsection name="Native">
<changelog>
<update>
+ Allow forwarding server error pages. This can be done
+ on per-uri basis using new use_server_errors extension.
+ (mturk)
+ </update>
+ <update>
Added session_cookie and session_path for configuring
default session identifiers. (mturk)
</update>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: svn commit: r698229 - in /tomcat/connectors/trunk/jk: native/apache-2.0/mod_jk.c
native/common/jk_ajp_common.c native/common/jk_service.h native/common/jk_util.c
xdocs/miscellaneous/changelog.xml
Posted by Mladen Turk <mt...@apache.org>.
Tim Whittington wrote:
> This has broken the build on Windows also.
> The addition of the log statement pushed the declaration of char* buff below
> it out of the beginning of the block, and VC is being pedantic about the C
> declaration rules.
>
Done, thanks.
Cheers
--
^(TM)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: svn commit: r698229 - in /tomcat/connectors/trunk/jk:
native/apache-2.0/mod_jk.c native/common/jk_ajp_common.c
native/common/jk_service.h native/common/jk_util.c
xdocs/miscellaneous/changelog.xml
Posted by Tim Whittington <ti...@orionhealth.com>.
This has broken the build on Windows also.
The addition of the log statement pushed the declaration of char* buff below
it out of the beginning of the block, and VC is being pedantic about the C
declaration rules.
tim
From: <mt...@apache.org>
Reply-To: Tomcat Developers List <de...@tomcat.apache.org>
Date: Tue, 23 Sep 2008 16:37:44 -0000
To: <de...@tomcat.apache.org>
Subject: svn commit: r698229 - in /tomcat/connectors/trunk/jk:
native/apache-2.0/mod_jk.c native/common/jk_ajp_common.c
native/common/jk_service.h native/common/jk_util.c
xdocs/miscellaneous/changelog.xml
if (s.content_read < s.content_length ||
(s.is_chunked && !s.no_more_chunks)) {
-
+ if (JK_IS_DEBUG_LEVEL(xconf->log))
+ jk_log(xconf->log, JK_LOG_DEBUG,
+ "Consuming remaining request data for
worker=%s",
+ STRNULL_FOR_NULL(worker_name));