Здравствуйте! Подскажите пожалуйста, как правильно отвечать на запрос телефона «nua_i_register»? Сейчас отвечаю так
nua_respond(SAPP.nh, SIP_200_OK, NUTAG_WITH_THIS(SAPP.nua), TAG_END());
где
struct SofiaApp {
int status;
char const *phrase;
nua_t *nua;
nua_magic_t *magic;
nua_handle_t *nh;
nua_hmagic_t *hmagic;
sip_t const *sip;
tagi_t tags[];
};
struct SofiaApp SAPP;
Телефон присылает запрос, я отвечаю, но телефон опять присылает такой же запрос, будто он не получил или не понял ответ. Телефон — Grandstream GXP1405. Раньше был телефон D-Link DPH-150SE, с ним было всё нормально (прислал запрос — получил ответ и больше регистрацию не запрашивает).
Здравствуйте, jockerface, Вы писали:
J>Телефон присылает запрос, я отвечаю, но телефон опять присылает такой же запрос, будто он не получил или не понял ответ. Телефон — Grandstream GXP1405. Раньше был телефон D-Link DPH-150SE, с ним было всё нормально (прислал запрос — получил ответ и больше регистрацию не запрашивает).
IP телефон Grandstream GXP1405 с двумя линиями
может быть тупо, еще и вторым аккаунтом логинится?
Здравствуйте, Stanislaw K, Вы писали:
SK>Здравствуйте, jockerface, Вы писали:
J>>Телефон присылает запрос, я отвечаю, но телефон опять присылает такой же запрос, будто он не получил или не понял ответ. Телефон — Grandstream GXP1405. Раньше был телефон D-Link DPH-150SE, с ним было всё нормально (прислал запрос — получил ответ и больше регистрацию не запрашивает).
SK>IP телефон Grandstream GXP1405 с двумя линиями
SK>может быть тупо, еще и вторым аккаунтом логинится?
Второй аккаунт отключен...
Здравствуйте, jockerface, Вы писали:
J>>>Телефон присылает запрос, я отвечаю, но телефон опять присылает такой же запрос, будто он не получил или не понял ответ. Телефон — Grandstream GXP1405. Раньше был телефон D-Link DPH-150SE, с ним было всё нормально (прислал запрос — получил ответ и больше регистрацию не запрашивает).
SK>>IP телефон Grandstream GXP1405 с двумя линиями
SK>>может быть тупо, еще и вторым аккаунтом логинится?
J>Второй аккаунт отключен...
Это же грандстрим. "забей" во второй аккаунт "левые" данные, достаточно ввести несуществующий адрес сервера, типа 127.0.0.232.
Я имел дело с 24 портовыми шлюзами, там оно
иногда, некоторые порты по три раза регестрировало. Потому что у этих портов все три профиля заполнены, а активен был только один профиль естественно.
При чем поведение разных экземпляров зависело от версии... железа. Верси ПО значения не имела.
Во второй аккаунт забил левак.
Всё то же самое.
Причем, если я делаю INVITE на телефон, INVITE проходит, и телефон отвечает на него — соединение устанавливается, даже кодек из SDP верно определяется...
Пока не знаю даже, как с этим быть.
Может в настройках аппарата нужно параметр хитрый какой-то задать...
Здравствуйте, jockerface, Вы писали:
J>Здравствуйте! Подскажите пожалуйста, как правильно отвечать на запрос телефона «nua_i_register»? Сейчас отвечаю так
J>J>nua_respond(SAPP.nh, SIP_200_OK, NUTAG_WITH_THIS(SAPP.nua), TAG_END());
J>
Попробуйте сначала высылать "100 TRYING", а затем "200 OK". Плюс не помешает пример конкретных SIP сообщений между регистраром (это Вы, верно?) и телефоном.
J>Телефон присылает запрос, я отвечаю, но телефон опять присылает такой же запрос, будто он не получил или не понял ответ. Телефон — Grandstream GXP1405. Раньше был телефон D-Link DPH-150SE, с ним было всё нормально (прислал запрос — получил ответ и больше регистрацию не запрашивает).
Ну, DLink-то был простенький, из бюджетного ряда, наверное? У них очень упрощённая внутренняя state machine — уже сталкивался на опросе маршрутизаторов по UPnP. То, что успешно жевал DLink, оказывалось недостаточно для других маршрутизаторов (тот же NetGear etc), тупо не все шаги полагаемого message flow проверяются.
Upd: А, и ещё насчёт авторизации надо бы покурить: как Вы аутентифицируете клиента? Может, телефон во втором REGISTER отдаёт расширенный запрос со своими кредами, и надо бы сперва ответить "401 AUTH CHALLENGE"? Гляньте тут примеров:
http://www.ietf.org/proceedings/51/I-D/draft-ietf-sip-call-flows-05.txt