Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

FIX: An HTTP Protocol Violation Occurs When BizTalk Server Communicates with an HTTP 1.0 Server


View products that this article applies to.

Symptoms

When you configure BizTalk Server to communicate to an HTTP 1.0 server, the BizTalk HTTP client does not honor the protocol requirements that are specified in the published HTTP RFCs with regard to persistent connections behavior.

Specifically, the BizTalk HTTP client attempts to reuse a connection even though the HTTP 1.0 server has not indicated that it supports this option by including the Connection: Keep-Alive header in its initial response.

If simultaneous POST requests are transmitted to the HTTP 1.0 Web server, to be in accordance with the HTTP RFCs, after the first request is processed, the Web server sets the FIN flag on the TCP/IP connection to request closure.

The BizTalk HTTP client does not correctly recognize that the connection should be considered closed and attempts to send another POST request on the same connection.

The semantics of BizTalk Messaging determine that requests may be placed in the Retry Queue and that the underlying TCP/IP transport protocol enter a TCP reset exchange that occurs between the BizTalk client and HTTP 1.0 Web server.

The following text is an example of the initial messages headers that are exchanged, which should determine that there are no persistent connections to be used:
BTS Client Request
POST /a/b/c HTTP/1.1
Host: nnn.nnn.nnn.nnn:pppp
Connection: Keep-Alive
Content-Length: nnn
Content-Type: text/plain; charset="utf-8" Accept: */*....


HTTP 1.0 Server Response
HTTP/1.0 200 OK
Content-Type: text/xml
Servlet-Engine: ...
In extreme situations, transmission of BizTalk messages may fail and result in messages being placed in the Suspended Queue.

↑ Back to the top


Cause

Performance optimizations that were made in BizTalk Server implement a cache for TCP connections, which inadvertently resulted in connections being inappropriately reused when the overlying transport protocol was HTTP 1.0.

↑ Back to the top


Resolution

Service Pack Information

To resolve this problem, obtain the latest service pack for Microsoft BizTalk Server 2002. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
815781 How to Obtain the Latest BizTalk Server 2002 Service Pack

Hotfix Information

A supported hotfix is available from Microsoft. However, this hotfix is intended to correct only the problem that is described in this article. Apply this hotfix only to systems that are experiencing this specific problem. 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 Web site: 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.

↑ Back to the top


Status

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Microsoft BizTalk Server 2002 Service Pack 1.

↑ Back to the top


References

The following text is from IETF RFC 2616:

Section 8.1.2.1:
Clients and servers SHOULD NOT assume that a persistent connection is maintained for HTTP versions less than 1.1 unless it is explicitly signaled.
Section 19.6:
And we would expect HTTP/1.1 clients to:
* recognize the format of the Status-Line for HTTP/1.0 and 1.1 responses;
* understand any valid response in the format of HTTP/0.9, 1.0, or 1.1.

For most implementations of HTTP/1.0, each connection is established by the client prior to the request and closed by the server after sending the response. Some implementations implement the Keep-Alive version of persistent connections described in section 19.7.1 of RFC 2068 [33].
In RFC 1945, Connection: Keep-Alive is a "common extension" to a 1.0 implementation. Closing the connection after the response is also the expected behavior in the absence of other signaling.

↑ Back to the top


Keywords: KB320370, kbfix, kbbug, kbbiztalk2002sp1fix, kbqfe, kbhotfixserver, kbautohotfix

↑ Back to the top

Article Info
Article ID : 320370
Revision : 13
Created on : 11/15/2007
Published on : 11/15/2007
Exists online : False
Views : 450