[OpenSER-Devel] Possible bug in acc_logic.c:acc_onreq?

Bogdan-Andrei Iancu bogdan at voice-system.ro
Mon Feb 25 13:02:32 CET 2008


Hi Phil,

Thanks for your testing - I backported the fix to 1.2 and 1.3.

Regards,
Bogdan

Phil D'Amore wrote:
> Hi Bogdan,
>
> I sent the mail to the users list before I realized I was dealing with
> a bug, so I then created this sort of duplicate thread.  HEAD doesn't
> seem to build all the modules for me right now, so I took your changes
> and applied them to my 1.3 set up and it worked perfectly.
>
> Thanks,
> Phil
>
> On Feb 18, 2008 8:21 AM, Bogdan-Andrei Iancu <bogdan at voice-system.ro> wrote:
>   
>> Hi Phil,
>>
>> it looks like you are right - it is quite interesting how this bug went
>> undetected for such a long time....
>> I made the fix on the trunk version - please test and if everything ok I
>> will port the fix to 1.3.
>>
>> Thanks and regards,
>> Bogdan
>>
>>
>> Phil D'Amore wrote:
>>     
>>> Hello:
>>>
>>> In the acc_onreq function in acc_logic.c there is this code:
>>>
>>>                 tmcb_types =
>>>                         /* report on completed transactions */
>>>                         TMCB_RESPONSE_OUT |
>>>                         /* account e2e acks if configured to do so */
>>>                         ((report_ack && is_acc_on(ps->req))?TMCB_E2EACK_IN:0) |
>>>                         /* get incoming replies ready for processing */
>>>                         TMCB_RESPONSE_IN |
>>>                         /* report on missed calls */
>>>                         ((is_invite(t) &&
>>> is_mc_on(ps->req))?TMCB_ON_FAILURE:0) ;
>>>
>>> I think the is_invite(t) in there is invalid.  is_invite relies on the
>>> T_IS_INVITE_FLAG flag being set in t->flags.  At the time
>>> TMCB_REQUEST_IN callbacks are run, that flag will never be set,
>>> because init_new_t which sets that flag has not yet been called.  That
>>> means that TMCB_ON_FAILURE will never be set and callbacks will never
>>> happen for it.  As a result, failures don't generate records unless
>>> the failure is relayed.
>>>
>>> It seems that this should be done with (ps->req->REQ_METHOD==METHOD_INVITE).
>>>
>>> Can anyone tell me if my assessment is correct?
>>>
>>> _______________________________________________
>>> Devel mailing list
>>> Devel at lists.openser.org
>>> http://lists.openser.org/cgi-bin/mailman/listinfo/devel
>>>
>>>
>>>       
>>     
>
>   




More information about the Devel mailing list