Author: mturk Date: Sun Oct 29 08:59:04 2006 New Revision: 468939 URL: http://svn.apache.org/viewvc?view=rev&rev=468939 Log: When Tomcat sends AJP body message of size 0, this means that Servlet has asked for explicit flush.
Modified: tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c 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_global.h tomcat/connectors/trunk/jk/native/common/jk_service.h tomcat/connectors/trunk/jk/xdocs/changelog.xml Modified: tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c?view=diff&rev=468939&r1=468938&r2=468939 ============================================================================== --- tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c (original) +++ tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c Sun Oct 29 08:59:04 2006 @@ -515,6 +515,10 @@ s->flush_packets = 1; else s->flush_packets = 0; + if (conf->options & JK_OPT_FLUSHEADER) + s->flush_header = 1; + else + s->flush_header = 0; if (conf->options & JK_OPT_DISABLEREUSE) s->disable_reuse = 1; @@ -1583,6 +1587,9 @@ } else if (!strcasecmp(w, "FlushPackets")) { opt = JK_OPT_FLUSHPACKETS; + } + else if (!strcasecmp(w, "FlushHeader")) { + opt = JK_OPT_FLUSHEADER; } else if (!strcasecmp(w, "DisableReuse")) { opt = JK_OPT_DISABLEREUSE; 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?view=diff&rev=468939&r1=468938&r2=468939 ============================================================================== --- tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c (original) +++ tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c Sun Oct 29 08:59:04 2006 @@ -533,6 +533,10 @@ s->flush_packets = 1; else s->flush_packets = 0; + if (conf->options & JK_OPT_FLUSHEADER) + s->flush_header = 1; + else + s->flush_header = 0; if (conf->options & JK_OPT_DISABLEREUSE) s->disable_reuse = 1; @@ -1609,6 +1613,9 @@ } else if (!strcasecmp(w, "FlushPackets")) { opt = JK_OPT_FLUSHPACKETS; + } + else if (!strcasecmp(w, "FlushHeader")) { + opt = JK_OPT_FLUSHEADER; } else if (!strcasecmp(w, "DisableReuse")) { opt = JK_OPT_DISABLEREUSE; 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=468939&r1=468938&r2=468939 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c Sun Oct 29 08:59:04 2006 @@ -1407,14 +1407,23 @@ JK_TRACE_EXIT(l); return JK_INTERNAL_ERROR; } - if (!r->write(r, msg->buf + msg->pos, len)) { - jk_log(l, JK_LOG_INFO, - "Writing to client aborted or client network problems"); - JK_TRACE_EXIT(l); - return JK_CLIENT_WR_ERROR; + if (len == 0) { + /* AJP13_SEND_BODY_CHUNK with length 0 is + * explicit flush packet message. + */ + if (r->flush) + r->flush(r); + } + else { + if (!r->write(r, msg->buf + msg->pos, len)) { + jk_log(l, JK_LOG_INFO, + "Writing to client aborted or client network problems"); + JK_TRACE_EXIT(l); + return JK_CLIENT_WR_ERROR; + } + if (r->flush && r->flush_packets) + r->flush(r); } - if (r->flush && r->flush_packets) - r->flush(r); } break; Modified: tomcat/connectors/trunk/jk/native/common/jk_global.h URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_global.h?view=diff&rev=468939&r1=468938&r2=468939 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_global.h (original) +++ tomcat/connectors/trunk/jk/native/common/jk_global.h Sun Oct 29 08:59:04 2006 @@ -241,7 +241,8 @@ /* Forward local instead remote address */ #define JK_OPT_FWDLOCAL 0x0010 #define JK_OPT_FLUSHPACKETS 0x0020 -#define JK_OPT_DISABLEREUSE 0x0040 +#define JK_OPT_FLUSHEADER 0x0040 +#define JK_OPT_DISABLEREUSE 0x0080 /* Check for EBCDIC systems */ 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?view=diff&rev=468939&r1=468938&r2=468939 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_service.h (original) +++ tomcat/connectors/trunk/jk/native/common/jk_service.h Sun Oct 29 08:59:04 2006 @@ -217,6 +217,11 @@ */ int flush_packets; + /* + * If set call flush after AJP13_SEND_HEADERS. + */ + int flush_header; + /* Uri worker map. Added for virtual host support */ jk_uri_worker_map_t *uw_map; Modified: tomcat/connectors/trunk/jk/xdocs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/changelog.xml?view=diff&rev=468939&r1=468938&r2=468939 ============================================================================== --- tomcat/connectors/trunk/jk/xdocs/changelog.xml (original) +++ tomcat/connectors/trunk/jk/xdocs/changelog.xml Sun Oct 29 08:59:04 2006 @@ -26,6 +26,12 @@ <br /> <subsection name="Native"> <changelog> + <update> + Apache: Added +FlushHeader JkOptions. (mturk) + </update> + <update> + Added explicit flush when AJP body packet size is zero. (mturk) + </update> <fix> <bug>40774</bug>: Fixing wrong recursion termination. This one restricted the "reference" feature unintentionally to 20 workers. (rjung) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]