我正在使用opensips
作为透明代理服务器。消息的原始流程如下
Client -------> OpenSips (Invite request)
OpenSips ------------> FS (Invite to Freeswitch)
FS -------------> Opensips (Reply from FreeSwitch)
Opensips ------------------> Client (Reply back to Client)
我正在使用dialog module
保存对话框状态,使用topological_hiding
模块来更改contact header
。它在FreeSwitch
发送BYE
消息之前正常工作。在Freeswitch BYE
,opensips
生成404 not here
响应。
根据opensips
loose_route()
返回false
的配置。 Opensips 从不send BYE
到客户端。
注意:BYE消息与Invite请求具有相同的对话框。
答案 0 :(得分:0)
使用topology_hiding()
时,您必须使用topology_hiding_match()
而非loose_route()
匹配顺序请求。所以,如果你正在做这样的事情:
if (has_totag()) {
if (!loose_route()) {
xlog("cannot match request to a dialog\n");
send_reply("404", "Not found");
}
route(RELAY);
}
你应该把它改成:
if (has_totag()) {
if (!topology_hiding_match()) {
xlog("cannot match request to a dialog\n");
send_reply("404", "Not found");
}
route(RELAY);
}