< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index  

Re: [reSIProcate-users] resip stack hangs while calling the API parseAllHeaders after upgrading to release 1.9.5


I have not had the cycles to investigate this further yet.  One thing that can help speed up the process is (from original response):

Can you create a small test program, similar to resip/test/testSipMessage.cxx that tries to call parseAllHeaders on your invalid SipMessage and can demonstrate the problem?

Thanks,
Scott


On Thu, May 8, 2014 at 12:17 PM, alok tiwari <kumartiwarialok@xxxxxxxxxxx> wrote:
any update on this issue.
On Wednesday, 23 April 2014 2:29 PM, alok tiwari <kumartiwarialok@xxxxxxxxxxx> wrote:
Hi Scott,
Thanks for the response.

As I mentioned, the stack goes into infinite loop while parsing the following value in "Proxy-Authorization" header.

Proxy-Authorization: Digest =AKAv0-MD5

The function resip::Auth::parseAuthParameters() goes into infinite loop as keyEnd returned by pb.skipToOneOf() is always same as keyStart. Please refer the function "resip::Auth::parseAuthParameters()" in file rutil/parseBuffer.cxx.

This issue is not observed if there is an lvalue in Proxy-Authoriation header i.e.

Proxy-Authorization: Digest a=AKAv0-MD5

Hope the above will help you.

Thanks,
Alok 

On Tuesday, 22 April 2014 7:54 PM, Scott Godin <sgodin@xxxxxxxxxxxxxxx> wrote:
Since parseAllHeaders is being called you must have PEDANTIC_STACK preprocessor flag turned on.

Check out the code in TransactionState.cxx - search for #ifdef PEDANTIC_STACK.  If we fail to parse a SIP message the exception should be caught and we call handleBadRequest which attempts to respond with 400 - assuming there are enough good headers to allow formation of a response.

What do you mean by hanged?  Does it deadlock, trap or tight spin?

Can you create a small test program, similar to resip/test/testSipMessage.cxx that tries to call parseAllHeaders on your invalid SipMessage and can demonstrate the problem?

Thanks,

Scott



On Mon, Apr 21, 2014 at 11:16 AM, alok tiwari <kumartiwarialok@xxxxxxxxxxx> wrote:
Hi,
Resip stack is getting hanged when API  parseAllHeaders() is invoked for an incoming INVITE having following malformed proxy-authorization header.

Proxy-Authorization: Digest =AKAv0-MD5

The thread which is stucked have the following backtrace:


#0  0x08498ad7 in std::bitset<256u>::_Unchecked_test ()
#1  0x08499385 in std::bitset<256u>::test ()
#2  0x084993ad in resip::ParseBuffer::skipToOneOf ()
#3  0x0849802a in resip::Auth::parseAuthParameters ()
#4  0x084983dd in resip::Auth::parse ()
#5  0x084e2d20 in resip::LazyParser::doParse ()
#6  0x08498d13 in resip::LazyParser::checkParsed ()
#7  0x084d2cd0 in resip::ParserContainer<resip::Auth>::parseAll ()
#8  0x08528d2d in resip::SipMessage::parseAllHeaders ()

However, the same scenario is working fine on older resiprocate release 1.6. I analyzed and found some new changes in functions for auth handling.

Kindly help to find some solution for the same.

Regards,
Alok

_______________________________________________
resiprocate-users mailing list
resiprocate-users@xxxxxxxxxxxxxxx
List Archive: http://list.resiprocate.org/archive/resiprocate-users/




_______________________________________________
resiprocate-users mailing list
resiprocate-users@xxxxxxxxxxxxxxx
List Archive: http://list.resiprocate.org/archive/resiprocate-users/