axis-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From axis-c-...@ws.apache.org
Subject [jira] Closed: (AXISCPP-46) Long responses from the server are truncated
Date Thu, 14 Oct 2004 17:00:51 GMT
Message:

   The following issue has been closed.

   Resolver: John Hawkins
       Date: Thu, 14 Oct 2004 9:59 AM

Although we stil have problems in this area we have other defects to cover it
---------------------------------------------------------------------
View the issue:
  http://issues.apache.org/jira/browse/AXISCPP-46

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

     Status: Closed
   Priority: Major
 Resolution: FIXED

    Project: Axis-C++
 Components: 
             Transport (Client)
   Fix Fors:
             current (nightly)
   Versions:
             Alpha

   Assignee: 
   Reporter: Nadine Maloney

    Created: Thu, 25 Mar 2004 8:16 AM
    Updated: Thu, 14 Oct 2004 9:59 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