IBM Support

PK97410: USING A "IF-MODIFIED-SINCE" HEADER IN A STATIC WEB REQUEST TO CICS DOESN'T GET A 304 HTTP RESPONSE WHEN THE DATE IS UNCHANGED.

A fix is available

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as unreproducible.

Error description

  • According to the Internet Guide under topic "HTTP header
    reference for CICS Web support", the action taken by CICS where
    a response is to be provided by a static document when an
    "If-Modified-Since" header is present is to respond with a 304
    HTTP response code when the modification date hasn't changed.
    This response is not occurring as expected.
    .
    The HTTP request contains an If-Modified-Since header.  The date
    in that header is "Fri, 18 Jan 2008 16:00:51 GMT".  CWXN calls
    DFHTIMF CONVERT_TIME to generate an ABSTIME value from this
    string.  DFHTIMF generates the ABSTIME in local time which
    actually ends up being 11:00:51 on that day.  Then the requested
    file is read from HFS. The ABSTIME of the file modifcation date
    is calculated.  This ABSTIME value is in GMT.  When the values
    are compared the file time is later than the time in the header
    so the file is returned.  The Last-Modified header in the
    response contains the modified time created from the GMT
    ABSTIME so is identical to the original received header.
    
    
    .
    Additional Symptom(s) Search Keyword(s):
    KIXREVSCB
    

Local fix

Problem summary

  • ****************************************************************
    * USERS AFFECTED: All CICS Users.                              *
    ****************************************************************
    * PROBLEM DESCRIPTION: CICS does not return the expected       *
    *                      HTTP 304 (not modified) response to     *
    *                      an If-Modified-Since request-header     *
    *                      field.                                  *
    ****************************************************************
    * RECOMMENDATION:                                              *
    ****************************************************************
    A request from a Web client comes in to CICS containing an
    'If-Modified-Since' header passing a date which is in
    RFC 1123 format, for example: Mon, 07 Dec 2009 14:47:57 GMT.
    DFHWBSR does a DFHTIMFM CONVERT_TIME call to convert this
    value to an ABSTIME but DFHTIMF incorrectly converts the
    GMT value so that it is in local time.
    DFHWBSR finds a URIMAP to match the URL. This definition
    is defined to return static content from an HFS file. This
    results in a DFHDHFS READ_HFS_FILE call which does a BPX2OPN
    call to both open the file and to return the status,
    including the 'last modified' time.
    DFHWBSR converts this time to a GMT ABSTIME and then compares
    it to the ABSTIME derived from the 'If-Modified-Since'
    header. If the local time is behind GMT and if the HFS file
    has not been changed then CICS should return a 304
    (not modified) response, but because the time from the
    header has been converted to a local time the comparison
    incorrectly fails and the file is returned as though it has been
    modified.
    If the local time is ahead of GMT and if the HFS file has been
    updated within a time which is less than the time zone
    difference then CICS should return the updated file but instead
    returns a 304 response because it incorrectly assumes that the
    file is older than the copy that the client has. For example
    if local time is 5 hours ahead of GMT and the file has been
    updated within 5 hours of the previous update, CICS
    does not return the updated file.
    Additional keywords: st_mtime RFC1123 UTC TIME_ZONE CVTLDTO
    

Problem conclusion

Temporary fix

  • FIX AVAILABLE BY PTF ONLY
    

Comments

  • The DFHTIMFM CONVERT_TIME call has been altered to add a ZONE
    parameter. The correction to make the ABSTIME local is now
    only performed if ZONE is not GMT.
    DFHWBSR has been altered to add ZONE(GMT) to the input
    parameters for the CONVERT_TIME call which is used to convert
    the 'If-Modified-Since' time to an ABSTIME.
    

APAR Information

  • APAR number

    PK97410

  • Reported component name

    CICSTS V3 Z/OS

  • Reported component ID

    5655M1500

  • Reported release

    500

  • Status

    CLOSED UR3

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2009-09-29

  • Closed date

    2009-12-30

  • Last modified date

    2010-02-01

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

    UK53265

Modules/Macros

  •    DESTIMF  DESWBAP  DESWBDM  DESWBRQ  DESWBRQF
    DESWBSR  DESWBXM  DFHTIMF  DFHTIMFA DFHTIMFM DFHTIMFT DFHWBAP
    DFHWBAPA DFHWBAPF DFHWBAPJ DFHWBAPM DFHWBAPT DFHWBAPV DFHWBDM
    DFHWBRQD DFHWBRQS DFHWBSR  DFHWBSRA DFHWBSRM DFHWBSRT DFHWBXM
    DFHWBXMA DFHWBXMT
    

Fix information

  • Fixed component name

    CICSTS V3 Z/OS

  • Fixed component ID

    5655M1500

Applicable component levels

  • R500 PSY UK53265

       UP10/01/08 P F001

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.

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSGMGV","label":"CICS Transaction Server"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"3.2","Edition":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}},{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SG19M","label":"APARs - z\/OS environment"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"3.2","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
01 February 2010