PK44810: Z/OS HTTP PLUGIN CHUNKED POST CONTENT DATA MAY CAUSE A 500 RESPONSE CODE | |||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||
![]() APAR status Closed as program error. Error description z/OS Http Plugin Chunked Post Content Data may cause a 500 response code. .. Wheb a client submit a chunked post content data request to WebSphere 5.1.x. if the request goes directly to the AppServer, then there wasn't any issue. .. If the request was routed by the http server plugin, then they received a 500 response. .. Usually the client does not send Chunked Post Content Data. How ever the client is this case is Jakarta Commons-HttpClient/3.0.1 .. <http://jakarta.apache.org/commons/httpclient/> .. RFC 2616- Hypertext Transfer Protocol -- HTTP/1.1 Chunked Transfer Coding states. .. The chunked encoding modifies the body of a message in order to transfer it as a series of chunks, each with its own size indicator, followed by an OPTIONAL trailer containing entity-header fields. This allows dynamically produced content to be transferred along with the information necessary for the recipient to verify that it has received the full message. .. The chunk-size field is a string of hex digits indicating the size of the chunk. The chunked encoding is ended by any chunk whose size is zero, followed by the trailer, which is terminated by an empty line (0D0A). .. When the request goes to AppServer directly, then there was the the 0D0A stated the data transfer successfully. .. .. Example: of a good working request: ================================== .. Trace: 2007/04/05 12:18:48.279 01 t=8C9360 c=2.1 key=S2 (03012021) Description: Server_HTTPSession::read_msg(SEQUENCE_octet **, unsigned long *, int *, int *)read async at line: 1041 read length: 170 current read contents : data_address=273f2ef5, data_length=170 +---------------------------------------------------------+ |OSet| Address = 273f2ef5 Length = 00aa | EBCDIC | +----+-----------------------------------+----------------+ |0000|504F5354 202F546F 6F6C626F 78584D4C|&|.....??%.?..(<| |0010|5F536F61 702D4874 74702F6E 6F74666F|^.?/.......>?..?| |0020|756E6420 48545450 2F312E31 0D0A5573|.>.....&........| |0030|65722D41 67656E74 3A204A61 6B617274|......>..../,/..| |0040|6120436F 6D6D6F6E 732D4874 7470436C|/..?__?>.......%| |0050|69656E74 2F332E30 2E310D0A 486F7374|..>..........?..| |0060|3A20392E 35372E34 2E323235 3A393038|................| |0070|300D0A54 72616E73 6665722D 456E636F|...../>......>.?| |0080|64696E67 3A206368 756E6B65 640D0A0D|..>......>,.....| |0090|0A660D0A 4D795265 71756573 74497352|....(`..........| |00a0|6963680D 0A300D0A 0D0A |.......... | +---------------------------------------------------------+ ----------------------------------------------------------+ |OSet| Address = 273f2ef5 Length = 00aa | ASCII | +----+-----------------------------------+----------------+ |0000|504F5354 202F546F 6F6C626F 78584D4C|POST /ToolboxXML| |0010|5F536F61 702D4874 74702F6E 6F74666F|_Soap-Http/notfo| |0020|756E6420 48545450 2F312E31 0D0A5573|und HTTP/1.1..Us| |0030|65722D41 67656E74 3A204A61 6B617274|er-Agent: Jakart| |0040|6120436F 6D6D6F6E 732D4874 7470436C|a Commons-HttpCl| |0050|69656E74 2F332E30 2E310D0A 486F7374|ient/3.0.1..Host| |0060|3A20392E 35372E34 2E323235 3A393038|: 9.57.4.225:908| |0070|300D0A54 72616E73 6665722D 456E636F|0..Transfer-Enco| |0080|64696E67 3A206368 756E6B65 640D0A0D|ding: chunked...| |0090|0A660D0A 4D795265 71756573 74497352| f..MyRequestIsR| |00a0|6963680D 0A300D0A 0D0A |ich..0.... | +---------------------------------------------------------: .. However when the http server plugin was being used, then the terminating empty line (0D0A) is not being received, which cause the 500 response. .. Example: of a non-working request: ================================= .. Trace: 2007/04/05 12:27:18.807 01 t=8C8CF0 c=3.1 key=S2 (03012024) Description: Server_HTTPSession::read_msg(SEQUENCE_octet **, unsigned long *, int *, int *)read sync for chunked at line: 1526 read length: 23 current read contents : data_address=273f2ffd, data_length=23 +---------------------------------------------------------+ |OSet| Address = 273f2ffd Length = 0017 | EBCDIC | +----+-----------------------------------+----------------+ |0000|460D0A4D 79526571 75657374 49735269|...(`...........| |0010|63680D15 F00D15 |....0.. | +---------------------------------------------------------+ +---------------------------------------------------------+ |OSet| Address = 273f2ffd Length = 0017 | ASCII | +----+-----------------------------------+----------------+ |0000|460D0A4D 79526571 75657374 49735269|F..MyRequestIsRi| |0010|63680D15 F00D15 |ch..... | +---------------------------------------------------------+ .. Trace: 2007/04/05 12:29:18.807 01 t=8CD7A0 c=UNK key=S2 (04038001) Description: TMQE invokeSnoozeAlarm, Suicide SnoozeAlarm Pointer: 294A6500 Trace: 2007/04/05 12:29:18.808 01 t=8C8CF0 c=3.1 key=S2 (0301201F) Description: Server_HTTPSession::read_msg(SEQUENCE_octet **, unsigned long *, int *, int *)read sync for chunked at line: 1509 recv rc=: -1 errno: 122 errno2: 1986331281 strerror: EDC5122I Input/output error. (errno2=0x76650291) .. In the plugin trace you will see the following... .. .. POST /ToolboxXML_Soap-Http/notfound HTTP/1.1 User-Agent: Jakarta Commons-HttpClient/3.0.1 Host: 9.57.4.225:8000 Transfer-Encoding: chunked $WSIS: false $WSSC: http $WSPR: HTTP/1.1 $WSRA: 9.37.238.127 $WSSN: 9.57.4.225 $WSSP: 8000 Expect: 100-Continue lib_htrequest: htrequestWrite: Waiting for the continue response HTTP/1.1 100 continue lib_htrequest: htrequestWrite: Writing the request content lib_htrequest: htrequestWrite: content length is 0 lib_htrequest: htrequestWrite: Chunked request content ihs390WAS50HttpPlugin: cb_read_body: read 15 of expected 65535 lib_htrequest: htrequestWrite: Writing chunk of size F 15 ihs390WAS50HttpPlugin: cb_read_body: EOF read; read 0 of expected 65535 ERROR: ihs390WAS50HttpPlugin: cb_read_body: Read EOF prematurely; read 0 of expected 65535 TRACE: lib_htrequest: htrequestWrite: just_read is 0; end chunked content TRACE: ws_common: websphereExecute: Wrote the request; reading the response TRACE: lib_htresponse: htresponseRead: Reading the response: 2753be54 .. There would be a 2 minute gap as the input timer is popped .. TRACE: lib_htresponse: htresponseSetError: Setting the error |1| ERROR: ws_common: websphereExecute: Failed to read from a new stream; App Server may have gone down during read TRACE: lib_stream: destroyStream: Destroying the stream .. This application ( HttpClient runs on the PC) the output is as follow. .. 2007/04/05 09:03:47:860 EDT [DEBUG] header - ->> "POST /ToolboxXML_Soap-Http/notfound HTTP/1.1[\r][\n]" 2007/04/05 09:03:47:870 EDT [DEBUG] header - ->> "User-Agent: Jakarta Commons-HttpClient/3.0.1[\r][\n]" 2007/04/05 09:03:47:881 EDT [DEBUG] header - ->> "Host: 9.57.4.225:8000[\r][\n]" 2007/04/05 09:03:47:881 EDT [DEBUG] header - ->> "Transfer-Encoding: chunked[\r][\n]" 2007/04/05 09:03:47:881 EDT [DEBUG] header - ->> "[\r][\n]" 2007/04/05 09:03:47:881 EDT [DEBUG] content - ->> "f[\r][\n]" 2007/04/05 09:03:47:881 EDT [DEBUG] content - ->> "MyRequestIsRich" 2007/04/05 09:03:47:881 EDT [DEBUG] content - ->> "[\r][\n]" 2007/04/05 09:03:47:881 EDT [DEBUG] content - ->> "0" 2007/04/05 09:03:47:881 EDT [DEBUG] content - ->> "[\r][\n]" 2007/04/05 09:03:47:881 EDT [DEBUG] content - ->> "[\r][\n]" .. Again .. Please note the 2 minutes gap ... .. 2007/04/05 09:05:47:863 EDT [INFO] HttpMethodDirector - -I/O exception (org.apache.commons.httpclient.NoHttpResponseException) caught when processing request: The server 9.57.4.225 failed to respond 2007/04/05 09:05:47:873 EDT [INFO] HttpMethodDirector - -Retrying request 2007/04/05 09:05:47:913 EDT [DEBUG] header - ->> "POST /ToolboxXML_Soap-Http/notfound HTTP/1.1[\r][\n]"Local fix Problem summary **************************************************************** * USERS AFFECTED: All users of WebSphere Application Server * * V6.1 for z/OS * **************************************************************** * PROBLEM DESCRIPTION: The WebSphere Application Server HTTP * * Plugin for z/OS returns a 500 response * * code whenever the client sends chunked * * content body input. * **************************************************************** * RECOMMENDATION: * **************************************************************** The WebSphere Application Server HTTP Plugin for z/OS does not recognize the "Content-encoding: chunked" request header and therefore does not reconize the end of data signal which cuase an error path to be taken. The error path causes a zero to be returned to the HTTP Server for z/OS which returns a 500 response code to the clientProblem conclusion The WebSphere Application Server HTTP Plugin for z/OS has been changed to recognize the "Content-encoding: chunked" request header. Also, some literals that had been transmitted as EBCDIC characters have been changed to ASCII for transmission. APAR PK44810 is currently targeted for inclusion in Service Level (Fix Pack) 6.1.0.13 of WebSphere Application Server V6.1 for z/OS.Temporary fix Comments ž**** PE08/02/11 PTF IN ERROR. SEE APAR PK57464 FOR DESCRIPTION
APAR is sysrouted FROM one or more of the following: PK42886 APAR is sysrouted TO one or more of the following: Modules/Macros Publications Referenced
|
Document Information |
Current web document: swg1PK44810.html
Product categories: Software > Application Servers >
Distributed Application & Web Servers > WebSphere Application
Server for z/OS
Operating system(s):
Software version: 610
Software edition:
Reference #: PK44810
IBM Group: Software Group
Modified date: Feb 11, 2008
(C) Copyright IBM Corporation 2000, 2009. All Rights Reserved.