example change bar ios header registration sip pjsip

ios - change - Encabezado de registro personalizado PJSIP



swift uisearchbar (1)

Estoy intentando configurar la comunicación SIP con un servidor interno (utilizando la biblioteca PJSIP), sin embargo, este servidor requiere un campo de encabezado personalizado con un valor de encabezado específico para la llamada de REGISTRATION . Por ejemplo, llamaremos a este encabezado obligatorio MyHeader .

Por lo que he encontrado, la función pjsua_acc_add() agregará una cuenta y la registrará en el servidor usando una estructura de configuración.

El parámetro reg_hdr_list de la estructura config tiene la descripción:

Los encabezados SIP personalizados opcionales que se incluirán en la solicitud de registro.

Que suena exactamente como lo que necesito, sin embargo, no parece tener ningún efecto en la llamada en sí.

Esto es lo que tengo hasta ahora:

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

Desde el lado del servidor, no hay campos de encabezado adicionales ni nada. Y la estructura que se utiliza para definir el encabezado ( pjsua_hdr ) no tiene ningún value o campo equivalente, por lo que incluso si creó el encabezado, ¿cómo establece el valor?

Here está la referencia para la definición de la lista de encabezado y la reference para la estructura del encabezado.

Editar: Encontré la solución gracias a un compañero de trabajo:

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

Esto parece funcionar como se esperaba.


Solo citó el OP cuando encontró la solución , pero olvidó agregarla como respuesta:

Editar: Encontré la solución gracias a un compañero de trabajo:

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

Esto parece funcionar como se esperaba.