44

(PJSIP ライブラリを使用して) 内部サーバーとのSIP通信をセットアップしようとしていますが、このサーバーには、REGISTRATION呼び出し用に指定されたヘッダー値を持つカスタム ヘッダー フィールドが必要です。例として、これを必須ヘッダーと呼びますMyHeader

私が見つけたものから、pjsua_acc_add()関数はアカウントを追加し、構成構造体を使用してサーバーに登録します。

reg_hdr_listconfig 構造体のパラメーターには次の説明があります。

登録要求に入れるオプションのカスタム 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);

これは期待どおりに動作するようです。

4

1 に答える 1

4

彼が解決策を見つけたときにOPを引用するだけですが、答えとして追加するのを忘れていました:

編集:同僚のおかげで解決策を見つけました:

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

これは期待どおりに動作するようです。

于 2015-11-26T06:27:19.690 に答える