Hello,
I've used kamailio 3.2.2, i have rls, simple presence and xcap support working. I've replicated this server into another one in a different domain, but presence between domains is not working. I'm using for presence presence.so, presence_xml.so and presence_mwi.so. In route[WITHINDLG] i have the following lines:
... if (is_method("SUBSCRIBE|NOTIFY") && uri==myself) route(PRESENCE); ...
When NOTIFY from user B at domain B arrives to the server at domain A, the message is not forwarded to the user A, How can i achieve this?
Thank you.
NOTIFYs are in-dialog and should be loose-routed. Verify that loose-routing works fine.
If the clients are behind NAT also verify that Contact headers are rewritten during subscription.
regards Klaus
On 28.02.2012 16:08, Manuel Perez wrote:
Hello,
I've used kamailio 3.2.2, i have rls, simple presence and xcap support working. I've replicated this server into another one in a different domain, but presence between domains is not working. I'm using for presence presence.so, presence_xml.so and presence_mwi.so. In route[WITHINDLG] i have the following lines:
... if (is_method("SUBSCRIBE|NOTIFY") && uri==myself) route(PRESENCE); ...
When NOTIFY from user B at domain B arrives to the server at domain A, the message is not forwarded to the user A, How can i achieve this?
Thank you.
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Thanks for your reply.
This is part of my config file:
request_route { # per request initial checks route(REQINIT);
# NAT detection route(NATDETECT);
# handle requests within SIP dialogs route(WITHINDLG);
### only initial requests (no To tag)
# CANCEL processing if (is_method("CANCEL")) { if (t_check_trans()) t_relay(); exit; }
t_check_trans();
# authentication route(AUTH);
# record routing for dialog forming requests (in case they are routed) # - remove preloaded route headers remove_hf("Route"); if (is_method("INVITE|SUBSCRIBE|NOTIFY")) record_route();
# account only INVITEs if (is_method("INVITE")) { setflag(FLT_ACC); # do accounting }
# dispatch requests to foreign domains route(SIPOUT);
### requests for my local domains
# handle presence related requests route(PRESENCE);
# handle registrations route(REGISTRAR);
if ($rU==$null) { # request with no Username in RURI sl_send_reply("484","Address Incomplete"); exit; }
# dispatch destinations to PSTN route(PSTN);
# user location service route(LOCATION);
route(RELAY); }
route[RELAY] {
# enable additional event routes for forwarded requests # - serial forking, RTP relaying handling, a.s.o. if (is_method("INVITE|SUBSCRIBE|NOTIFY")) { t_on_branch("MANAGE_BRANCH"); t_on_reply("MANAGE_REPLY"); } if (is_method("INVITE")) { t_on_failure("MANAGE_FAILURE"); }
if (!t_relay()) { sl_reply_error(); } exit; }
route[WITHINDLG] { if (has_totag()) { # sequential request withing a dialog should # take the path determined by record-routing if (loose_route()) { if (is_method("BYE")) { setflag(FLT_ACC); # do accounting ... setflag(FLT_ACCFAILED); # ... even if the transaction fails } if ( is_method("ACK") ) { # ACK is forwarded statelessy route(NATMANAGE); } route(RELAY); } else { if ((is_method("SUBSCRIBE| NOTIFY")) && uri == myself) { route(PRESENCE); exit; } if ( is_method("ACK") ) { if ( t_check_trans() ) { # no loose-route, but stateful ACK; # must be an ACK after a 487 # or e.g. 404 from upstream server t_relay(); exit; } else { # ACK without matching transaction ... ignore and discard exit; } } sl_send_reply("404","Not here"); } exit; } }
I'm using loose_route function in WITHINDLG function, presence in the same server works buts with user from another domain I receive duplicate notifys. The request line for this notifys is userB@ip_of_domainB not userB@ip_of_userB like the ones I receive when the two users are in the same domain.
Thanks. Regards.
On Tue, Feb 28, 2012 at 5:22 PM, Klaus Darilion < klaus.mailinglists@pernau.at> wrote:
NOTIFYs are in-dialog and should be loose-routed. Verify that loose-routing works fine.
If the clients are behind NAT also verify that Contact headers are rewritten during subscription.
regards Klaus
On 28.02.2012 16:08, Manuel Perez wrote:
Hello,
I've used kamailio 3.2.2, i have rls, simple presence and xcap support working. I've replicated this server into another one in a different domain, but presence between domains is not working. I'm using for presence presence.so, presence_xml.so and presence_mwi.so. In route[WITHINDLG] i have the following lines:
... if (is_method("SUBSCRIBE|NOTIFY") && uri==myself) route(PRESENCE); ...
When NOTIFY from user B at domain B arrives to the server at domain A, the message is not forwarded to the user A, How can i achieve this?
Thank you.
______________________________**_________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/**cgi-bin/mailman/listinfo/sr-**usershttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Hi Manuel!
With a trace (of SUBSCRIBE and NOTIFY) it is really difficult to understand the problem.
Thus I suggest: Take a look at the SUBSCRIBE request on both Kamailio proxies. Verify that record-route and contact headers are correct.
Then take a look at the NOTIFY also on both servers and verify that the message is correct. If it is correct but routed wrong, check the config on the server which routed wrong.
regards Klaus
On 29.02.2012 16:11, Manuel Perez wrote:
Thanks for your reply.
This is part of my config file:
request_route { # per request initial checks route(REQINIT);
# NAT detection route(NATDETECT);
# handle requests within SIP dialogs route(WITHINDLG);
### only initial requests (no To tag)
# CANCEL processing if (is_method("CANCEL")) { if (t_check_trans()) t_relay(); exit; }
t_check_trans();
# authentication route(AUTH);
# record routing for dialog forming requests (in case they are routed) # - remove preloaded route headers remove_hf("Route"); if (is_method("INVITE|SUBSCRIBE|NOTIFY")) record_route();
# account only INVITEs if (is_method("INVITE")) { setflag(FLT_ACC); # do accounting }
# dispatch requests to foreign domains route(SIPOUT);
### requests for my local domains
# handle presence related requests route(PRESENCE);
# handle registrations route(REGISTRAR);
if ($rU==$null) { # request with no Username in RURI sl_send_reply("484","Address Incomplete"); exit; }
# dispatch destinations to PSTN route(PSTN);
# user location service route(LOCATION);
route(RELAY); }
route[RELAY] {
# enable additional event routes for forwarded requests # - serial forking, RTP relaying handling, a.s.o. if (is_method("INVITE|SUBSCRIBE|NOTIFY")) { t_on_branch("MANAGE_BRANCH"); t_on_reply("MANAGE_REPLY"); } if (is_method("INVITE")) { t_on_failure("MANAGE_FAILURE"); }
if (!t_relay()) { sl_reply_error(); } exit; }
route[WITHINDLG] { if (has_totag()) { # sequential request withing a dialog should # take the path determined by record-routing if (loose_route()) { if (is_method("BYE")) { setflag(FLT_ACC); # do accounting ... setflag(FLT_ACCFAILED); # ... even if the transaction fails } if ( is_method("ACK") ) { # ACK is forwarded statelessy route(NATMANAGE); } route(RELAY); } else { if ((is_method("SUBSCRIBE| NOTIFY")) && uri == myself) { route(PRESENCE); exit; } if ( is_method("ACK") ) { if ( t_check_trans() ) { # no loose-route, but stateful ACK; # must be an ACK after a 487 # or e.g. 404 from upstream server t_relay(); exit; } else { # ACK without matching transaction ... ignore and discard exit; } } sl_send_reply("404","Not here"); } exit; } }
I'm using loose_route function in WITHINDLG function, presence in the same server works buts with user from another domain I receive duplicate notifys. The request line for this notifys is userB@ip_of_domainB not userB@ip_of_userB like the ones I receive when the two users are in the same domain.
Thanks. Regards.
On Tue, Feb 28, 2012 at 5:22 PM, Klaus Darilion <klaus.mailinglists@pernau.at mailto:klaus.mailinglists@pernau.at> wrote:
NOTIFYs are in-dialog and should be loose-routed. Verify that loose-routing works fine. If the clients are behind NAT also verify that Contact headers are rewritten during subscription. regards Klaus On 28.02.2012 16:08, Manuel Perez wrote: Hello, I've used kamailio 3.2.2, i have rls, simple presence and xcap support working. I've replicated this server into another one in a different domain, but presence between domains is not working. I'm using for presence presence.so, presence_xml.so and presence_mwi.so. In route[WITHINDLG] i have the following lines: ... if (is_method("SUBSCRIBE|NOTIFY") && uri==myself) route(PRESENCE); ... When NOTIFY from user B at domain B arrives to the server at domain A, the message is not forwarded to the user A, How can i achieve this? Thank you. _________________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org <mailto:sr-users@lists.sip-router.org> http://lists.sip-router.org/__cgi-bin/mailman/listinfo/sr-__users <http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users>