为什么我的 Asterisk 模块中的 on_rx_request 处理程序每次消息缓冲区都是空的?

问题描述 投票:0回答:0

我正在为 Asterisk(版本 18.16.0)编写自定义模块。我定义了一个这样的自定义模块:

static pjsip_module custom_module = {
    .name = { "custom handler", 14 },
    .priority = PJSIP_MOD_PRIORITY_APPLICATION - 1,
    .on_rx_request = inspect_rx_req,
};

我的功能是这样的:

static pj_bool_t inspect_rx_req(pjsip_rx_data *rdata) {
    ast_log(LOG_NOTICE, "Received SIP request: %.*s, Length: %d", (int)rdata->msg_info.len, rdata->msg_info.msg_buf, rdata->msg_info.len);
    ast_log(LOG_NOTICE, "[RX] Request received");

    if (!rdata->msg_info.msg) {
        ast_log(LOG_ERROR, "[RX] Received message is NULL");
        return PJ_FALSE;
    }

    return PJ_FALSE;
}

这是这样注册的:


static int load_module(void)
{
    ast_sip_register_service(&custom_module);
    return AST_MODULE_LOAD_SUCCESS;
}

函数接收到的每个请求都是 0 长度。我尝试了各种优先级,但每次我都收到一条空消息。我查看了 Asterisk 的源代码,看看其他模块是如何处理请求的,我没有发现我正在做的与源代码中已有的有什么区别。

c asterisk pjsip
© www.soinside.com 2019 - 2024. All rights reserved.