Skip to content

NRE when response has Content-Type but empty body #2999

Open
@IGx89

Description

@IGx89

When a SOAP service returns no content but has a Content-Type set, WCF throws a NullReferenceException in HttpResponseMessageHelper. Leaving off Content-Type works fine.

Example HTTP response that reproduces the issue

HTTP/1.1 500
Content-Length: 0
Content-Type: text/xml; charset=UTF-8
Date: Thu, 05 Jul 2018 21:10:34 GMT
Connection: close

Expected Result

System.ServiceModel.CommunicationException : The server did not provide a meaningful reply; this might be caused by a contract mismatch, a premature session shutdown or an internal server error."

Actual Result

System.NullReferenceException : Object reference not set to an instance of an object.

The NRE happens due to inputStream being null in HttpResponseMessageHelper.DecodeBufferedMessageAsync when it attempts to dispose it in the finally block.

The root cause however looks to be in ValidateContentTypeAsync. It doesn't properly handle this situation. It returns true (last line in the method) if the content type has a value and content length is 0, when it should be returning false. Its return value is saved in a hasContent variable in ParseIncomingResponse, so it definitely looks like it should be returning false if there's no content.

Metadata

Metadata

Assignees

Labels

BacklogLegitimate tasks of lower priority not in current dev schedule.bugThis is a product bug.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions