Пытаюсь запустить определение присутствия пользователя на сервере OpenSIPS. По идее настройки должны быть аналогичны Kamaillo. В качестве клиента тестирую с помощью linphone. Вроде бы presence и IM и там и там работают через SIMPLE протокол, но тем не менее что-то не срастается, т.е. себя я в linphone вижу как offline.В opensips.cfg всё что касается publish/subscribe я раскомментировал:
.....
/* uncomment this if you want to enable presence server
and comment the next 'if' block
NOTE: uncomment also the definition of route[2] from below */
if( is_method("PUBLISH|SUBSCRIBE"))
route(2);.....
# Presence route
/* uncomment the whole following route for enabling presence
NOTE: do not forget to enable the call of this route from the main
route */
route[2]
{
xlog("RRRRR!");
if (!t_newtran())
{
sl_reply_error();
exit;
};if(is_method("PUBLISH"))
{
xlog("Process PUBLISHING");
if($hdr(Sender)!= NULL)
{
xlog("PUBLISH $hdr(Sender)\n");
handle_publish("$hdr(Sender)");
}
else
handle_publish();t_release();
}
else
if( is_method("SUBSCRIBE"))
{
xlog("Subscribing!\n");
handle_subscribe();
t_release();
}exit;
}
....И как вообще дебажить route-скрипт? Я понавтыкал повсюду эти xlog, но в log-ах я соответсвующих записей не вижу. Что я делаю не так?
Заранее спасибо.
>[оверквотинг удален]
>
> exit;
>}
>....
>
>И как вообще дебажить route-скрипт? Я понавтыкал повсюду эти xlog, но в
>log-ах я соответсвующих записей не вижу. Что я делаю не так?
>
>
>Заранее спасибо.Гм. С дебагом разобрался - действительно xlog (и xdbg) выдают дебажную информацию в лог. Т.е. получается у меня реально до обработки PUBLISH и SUBSCRIBE дело не доходит, где-то пакеты теряются.
>[оверквотинг удален]
>>
>>И как вообще дебажить route-скрипт? Я понавтыкал повсюду эти xlog, но в
>>log-ах я соответсвующих записей не вижу. Что я делаю не так?
>>
>>
>>Заранее спасибо.
>
>Гм. С дебагом разобрался - действительно xlog (и xdbg) выдают дебажную информацию
>в лог. Т.е. получается у меня реально до обработки PUBLISH и
>SUBSCRIBE дело не доходит, где-то пакеты теряются.Вроде запрос SUBSCRIBE доходит до сервера, но ответа от него нет. В логах вот такая хрень (Too Many Hops):
Mar 23 14:41:02 [29435] DBG:core:build_res_buf_from_sip_res: copied size: orig:1
22, new: 27, rest: 344 msg=
SIP/2.0 483 Too Many Hops
Via: SIP/2.0/UDP 192.168.1.237:5060;received=192.168.1.237;rport=5060;branch=z9h
G4bK951895524
From: <sip:mike@192.168.1.237>;tag=1124133299
To: mike@xxxxx.ru <sip:mike@xxxxx.ru>;tag=c97b4d1cb1f3d0da549e06a8
d482ef63.c998
Call-ID: 651168074
CSeq: 20 SUBSCRIBE
Server: OpenSIPS (1.4.4-notls (i386/linux))
Content-Length: 0По идее я настраивал без XCAP сервера, чтобы presence был виден всем:
modparam("presence_xml", "force_active", 1)
modparam("presence", "server_address", "sip:192.168.1.252:5060")
>[оверквотинг удален]
>
> exit;
>}
>....
>
>И как вообще дебажить route-скрипт? Я понавтыкал повсюду эти xlog, но в
>log-ах я соответсвующих записей не вижу. Что я делаю не так?
>
>
>Заранее спасибо.Куда не кинь - повсюду баг на баге сидит и багом погоняет ... Оказался баг в движке (я использовал db_berkeley) при обработке BLOB-а, поэтому PUBLISH не заносился в таблицу presentity (там body - это DB_BLOB), соответсвенно присутствие не показывалось. Патч отослал.
Теперь, видимо, всплыл баг в linphone, поскольку он игнорит входящие NOTIFY с информацией о состоянии контакта ...
Как же это достало :(
>[оверквотинг удален]
>
>Куда не кинь - повсюду баг на баге сидит и багом погоняет
>... Оказался баг в движке (я использовал db_berkeley) при обработке BLOB-а,
>поэтому PUBLISH не заносился в таблицу presentity (там body -
>это DB_BLOB), соответсвенно присутствие не показывалось. Патч отослал.
>
>Теперь, видимо, всплыл баг в linphone, поскольку он игнорит входящие NOTIFY с
>информацией о состоянии контакта ...
>
>Как же это достало :(Вот оно - linphone нагло пишет в дебаг окне :
message: Message sent: (to dest=192.168.1.252:5060)
SIP/2.0 481 Subscription Does Not ExistVia: SIP/2.0/UDP 192.168.1.252;branch=z9hG4bK57d9.74410c6.0
From: <sip:mike@xxxxxxx.ru>;tag=10.23257.1237968995.2
To: <sip:mike@192.168.1.237>;tag=1553095454
Call-ID: 2109597968
CSeq: 3 NOTIFY
User-Agent: Linphone/3.0.0 (eXosip2/3.1.0)
Content-Length: 0
Какое тебе, зараза, "Does Not Exist"!
route[2]
{
xlog("RRRRR!");
if (!t_newtran())
{
sl_reply_error();
exit;
};if(is_method("PUBLISH"))
{
xlog("Process PUBLISHING");
if($hdr(Sender)!= NULL)
{
xlog("PUBLISH $hdr(Sender)\n");
handle_publish("$hdr(Sender)");
}
else
handle_publish();t_release();
}
else
if( is_method("SUBSCRIBE"))
{
xlog("Subscribing!\n");
handle_subscribe();
t_release();
}exit; !!!
}
....Помеченное знаками !!! удалить. Данный оператор завершает транзакцию ...