Я пытаюсь настроить 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);
Кажется, это работает как ожидалось.