Fix (APAR):  WAS_Plugin_04-12-2004_5.0.X_cumulative_Fix

Status:  Fix

Release:  5.0.2.3,5.0.2.2,5.0.2.1,5.0.2,5.0.1,5.0.0

Operating System:  All

Supersedes Fixes:  Websphere Service Pack 5.0.2.5 plug-in
Cumulative plug-in fix WAS_Plugin_02-03-2003_5.0.X_cumulative_Fix
Cumulative plug-in fix WAS_Plugin_11-19-2003_5.0.X_cumulative_Fix
Cumulative plug-in fix WAS_Plugin_09-03-2003_5.0.X_cumulative_Fix
PQ82742 - RefreshInterval property in plugin-cfg.xml cannot be disabled
PQ84485 - Client did not receive the message body of 302 response
PQ84539 - Plug-in memory leak upon IHS restart
PQ84704 - 500 response was received when ExtendedHandshake was set to True
PQ84704.1 - Needs to check socket status after extended handshake
PQ84887 - Plug-in did not do failover correctly
PQ84932 - Plug-in used lots of memory for ESI buffering
PQ84950 - iPlanet (Sun ONE) Web server crashed upon graceful shutdown
PQ86174 - error in gsk_secure_soc_close: GSK_INVALID_STATE (gsk rc = 5)
PQ86442 - Not fail on customer cookies in non-standard format
PQ86467 - iPlanet plug-in failed to parse and set headers
PQ86603 - Plug-in had conflict with IHS 2.0.x MOD_ALIAS and MOD_REWRITE modules

CMVC Defect:  WAS_Plugin_04-12-2004_5.0.X_cumulative_Fix

Byte size of APAR:  5363132

Date: 2004-04-13

Abstract:  This is a cumulative plugin fix for the WebSphere Application Server 5.0.0, 5.0.1, and 5.0.2 as of April 12, 2004

Description/symptom of problem:  This is a cumulative plugin fix for the WebSphere Application Server 5.0.0, 5.0.1, and 5.0.2 as of April 12, 2004

Directions to apply fix:  

NOTE:  YOU MUST FIRST DOWNLOAD THE UPDATE INSTALLER TOOL IN ORDER TO INSTALL A FIX.
       The Fix Installer can be downloaded from the following link:
       http://www-3.ibm.com/software/webservers/appserv/support/index.html

1) Create temporary "fix" directory to store the jar file:
             UNIX: /tmp/WebSphere/fix
          Windows: c:\temp\WebSphere\fix

2) Copy jar file to the directory

3) Stop Web server
  **AIX ONLY: run the command slibclean after stopping the
    webserver to clean up any shared libraries in use

4) Follow the Fix installation instructions that are packaged with the Fix Installer on how to install the Fix.

5) Restart Web server

6) The temp directory may be removed.

Directions to remove fix:  
NOTE:  FIXES MUST BE REMOVED IN THE ORDER THEY WERE APPLIED.  DO NOT REMOVE A FIX UNLESS
     ALL FIXES APPLIED AFTER IT HAVE FIRST BEEN REMOVED.  YOU MAY REAPPLY ANY REMOVED FIX.

Example:  If your system has fix1, fix2, and fix3 applied in that order and fix2 is to be
          removed, fix3 must be removed first, fix2 removed, and fix3 re-applied.


1) Stop Web server
  **AIX ONLY: run the command slibclean after stopping the
    webserver to clean up any shared libraries in use

2) Follow the instructions that are packaged with the Fix Installer on how to uninstall the Fix.

3) Restart Web server

Directions to re-apply fix:  
1) Shutdown Web server
  **AIX ONLY: run the command slibclean after stopping the
    webserver to clean up any shared libraries in use

2) Follow the Fix instructions that are packaged with the Fix Installer on how to uninstall and reinstall the Fix.

3) Restart Web server

Additional Information:  Name           PQ82742
Abstract       RefreshInterval property in plugin-cfg.xml cannot be disabled

The plug-in now allows the user to disable RefreshInterval in the plugin-cfg.xml file.
If RefreshInterval is set to -1 in the plugin-cfg.xml file, the plug-in will NOT reload 
the plugin-cfg.xml file.  The user would have to restart the webserver in order for any 
changes in the plugin-cfg.xml to be picked up. 


Name           PQ84485
Abstract       Client did not receive the message body of 302 response



Name           PQ84539
Abstract       Plug-in memory leak upon IHS restart

Plug-in now registers a cleanup function with IHS process, so that the memory used for plug-in 
configuration and GSKIT library can be released when IHS httpd process restarts.


Name           PQ84704
Abstract       500 response was received When ExtendedHandshake was set to True

Plug-ins are the preferred method of communication between the Web server and the application 
server.  However, when a proxy server is used between plug-in and appserver, plug-in cannot 
make direct connection to the appserver.  Therefore, plug-in cannot always do failover correctly 
because it has no knowledge on the proxy server and cannot tell the correct appserver status.  To 
provide a workaround, after connection is established, extended handshake is performed by sending 
bogus request to appserver and verifying response.  Plug-in will mark the appserver down and fail 
over to another appserver if it receives unexpected response.


Name           PQ84704.1
Abstract       Needs to check socket status after extended handshake

This is related to PQ84704.  When proxy server is used between plug-in and appserver, no direct 
connection is made between plug-in and the appserver, and persistent connection is not always used 
between plug-in and the proxy server.  Plug-in has to check and verify the connection used for 
extended handshake request is still good for real client request.  If the connection has been closed 
by remote peer, plug-in establish a new connection.

**NOTE** With a proxy server used between plug-in and appserver, and ExtendedHandshake is set to 
"True", it's expected that it takes longer for plug-in to process a incoming request.


Name           PQ84887
Abstract       Plug-in did not do failover correctly

Persistent connections are used between plug-in and appserver.  When a newly-established connection 
is closed by appserver in the middle of a request, plug-in will mark the server down and fail over 
to another appserver.


Name           PQ84932
Abstract       Plug-in used lots of memory for ESI buffering

Intermittent high memory usage was seen when ESI processor was enabled, in which case the response 
was buffered before it got cached.  The buffer space was released when the request ended.  However, 
when the response was large, or when there were many concurrent requests being handled by ESI
processor, this would result in tremendous memory usage, and sometimes could make the system crash.  
To avoid such problem, plug-in now checks for the response size if there is a Content-Length 
response header.  If the response body is larger than the available ESI caching space, the response 
will pass through without being handled by ESI.


Name           PQ84950
Abstract       iPlanet (Sun ONE) Web server crashed upon graceful shutdown

When iPlanet (Sun ONE) Web server 6.0 was stopped, the server process crashed, and the following 
messages were written to the error log:

catastrophe (  553): Server crash detected (signal SIGSEGV)
       info (  553): Crash occurred in function __0oSostream_withassigndtv from module /usr/lib/libC.so.5
catastrophe (  552): Server crash detected (signal SIGSEGV) 
info (  552): Crash occurred in function __0oSostream_withassigndtv from module /usr/lib/libC.so.5

This was caused by unnecessary linking.


Name           PQ86174
Abstract       error in gsk_secure_soc_close: GSK_INVALID_STATE (gsk rc = 5)

This message was seen when new plug-in configuration was reloaded and old configuration was released.  
It did not have any adverse effect to the webserver and plug-in functionality.  Code change was made 
to ensure right sequence is followed.


Name           PQ86442
Abstract       Not fail on customer cookies in non-standard format

Plug-in is improved to adopt more flexibility in cookie value parsing.  Occasionally, there are 
third-party programs that do not follow the standard format to set the Cookie header.  When plug-in 
parses such Cookie header for JSESSIONID, it ignores other cookies by continuing looking until 
JSESSIONID cookie is found.  For example, plug-in now does not fail to get the JSESSIONID cookie 
from following header:

    Cookie: key1;key2=value2;key3=;JSESSIONID=abc       (some cookies are not in "name=value" pair)
    Cookie: key1=value1,key2=value2;JSESSIONID=abc	(Use different separator other than ";")


Name           PQ86467
Abstract       iPlanet plug-in failed to parse and set headers

iPlanet plug-in did not correctly process multiple escaped characters in request header.  When 
plug-in gets the request headers from the iPlanet webserver, some characters, such as '"' and '\', 
are escaped as '\"' and '\\'.  Plug-in should send the header without escaping backslash.


Name           PQ86603
Abstract       Plug-in had conflict with IHS 2.0.x MOD_ALIAS and MOD_REWRITE modules

The IHS 2.0.x MOD_REWRITE and MOD_ALIAS modules could be skipped after PQ82880, and the requests 
would not get re-written correctly before getting routed by WebSphere plug-in to appserver.  
Plug-in now allows such modules to run before it processes the request.