You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@axis.apache.org by ji...@apache.org on 2004/03/25 17:16:58 UTC

[jira] Created: (AXISCPP-46) Long responses from the server are truncated

Message:

  A new issue has been created in JIRA.

---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/secure/ViewIssue.jspa?key=AXISCPP-46

Here is an overview of the issue:
---------------------------------------------------------------------
        Key: AXISCPP-46
    Summary: Long responses from the server are truncated
       Type: Bug

     Status: Unassigned
   Priority: Major

    Project: Axis-C++
 Components: 
             Transport (Client)
   Versions:
             Alpha

   Assignee: 
   Reporter: Nadine Maloney

    Created: Thu, 25 Mar 2004 8:16 AM
    Updated: Thu, 25 Mar 2004 8:16 AM
Environment: Windows XP C++ Client

Description:
When receiving in responses longer then 4096, the client does not receive more than the first 4095 bytes of the response. Then this is truncated to end at the last '>' character in the response. This causes a fatal exception to occurr when parsing the response with XMLStreamHandler. The exception message is "The input ended before all started tags have ended".

Stepping through the receiving of the code, after the first 4095 bytes are received in Channel::operator >> a call is made to HttpTransport::GetStatus() which in turn calls HttpTransport::HTTPValidate() which in turn calls HttpTransport::GetPayLoad() because the HTTP status is 200. In the HttpTransport::GetPayLoad() call, the status is set to false and the payload is set to the start of the SOAP envelope to the last '>' character found in the message. The status being set to false, causes the Channel::operator >> to break out of it's receiving loop without receiving the rest of the message.

Solution:
Add the following statements to HttpTransport::GetPayLoad() after line #346 in HttpTransport.cpp.
if((pos = m_PayLoad.find("</soapenv:Envelope>")) == std::string::npos) 
	m_bStatus = true; 



---------------------------------------------------------------------
JIRA INFORMATION:
This message is automatically generated by JIRA.

If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa

If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira