PK44810: Z/OS HTTP PLUGIN CHUNKED POST CONTENT DATA MAY CAUSE A 500 RESPONSE CODE

 A fix is available

Obtain the fix for this APAR



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 client
Problem 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
&#158;**** PE08/02/11 PTF IN ERROR. SEE APAR 
PK57464  FOR DESCRIPTION
APAR information
APAR number PK44810
Reported component name WEBSPHERE FOR Z
Reported component ID 5655I3500
Reported release 610
Status CLOSED PER
PE NoPE
HIPER NoHIPER
Special Attention NoSpecatt
Submitted date 2007-05-09
Closed date 2007-10-23
Last modified date 2008-02-11

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

Fix information
Fixed component name WEBSPHERE FOR Z
Fixed component ID 5655I3500

Applicable component levels
R500 PSY    UP
R601 PSY    UP
R610 PSY UK31212    UP07/11/22 P F711

  Fix is available
Select the PTF appropriate for your component level. You will be required to sign in. Distribution on physical media is not available in all countries.


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