Use MWI in PJSIP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I continue to implements MWI (rfc 3842) and I test with 3 servers 
(Asterisk, Cirpack and OpenSer).
In 3 cases, it doesn't work for 3 different reasons.

1/ Asterisk:
When I send Subscribe request, I receive "200 OK" with "Expires: 0" I 
think it's weird.
Logically, Asterisk should send Notify request, but it doesn't do it. So 
5 seconds (UAC_WAIT_NOTIFY in evsub) after the subscription is destroyed.
If I don't reply to a call, Asterisk sends Notify request, but like 
there is no subscription enabled, pjsip doesn't find module to manage this.

Do you know if asterisk manages rfc 3842 ?
Is it possible to disable the timer with UAC_WAIT_NOTIFY in pjsip ?

2/ Cirpack
When I send Subscribe request, I receive "489 Bad event" message with 
"Allow-Events: dialog"
Do you know if cirpack implements rfc 3842 ?

3/ OpenSer
When I send Subscribe request, I receive "200 OK", and subscription 
seems OK (perhaps no Expires = 0).
But I don't receive Notify request.
Sometimes I receive later Notify request, but pjsip displays this message :
Message Request msg NOTIFY/cseq=1 (rdata0x875c64) from X.X.X.X:5060 was 
dropped/unhandled by any modules

I don't understand why because the subscription is always up.

My implementation is based on presence.c and pjsua_pres.c, and I use 
1.0.x branch

Thanks for your help.

Samuel


Md. Nasir Uddin a ?crit :
> Hi Samuel,
>
> I have done the following steps for MWI:
>
> 1.  Copy mwi.h into include folder
> 2.  Copy mwi.c into source folder
> 3.  Build symbian_ua_gui in GCCE mode.
>
> Then I got three Error :
>
> 1. mwi.c:(.text+0x4c8): undefined reference to 
> `pjsip_mwi_current_notify'  
> 2. mwi.c:(.text+0x514): undefined reference to `pjsip_mwi_notify'
> 3. mwi.c:(.text+0x804): undefined reference to `pjsip_mwi_notify'
>
> After that I have done the following into mwi.c:
>
> static pj_status_t pjsip_mwi_notify( pjsip_evsub *sub,
>                        pjsip_evsub_state state,
>                        const pj_str_t *state_str,
>                        const pj_str_t *reason,
>                        pjsip_tx_data **p_tdata)          
>     {
>         pjsip_mwi *mwi;
>         pjsip_tx_data *tdata;
>         pj_status_t status;
>         PJ_ASSERT_RETURN(sub, PJ_EINVAL);
>         mwi = (pjsip_mwi*) pjsip_evsub_get_mod_data(sub, mod_mwi.id 
> <http://mod_mwi.id>);
>         PJ_ASSERT_ON_FAIL(mwi!=NULL, {return;});
>         status = pjsip_mwi_notify( sub, PJSIP_EVSUB_STATE_TERMINATED,
>                                       NULL, &reason, &tdata);
>            if (status == PJ_SUCCESS)
>             pjsip_mwi_send_request(sub, tdata);
>         pjsip_dlg_inc_lock(mwi->dlg);
>         status = pjsip_evsub_notify( sub, state, state_str, reason, 
> &tdata);
>         if (status != PJ_SUCCESS)
>         goto on_return;
>         *p_tdata = tdata;
>    
>     on_return:
>         pjsip_dlg_dec_lock(mwi->dlg);
>         return status;
>     }
>
> static pj_status_t pjsip_mwi_current_notify( pjsip_evsub *sub,
>                                                 pjsip_tx_data **p_tdata )
>     {
>         pjsip_mwi *mwi;
>         pjsip_tx_data *tdata;
>         pj_status_t status;       
>         PJ_ASSERT_RETURN(sub, PJ_EINVAL);
>         mwi = (pjsip_mwi*) pjsip_evsub_get_mod_data(sub, mod_mwi.id 
> <http://mod_mwi.id>);
>         PJ_ASSERT_ON_FAIL(mwi!=NULL, {return;});
>         pjsip_dlg_inc_lock(mwi->dlg);
>         status = pjsip_evsub_current_notify( sub, &tdata);
>         if (status != PJ_SUCCESS)
>         goto on_return;
>         *p_tdata = tdata;
>        
>     on_return:
>         pjsip_dlg_dec_lock(mwi->dlg);
>         return status;
>     }
>
> Now I didn't get any Error over there in my Application:
>
> But I didn't know how it'll work or What will be the next steps?
> Would you please tell me that I am going to right way and what I have 
> to do for next.
>
> Thanking you
> Nasir
>
> On Sun, May 31, 2009 at 4:08 PM, Samuel Vinson <samuelv at laposte.net 
> <mailto:samuelv at laposte.net>> wrote:
>
>     Hello
>
>     Yes read and implement rfc 3842 (A Message Summary and Message
>     Waiting Indication Event Package for
>     the Session Initiation Protocol (SIP))
>
>     You can look how presence is implemented in pjsip.
>     I began the work, but it's not finished. I'm joining the begin of
>     my works. Like you will see there still are set/get status functions.
>     and after you will need to look pjsua_presence to know how
>     implements subscription step.
>
>     Regards
>
>     Samuel
>
>     Md. Nasir Uddin a ?crit :
>>     Hi All,
>>
>>     Can anyone tell me how to implement MWI using  PJSIP.
>>
>>     Nasir
>>     ------------------------------------------------------------------------
>>
>>     _______________________________________________
>>     Visit our blog: http://blog.pjsip.org
>>
>>     pjsip mailing list
>>     pjsip at lists.pjsip.org <mailto:pjsip at lists.pjsip.org>
>>     http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>       
>
>
>     _______________________________________________
>     Visit our blog: http://blog.pjsip.org
>
>     pjsip mailing list
>     pjsip at lists.pjsip.org <mailto:pjsip at lists.pjsip.org>
>     http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Visit our blog: http://blog.pjsip.org
>
> pjsip mailing list
> pjsip at lists.pjsip.org
> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20090614/bbfeacf3/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mwi.zip
Type: application/zip
Size: 15254 bytes
Desc: not available
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20090614/bbfeacf3/attachment-0001.zip>


[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux