axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j...@apache.org
Subject [jira] Created: (AXISCPP-46) Long responses from the server are truncated
Date Thu, 25 Mar 2004 16:16:58 GMT
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


Mime
View raw message