FIX: Incorrect response or connection fails in IIS 7.5 after an ISAPI filter registers for SF_NOTIFY_SEND_RAW_DATA event notifications

Applies to: Windows 7Windows 7 Service Pack 1Windows Server 2008 R2

Symptoms


Consider the following scenario:
  • You install Internet Information Services (IIS) 7.5 on a computer that is running Windows Server 2008 R2 or Windows 7.
  • You add an ISAPI filter that registers for SF_NOTIFY_SEND_RAW_DATA event notifications in IIS.
  • The computer that is running IIS 7.5 receives a Client HTTP request that contains a Range header.
In this scenario, one of the following symptoms occurs:
  • If the response data size is equal to 8 MB or is less than 8 MB, IIS sends a response that states that the data length is equal to the Content-Range header, and an incorrect Content-Length header is returned in the response. Therefore, the client waits for data that does not exist.

    For example, the client sends the following request to the computer that is running IIS:
    GET /examplefile.txt HTTP/1.1

    Range: bytes=1000-2000

    Host: localhost
    The response to this request resembles the following:
    HTTP/1.1 206 Partial Content

    Content-Length: 8192000

    Content-Type: text/plain

    Last-Modified: <Day, Date and time>

    Accept-Ranges: bytes

    ETag: "0e7ef5bd70cb1:0"

    Server: Microsoft-IIS/7.5

    X-Powered-By: ASP.NET

    Date: Date and time

    Content-Range: bytes 1000-2000/8192000
    Note The correct value of the Content-Length header for the response is 1001. However, this response contains a value of 8192000.
  • If the response data size is greater than 8 MB, the client connection fails. Additionally, the following error message is logged in the HTTP API error log:
    Connection_Dropped.

Cause


This issue occurs for one of the following reasons:
  • Http.sys does not update the Content-Length header in the response when the response data size is equal to 8 MB or is less than 8 MB.

    When IIS sends a full response, and when Http.sys processes the Range header of the request, IIS sends the whole buffer by a single HttpSendHttpResponse call without the HTTP_SEND_RESPONSE_FLAG_MORE_DATA flag. However, Http.sys does not update the Content-Length header in the response. Therefore, Http.sys sends only a subset of the response to the client.
  • The STATUS_NOT_IMPLEMENTED status is set when the response data size is greater than 8 MB.

    When IIS sends the buffer by using HttpSendHttpResponse calls with the HTTP_SEND_RESPONSE_FLAG_MORE_DATA and HTTP_SEND_RESPONSE_FLAG_PROCESS_RANGES flags, Http.sys sets the status to STATUS_NOT_IMPLEMENTED, and the connection is closed.

Resolution


Note After you apply the following hotfix, the Range header is not processed if the response is larger than 8 MB. The 14.35.2 section of Request for Comments (RFC) 2616 states that a server may ignore the Range header.

Hotfix information

A supported hotfix is available from Microsoft. However, this hotfix is intended to correct only the problem that described in this article. Apply this hotfix only to systems that are experiencing the problem described in this article. This hotfix might receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next software update that contains this hotfix.

If the hotfix is available for download, there is a "Hotfix download available" section at the top of this Knowledge Base article. If this section does not appear, contact Microsoft Customer Service and Support to obtain the hotfix.

Note If additional issues occur or if any troubleshooting is required, you might have to create a separate service request. The usual support costs will apply to additional support questions and issues that do not qualify for this specific hotfix. For a complete list of Microsoft Customer Service and Support telephone numbers or to create a separate service request, visit the following Microsoft website: Note The "Hotfix download available" form displays the languages for which the hotfix is available. If you do not see your language, it is because a hotfix is not available for that language.


Prerequisites

To apply this hotfix, you must have IIS 7.5 installed on a computer that is running one of the following operating systems:
  • Windows 7
  • Windows 7 Service Pack 1 (SP1)
  • Windows Server 2008 R2
  • Windows Server 2008 R2 Service Pack 1 (SP1)

Restart requirement

After you install this hotfix, you must restart the computer if IIS was running when you installed this hotfix.

Hotfix replacement information

This hotfix does not replace a previously released hotfix.

File information

The English version of this hotfix has the file attributes (or later file attributes) that are listed in the following table. The dates and times for these files are listed in Coordinated Universal Time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time item in Control Panel.

For all supported x86-based versions of Windows 7
File nameFile versionFile sizeDateTimePlatform
Iiscore.dll7.5.7601.21828198,14429-Sep-201116:11x86
For all supported x64-based versions of Windows 7 and of Windows Server 2008 R2
File nameFile versionFile sizeDateTimePlatform
Iiscore.dll7.5.7600.21060314,36829-Sep-201116:15x64
For all supported IA-64based versions of Windows Server 2008 R2
File nameFile versionFile sizeDateTimePlatform
Iiscore.dll7.5.7600.21060575,48829-Sep-201105:11IA-64

Status


Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section.

More Information


For more information about Error logging in HTTP API, click the following article number to view the article in the Microsoft Knowledge Base:

820729 Error logging in HTTP API
For more information about ISAPI filter event notifications, visit the following MSDN website:
For more information about RFC 2616, visit the following World Wide Web Consortium (W3C) website:
 Microsoft provides third-party contact information to help you find technical support. This contact information may change without notice. Microsoft does not guarantee the accuracy of this third-party contact information. 

Additional file information

Additional files for all supported x86-based versions of Windows 7
File nameUpdate.mum
File versionNot Applicable
File size3,287
Date (UTC)29-Sep-2011
Time (UTC)20:01
PlatformNot Applicable
File nameX86_7b3906728819ebfe5f9c7c6c56c338e1_31bf3856ad364e35_6.1.7600.21060_none_3b1ec47438016268.manifest
File versionNot Applicable
File size705
Date (UTC)29-Sep-2011
Time (UTC)20:01
PlatformNot Applicable
File nameX86_cd3e3a137d957007590989560801335c_31bf3856ad364e35_6.1.7601.21828_none_bf47ab8a3f2f4291.manifest
File versionNot Applicable
File size705
Date (UTC)29-Sep-2011
Time (UTC)20:01
PlatformNot Applicable
File nameX86_microsoft-windows-iis-corewebengine_31bf3856ad364e35_6.1.7600.21060_none_d01a7b1ba3aa60c8.manifest
File versionNot Applicable
File size10,228
Date (UTC)29-Sep-2011
Time (UTC)16:23
PlatformNot Applicable
File nameX86_microsoft-windows-iis-corewebengine_31bf3856ad364e35_6.1.7601.21828_none_d23443e5a0a8f18d.manifest
File versionNot Applicable
File size10,228
Date (UTC)29-Sep-2011
Time (UTC)16:44
PlatformNot Applicable
Additional files for all supported x64-based versions of Windows 7 and of Windows Server 2008 R2
File nameAmd64_757054c725834f079416922bc5ba9cb4_31bf3856ad364e35_6.1.7601.21828_none_99d6afe07fb91c34.manifest
File versionNot Applicable
File size1,060
Date (UTC)29-Sep-2011
Time (UTC)20:01
PlatformNot Applicable
File nameAmd64_9548f623fcc12dd4563da037f1d68d67_31bf3856ad364e35_6.1.7600.21060_none_f8bd2c953d494b35.manifest
File versionNot Applicable
File size1,060
Date (UTC)29-Sep-2011
Time (UTC)20:01
PlatformNot Applicable
File nameAmd64_microsoft-windows-iis-corewebengine_31bf3856ad364e35_6.1.7600.21060_none_2c39169f5c07d1fe.manifest
File versionNot Applicable
File size10,236
Date (UTC)29-Sep-2011
Time (UTC)16:40
PlatformNot Applicable
File nameAmd64_microsoft-windows-iis-corewebengine_31bf3856ad364e35_6.1.7601.21828_none_2e52df69590662c3.manifest
File versionNot Applicable
File size10,236
Date (UTC)29-Sep-2011
Time (UTC)18:07
PlatformNot Applicable
File nameUpdate.mum
File versionNot Applicable
File size3,729
Date (UTC)29-Sep-2011
Time (UTC)20:01
PlatformNot Applicable
File nameWow64_microsoft-windows-iis-corewebengine_31bf3856ad364e35_6.1.7600.21060_none_368dc0f1906893f9.manifest
File versionNot Applicable
File size7,906
Date (UTC)29-Sep-2011
Time (UTC)16:18
PlatformNot Applicable
File nameWow64_microsoft-windows-iis-corewebengine_31bf3856ad364e35_6.1.7601.21828_none_38a789bb8d6724be.manifest
File versionNot Applicable
File size7,906
Date (UTC)29-Sep-2011
Time (UTC)16:32
PlatformNot Applicable
Additional files for all supported IA-64based versions of Windows Server 2008 R2
File nameIa64_0355f3d2e300de7f98a3eb8602e703fd_31bf3856ad364e35_6.1.7600.21060_none_8fe2fa686610011b.manifest
File versionNot Applicable
File size1,058
Date (UTC)29-Sep-2011
Time (UTC)20:01
PlatformNot Applicable
File nameIa64_f5072c07e845b374364234237c749579_31bf3856ad364e35_6.1.7601.21828_none_e25b19583fc3f919.manifest
File versionNot Applicable
File size1,058
Date (UTC)29-Sep-2011
Time (UTC)20:01
PlatformNot Applicable
File nameIa64_microsoft-windows-iis-corewebengine_31bf3856ad364e35_6.1.7600.21060_none_d01c1f11a3a869c4.manifest
File versionNot Applicable
File size10,232
Date (UTC)29-Sep-2011
Time (UTC)16:30
PlatformNot Applicable
File nameIa64_microsoft-windows-iis-corewebengine_31bf3856ad364e35_6.1.7601.21828_none_d235e7dba0a6fa89.manifest
File versionNot Applicable
File size10,232
Date (UTC)29-Sep-2011
Time (UTC)16:38
PlatformNot Applicable
File nameUpdate.mum
File versionNot Applicable
File size2,767
Date (UTC)29-Sep-2011
Time (UTC)20:01
PlatformNot Applicable
File nameWow64_microsoft-windows-iis-corewebengine_31bf3856ad364e35_6.1.7600.21060_none_368dc0f1906893f9.manifest
File versionNot Applicable
File size7,906
Date (UTC)29-Sep-2011
Time (UTC)16:18
PlatformNot Applicable
File nameWow64_microsoft-windows-iis-corewebengine_31bf3856ad364e35_6.1.7601.21828_none_38a789bb8d6724be.manifest
File versionNot Applicable
File size7,906
Date (UTC)29-Sep-2011
Time (UTC)16:32
PlatformNot Applicable