Заголовок пользовательской регистрации PJSIP - PullRequest
44 голосов
/ 11 ноября 2011

Я пытаюсь настроить SIP связь с внутренним сервером (используя библиотеку PJSIP), однако для этого сервера требуется настраиваемое поле заголовка с указанным значением заголовка для вызова REGISTRATION.Для примера, мы назовем этот обязательный заголовок MyHeader.

Из того, что я нашел, функция pjsua_acc_add() добавит учетную запись и зарегистрирует ее на сервере, используя структуру config.

Параметр reg_hdr_list структуры config имеет описание:

Необязательные пользовательские заголовки SIP, которые нужно указать в запросе на регистрацию.

Это звучит как то, что мне нужно, однако, похоже, не оказывает никакого влияния насам вызов.

Вот что у меня пока есть:

    pjsua_acc_config cfg;
    pjsua_acc_config_default(&cfg);

    //...Some other config stuff related to the server...

    pjsip_hdr test;
    test.name = pj_str("MyHeader");
    test.sname = pj_str("MyHdr");
    test.type = PJSIP_H_OTHER;
    test.prev = cfg.reg_hdr_list.prev;
    test.next = cfg.reg_hdr_list.next;
    cfg.reg_hdr_list = test;

    pj_status_t status;
    status = pjsua_acc_add(&cfg, PJ_TRUE, &acc_id);

Со стороны сервера нет никаких дополнительных полей заголовка или чего-либо еще.И структура, которая используется для определения заголовка (pjsua_hdr), не имеет value или эквивалентного поля, поэтому, даже если она создала заголовок, как она устанавливает значение?

Здесь является ссылкой для определения списка заголовков и ссылка для структуры заголовка.

Редактировать: Я нашел решение благодаря коллеге:

    struct pjsip_generic_string_hdr CustomHeader;
    pj_str_t name = pj_str("MyHeader");
    pj_str_t value = pj_str("HeaderValue");
    pjsip_generic_string_hdr_init2(&CustomHeader, &name, &value);

    pj_list_push_back(&cfg.reg_hdr_list, &CustomHeader);

Кажется, это работает как ожидалось.

1 Ответ

3 голосов
/ 26 ноября 2015

Просто цитируя ОП как , он нашел решение , но забыл добавить его в качестве ответа:

Редактировать: Я нашел решение благодаря коллеге:

struct pjsip_generic_string_hdr CustomHeader;
pj_str_t name = pj_str("MyHeader");
pj_str_t value = pj_str("HeaderValue");
pjsip_generic_string_hdr_init2(&CustomHeader, &name, &value);

pj_list_push_back(&cfg.reg_hdr_list, &CustomHeader);

Кажется, это работает как ожидалось.

...