Hi Marlon,
Thank you for reporting the bug. It was fixed in the svn. This line was
added to initialize jd to the value of jc->c_dialogs as you expected:
jd = jc->c_dialogs;
just before this piece of code:
if (jd)
{
if (!eXosip_list_remove_element(jd->d_inc_trs, tr))
return 0;
if (!eXosip_list_remove_element(jd->d_out_trs, tr))
return 0;
OSIP_TRACE(osip_trace(__FILE__,__LINE__,OSIP_INFO1,NULL,
"eXosip: No information.\n"));
}
Regards,
Minh
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:wengophone-
> [EMAIL PROTECTED] On Behalf Of Marlon Mircevski
> Sent: jeudi 21 septembre 2006 09:44
> To: [email protected]
> Subject: [Wengophone-devel] Re: eXosip weird code
>
> Marlon Mircevski wrote:
> > Can someone take a look at wifo\eXosip\src\misc.c, line 55 in func
> > eXosip_remove_transaction_from_call(osip_transaction_t *tr,
> > eXosip_call_t *jc)
> > i cannot understand why eXosip_dialog_t *jd is used without having
> > been initialized, maybe it's value can be from jc->c_dialogs?
> >
> Just take a look at old eXosip code, i think the following is missed:
> ---
> for (jd = jc->c_dialogs; jd != NULL; jd = jd->next)
> {
> int pos = 0;
> while (!osip_list_eol (jd->d_inc_trs, pos))
> {
> osip_transaction_t *inc_tr = osip_list_get (jd->d_inc_trs, pos);
> if (inc_tr == tr)
> {
> osip_list_remove (jd->d_inc_trs, pos);
> return 0;
> }
> pos++;
> }
> }
> ---
> and
> ---
> for (jd = jc->c_dialogs; jd != NULL; jd = jd->next)
> {
> int pos = 0;
> while (!osip_list_eol (jd->d_out_trs, pos))
> {
> osip_transaction_t *out_tr = osip_list_get (jd->d_out_trs, pos);
> if (out_tr == tr)
> {
> osip_list_remove (jd->d_out_trs, pos);
> return 0;
> }
> pos++;
> }
> }
> ---
>
> Marlon
>
> _______________________________________________
> Wengophone-devel mailing list
> [email protected]
> http://dev.openwengo.com/mailman/listinfo/wengophone-devel
_______________________________________________
Wengophone-devel mailing list
[email protected]
http://dev.openwengo.com/mailman/listinfo/wengophone-devel