PJSIP Cabeçalho de registro personalizado
Estou tentando configurarTRAG comunicação com um servidor interno (usando a biblioteca PJSIP), no entanto, este servidor requer um campo de cabeçalho personalizado com um valor de cabeçalho especificado para oREGISTRATION
ligar. Por exemplo, chamaremos esse cabeçalho obrigatórioMyHeader
.
Pelo que encontrei, opjsua_acc_add()
função @ adicionará uma conta e a registrará no servidor usando uma estrutura de configuraçã
O parâmetroreg_hdr_list
da estrutura de configuração tem a descrição:
Os cabeçalhos SIP personalizados opcionais a serem colocados na solicitação de registr
O que parece exatamente o que eu preciso, no entanto, parece não ter efeito na chamada em si.
Aqui está o que eu tenho até agora:
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);
Do lado do servidor, não há campos de cabeçalho extras nem nada. E a estrutura usada para definir o cabeçalho pjsua_hdr
) não temvalue
ou campo equivalente, portanto, mesmo que ele tenha criado o cabeçalho, como ele define o valo
Aqu é a referência para a definição da lista de cabeçalhos e oreferênci para a estrutura do cabeçalho.
Editar Encontrei a solução graças a um colega de trabalho:
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);
Isso parece funcionar como esperad