PJSIP自定义注册标题

我尝试设置与内部服务器(使用PJSIP库)的SIP通信,但是,此服务器需要一个自定义标头字段与REGISTRATION调用指定的标头值。 例如,我们将调用这个必需的标题MyHeader

从我发现, pjsua_acc_add()函数将添加一个帐户,并使用configuration结构注册到服务器。

config结构体的参数reg_hdr_list的描述如下:

将可选的自定义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或等价的字段,所以即使它创build了头部,它是如何设置值的?

这里是头列表定义的参考和头结构的参考 。

编辑:我发现解决scheme感谢同事:

  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); 

这似乎按预期工作。

只是在find解决scheme时引用OP,但忘了添加它作为答案:

编辑:我发现解决scheme感谢同事:

 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); 

这似乎按预期工作。