[ http://issues.apache.org/jira/browse/AXISCPP-727?page=all ]
     
Chinthana Danapala resolved AXISCPP-727:
----------------------------------------

    Resolution: Fixed

Done some memory management in SOAPserializer.cpp. This will solve the problem.

> User SOAP Faults lost
> ---------------------
>
>          Key: AXISCPP-727
>          URL: http://issues.apache.org/jira/browse/AXISCPP-727
>      Project: Axis-C++
>         Type: Bug
>   Components: SOAP, Server - General
>     Versions: current (nightly)
>     Reporter: Henrik Nordberg
>     Assignee: Chinthana Danapala
>  Attachments: SoapSerializer.cpp
>
> I catch all exceptions in my wrapper code and convert them to SOAP faults, 
> using pIWSSZ->createSoapFault(). This was working fine and the client could 
> see the error messages that were in my exceptions. Recently that has broken. 
> I traced the problem down to the fact that SOAP faults are blindly being 
> overwritten in SoapSerializer::setSoapFault() :
>     if( m_pSoapEnvelope && (m_pSoapEnvelope->m_pSoapBody))
>     {
>         m_pSoapEnvelope->m_pSoapBody->m_pSoapFault = pSoapFault;
> When I run this in the debugger, I can see my SOAP fault in 
> m_pSoapEnvelope->m_pSoapBody->m_pSoapFault but as you can see, it is being 
> over written here.
> I am not sure what changed that broke this, but I see two possible solutions:
> 1. Simply change
>     if( m_pSoapEnvelope && (m_pSoapEnvelope->m_pSoapBody))
> to
>     if( m_pSoapEnvelope && (m_pSoapEnvelope->m_pSoapBody) && 
> !m_pSoapEnvelope->m_pSoapBody->m_pSoapFault)
> or
> 2. Append the fault string and detail nodes from one of the faults to the 
> detail nodes of the other.
> Also, m_pSoapEnvelope->m_pSoapBody->m_pSoapFault = pSoapFault; is a bit 
> dangerous in the sense that it easily leads to memory leaks (as it did here). 
> It would be better to use accessor methods that check if there already is a 
> value that needs to be freed before a new one is assigned.
> PS. While you are editing that files, it would be a good idea to change 
> "occured" to "occurred".

-- 
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
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to