Bug 42003

Summary: Need to increase the maximum buffer size for HTTP header from 16k to 64k.
Product: Tomcat Connectors Reporter: Calin Gruita <calin.gruita>
Component: CommonAssignee: Tomcat Developers Mailing List <dev>
Status: CLOSED FIXED    
Severity: critical CC: calin.gruita
Priority: P1    
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows Server 2003   

Description Calin Gruita 2007-03-30 15:57:32 UTC
Currently the maximum buffer size for HTTP headers in the native JK connector 
is 16k. However, this size is not sufficient in case the HTTP header is larger 
than 16k (i.e. large Kerberos Tickets). If such a case arises an error of the 
type “[error] jk_isapi_plugin.c (1135): failed to init service for request” 
gets raised. For this reason the maximum buffer size, which currently is hard-
coded to 16k, must be increased to 64k.
Comment 1 Calin Gruita 2007-03-30 16:05:26 UTC
The code change required to fix this bug is to modify line# 1498 in the 
jk_isapi_plugin.c file to look like this:

char huge_buf[64 * 1024];   /* should be enough for all */
Comment 2 Christopher A Johnson 2007-10-31 08:23:58 UTC
The buffer size can be increased by modifying the source code associated with
the iis dll and the AJP protocol. I was only successful in producing a working
dll by using Visual Studio 6 sp5 with the associated x86 makefile. The iis dll
code base requires the following changes are made:

native\iis\jk_isapi_plugin.c(1977): char huge_buf[64 * 1024];
native\common\jk_ajp12_worker.c(38): #define READ_BUF_SIZE           (64*1024)
native\common\jk_ajp13.h(39): #define AJP13_READ_BUF_SIZE         (64*1024)
native\common\jk_ajp14.h(41): #define AJP14_READ_BUF_SIZE         (64*1024)
native\common\jk_msg_buff.h(34): #define DEF_BUFFER_SZ (64 * 1024)
native\common\jk_sockbuf.h(26): #define SOCKBUF_SIZE (64*1024)
native\common\jk_status.c(39): #define HUGE_BUFFER_SIZE (64*1024)
native\common\jk_util.c(115): #define HUGE_BUFFER_SIZE (64*1024)

In addition the following change will need to be made to one of the AJP protocol
classes:

\jk\java\org\apache\coyote\Constants.java(95): public static final int
MAX_PACKET_SIZE = 65536;


Comment 3 Rainer Jung 2007-11-02 19:17:50 UTC
Please try combining

native\iis\jk_isapi_plugin.c(1977): char huge_buf[64 * 1024];

with the attribute max_packet_size first. See the description on the docs page

http://tomcat.apache.org/connectors-doc/reference/workers.html

especially for the related config parameter on the Tomcat side.

Please report your findings back.

Thanks!

Rainer
Comment 4 Rainer Jung 2007-12-18 06:29:50 UTC
This should have been fixed by Mladens commit r594798 on 2007-11-14: Fix Bz
42003 by dynamically allocating memory.
Comment 5 Rainer Jung 2008-01-01 16:32:30 UTC
Move a couple of fixed JK issues from resolved to closed.