20 feb 2013 kl. 11:01 skrev Peter Dunkley <[email protected]>:

> Hi Olle,
> 
> I have checked in an (untested) fix.
Thanks!
I'm not sure I can set up a test today. We tested with tryit.jssip.net using 
Kamailio websocket URI's, placed a call and canceled when in ringing state. The 
CANCEL repeatedly caused a segfault in Kamailio.

/O
> 
> This should do the trick.
> 
> Regards,
> 
> Peter
> 
> On 20/02/13 09:48, Peter Dunkley wrote:
>> Olle,
>> 
>> Looking at this I don't understand the crash at all.
>> 
>> The check of msg->contact should only pass if parse_headers() had already 
>> been called for the Contact: before.  The parse_headers() for the Contact: 
>> should only return > -1 if the message contains a Contact: and it was parsed 
>> successfully.
>> 
>> So the code under this conditional should only be able to run if the request 
>> contains a Contact: header.
>> 
>> I am going to revert the change in master because as it stands the 
>> conditional is checking the wrong thing.  I don't understand why the code 
>> inside this is being run when there is no Contact: at all.
>> 
>> Regards,
>> 
>> Peter
>> 
>> On 20/02/13 09:37, Peter Dunkley wrote:
>>> Hi Olle,
>>> 
>>> I don't think this fix is correct.  The purpose of checking msg->contact is 
>>> to see if the contact has been parsed already - it does not tell you 
>>> whether there is a contact in the message or not.
>>> 
>>> With this patch Kamailio might not be crashing, but that conditional is now 
>>> checking the wrong thing.
>>> 
>>> Regards,
>>> 
>>> Peter
>>> 
>>> On 19 Feb 2013, at 22:10, Olle E. Johansson <[email protected]> wrote:
>>> 
>>>> Module: sip-router
>>>> Branch: master
>>>> Commit: 6369444761d44526ded2620e33438abb182d2bdc
>>>> URL: 
>>>> http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=6369444761d44526ded2620e33438abb182d2bdc
>>>> 
>>>> Author: Olle E. Johansson <[email protected]>
>>>> Committer: Olle E. Johansson <[email protected]>
>>>> Date:   Tue Feb 19 23:08:13 2013 +0100
>>>> 
>>>> outbound Fix core dump crash
>>>> 
>>>> When we got a CANCEL without Contact the parse_contact was sent a null
>>>> pointer. Changing the "or" to "and" fixed this and Kamailio no longer cores
>>>> on Cancel coming on over websockets from jssip.
>>>> 
>>>> Tested at SIPit 30. Core dumps and backtraces available.
>>>> Pdunkley - please check this patch
>>>> 
>>>> ---
>>>> 
>>>> modules/outbound/ob_mod.c |    2 +-
>>>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>>> 
>>>> diff --git a/modules/outbound/ob_mod.c b/modules/outbound/ob_mod.c
>>>> index caf10f4..f7fd63f 100644
>>>> --- a/modules/outbound/ob_mod.c
>>>> +++ b/modules/outbound/ob_mod.c
>>>> @@ -294,7 +294,7 @@ int use_outbound(struct sip_msg *msg)
>>>> 
>>>>    /* Look for ;reg-id in REGISTER Contact-URIs and ;ob in any
>>>>       Contact-URIs */
>>>> -    if (msg->contact || parse_headers(msg, HDR_CONTACT_F, 0) != -1)
>>>> +    if (msg->contact && parse_headers(msg, HDR_CONTACT_F, 0) != -1)
>>>>    {
>>>>        if (parse_contact(msg->contact) < 0)
>>>>        {
>>>> 
>>>> 
>>>> _______________________________________________
>>>> sr-dev mailing list
>>>> [email protected]
>>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>>> _______________________________________________
>>> sr-dev mailing list
>>> [email protected]
>>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>> 
>> 
>> _______________________________________________
>> sr-dev mailing list
>> [email protected]
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
> 
> 
> _______________________________________________
> sr-dev mailing list
> [email protected]
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to