The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"OpenSIPS - presence & IM"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Др. сетевые сервисы / Linux)
Изначальное сообщение [ Отслеживать ]

"OpenSIPS - presence & IM"  +/
Сообщение от geekkoo (ok) on 19-Мрт-09, 17:35 
Пытаюсь запустить определение присутствия пользователя на сервере 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-ах я соответсвующих записей не вижу. Что я делаю не так?

Заранее спасибо.

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "OpenSIPS - presence & IM"  +/
Сообщение от geekkoo (ok) on 20-Мрт-09, 13:11 
>[оверквотинг удален]
>
>        exit;
>}
>....
>
>И как вообще дебажить route-скрипт? Я понавтыкал повсюду эти xlog, но в
>log-ах я соответсвующих записей не вижу. Что я делаю не так?
>
>
>Заранее спасибо.

Гм. С дебагом разобрался - действительно xlog (и xdbg) выдают дебажную информацию в лог. Т.е. получается у меня реально до обработки PUBLISH и SUBSCRIBE дело не доходит, где-то пакеты теряются.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "OpenSIPS - presence & IM"  +/
Сообщение от geekkoo (ok) on 23-Мрт-09, 14:47 
>[оверквотинг удален]
>>
>>И как вообще дебажить 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")


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "OpenSIPS - presence & IM"  +/
Сообщение от geekkoo (ok) on 25-Мрт-09, 11:40 
>[оверквотинг удален]
>
>        exit;
>}
>....
>
>И как вообще дебажить route-скрипт? Я понавтыкал повсюду эти xlog, но в
>log-ах я соответсвующих записей не вижу. Что я делаю не так?
>
>
>Заранее спасибо.

Куда не кинь - повсюду баг на баге сидит и багом погоняет ... Оказался баг в движке (я использовал db_berkeley) при обработке BLOB-а, поэтому PUBLISH не заносился в таблицу presentity  (там body - это DB_BLOB), соответсвенно присутствие не показывалось. Патч отослал.

Теперь, видимо, всплыл баг в linphone, поскольку он игнорит входящие NOTIFY с информацией о состоянии контакта ...

Как же это достало :(

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "OpenSIPS - presence & IM"  +/
Сообщение от geekkoo (ok) on 25-Мрт-09, 11:43 
>[оверквотинг удален]
>
>Куда не кинь - повсюду баг на баге сидит и багом погоняет
>... Оказался баг в движке (я использовал 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 Exist

Via: 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"!

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

5. "OpenSIPS - presence & IM"  +/
Сообщение от dmitriy email(??) on 21-Июн-10, 18:41 
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; !!!
}
....

Помеченное знаками !!! удалить. Данный оператор завершает транзакцию ...


Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2020 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру