<p>i used kamailio v4.1 </p>
<p>part of kamailio.cfg <br>
for examples:</p>
<p>disable_tcp=no<br>
auto_aliases=no</p>
<p>port=5085<br>
enable_tls=yes<br>
listen=udp:10.2.45.111:5085<br>
listen=tcp:10.2.45.111:5085<br>
listen=tls:10.2.45.111:5086<br>
listen=tcp:10.2.45.111:5087<br>
listen=tls:10.2.45.111:5088</p>
<p>and i excute<br>
/etc/init.d/kamailio start<br>
it can run</p>
<p>but when on ka v4.4.0 <br>
the same contents in kamailio.cfg but can`t run </p>
<p>both 4.1.x and 4.4.x when i change <br>
disable_tcp=yes <br>
it can run<br>
but only listen on udp 5085 </p>
<p>v4.1 i change disable_tcp=no <br>
it can listen tls,tcp.udp</p>
<p>i use modules: dispatcher <br>
v4.4 i setup a new modules : evapi </p>
<p>why tcp can`t run properly?</p>
<p>`#!KAMAILIO</p>
<p>####### Global Parameters #########</p>
<p>debug=0<br>
log_stderror=no</p>
<p>memdbg=5<br>
memlog=5</p>
<p>log_facility=LOG_LOCAL1<br>
fork=yes<br>
children=5<br>
tcp_children=4</p>
<p>#disable_tcp=no</p>
<p>auto_aliases=no</p>
<p>port=5085</p>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1<br>
enable_tls=yes</p>
<p>listen=udp:10.2.45.111:5085<br>
listen=tcp:10.2.45.111:5085<br>
listen=tls:10.2.45.111:5086<br>
listen=tcp:10.2.45.111:5087<br>
listen=tls:10.2.45.111:5088</p>
<p>sip_warning=no</p>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1<br>
tcp_accept_no_cl=yes<br>
tcp_connection_lifetime=3604<br>
tcp_rd_buf_size=16384<br>
exit_timeout = 300<br>
<a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1</p>
<p>mpath="/home/administrator/kamailio/modules_k/:/home/administrator/kamailio_proxy/lib64/kamailio/modules/"</p>
<p>loadmodule "db_mysql.so"<br>
loadmodule "mi_fifo.so"<br>
loadmodule "kex.so"<br>
loadmodule "tm.so"<br>
loadmodule "tmx.so"<br>
loadmodule "sl.so"<br>
loadmodule "rr.so"<br>
loadmodule "pv.so"<br>
loadmodule "maxfwd.so"<br>
loadmodule "textops.so"<br>
loadmodule "siputils.so"<br>
loadmodule "xlog.so"<br>
loadmodule "sanity.so"<br>
loadmodule "ctl.so"<br>
loadmodule "mi_rpc.so"<br>
loadmodule "acc.so"<br>
loadmodule "dispatcher.so"</p>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1<br>
loadmodule "tls.so"<br>
loadmodule "auth.so"<br>
loadmodule "auth_db.so"<br>
loadmodule "xhttp.so"<br>
loadmodule "websocket.so"<br>
loadmodule "usrloc.so"<br>
loadmodule "nathelper.so"<br>
loadmodule "registrar.so"<br>
<a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1</p>
<p>#added by liqixin<br>
#loadmodule "evapi.so"<br>
#added by liqixin</p>
<h1>----------------- setting module-specific parameters ---------------</h1>
<h1>----- mi_fifo params -----</h1>
<p>modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")</p>
<h1>----- rr params -----</h1>
<h1>add value to ;lr param to cope with most of the UAs</h1>
<p>modparam("rr", "enable_full_lr", 1)</p>
<h1>do not append from tag to the RR (no need for this script)</h1>
<p>modparam("rr", "append_fromtag", 0)</p>
<h1>----- acc params -----</h1>
<p>modparam("acc", "log_flag", 1)<br>
modparam("acc", "failed_transaction_flag", 3)<br>
modparam("acc", "log_extra", <br>
"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd;src_ip=$si")</p>
<h1>----- tm params -----</h1>
<p>modparam("tm", "fr_timer", 2000)<br>
modparam("tm", "fr_inv_timer", 40000)</p>
<h1>----- dispatcher params -----</h1>
<p>modparam("dispatcher", "db_url", "mysql://kamailio:kamailiorw@localhost/kamailio")<br>
modparam("dispatcher", "table_name", "dispatcher")<br>
modparam("dispatcher", "flags", 2)<br>
modparam("dispatcher", "dst_avp", "$avp(AVP_DST)")<br>
modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)")<br>
modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)")</p>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.4<br>
modparam("dispatcher", "sock_avp", "$avp(AVP_SOCK)")<br>
<a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.4</p>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1<br>
modparam("dispatcher", "ds_ping_method", "OPTIONS")<br>
modparam("dispatcher", "ds_ping_from", "sip:kamailio@10.2.45.111")<br>
modparam("dispatcher", "ds_ping_interval", 10)<br>
modparam("dispatcher", "ds_probing_threshold", 3)<br>
modparam("dispatcher", "ds_ping_reply_codes", "class=2;code=400;class=3")<br>
modparam("dispatcher", "ds_probing_mode", 1)<br>
<a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1</p>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1</p>
<h1>----- usrloc params -----</h1>
<p>/* enable DB persistency for location entries */<br>
modparam("usrloc", "db_url", "mysql://kamailio:kamailiorw@localhost/kamailio")<br>
modparam("usrloc", "db_mode", 0)</p>
<p>modparam("registrar", "method_filtering", 1)<br>
modparam("registrar", "max_expires", 3600)<br>
modparam("registrar", "gruu_enabled", 0)<br>
modparam("registrar", "use_path", 1) <br>
modparam("registrar", "path_mode", 1) <br>
modparam("registrar", "path_use_received", 0)<br>
modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)")<br>
modparam("usrloc", "nat_bflag", 6)<br>
<a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1</p>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1</p>
<h1>----- tls params -----</h1>
<p>#modparam("websocket", "cors_mode", 0);<br>
modparam("websocket", "keepalive_mechanism", 0);</p>
<h1>----- tls params -----</h1>
<p>modparam("tls", "config", "/home/administrator/kamailio_proxy/etc/kamailio/tls.cfg")</p>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1</p>
<p>#-------evapi----------<br>
#modparam("evapi", "workers", 2)<br>
#modparam("evapi", "bind_addr", "10.2.45.111:5085")</p>
<p>####### Routing Logic ########</p>
<h1>main request routing logic</h1>
<p>route {</p>
<pre><code>route(REQINIT);
#4.1
if (nat_uac_test(64)) {
# Do NAT traversal stuff for requests from a WebSocket
# connection - even if it is not behind a NAT!
# This won't be needed in the future if Kamailio and the
# WebSocket client support Outbound and Path.
force_rport();
fix_nated_register();
add_contact_alias();
}
if (is_method("CANCEL"))
{
if (t_check_trans())
t_relay();
exit;
}
#4.1
route(WITHINDLG);
</code></pre>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.4</p>
<h1>if (is_method("CANCEL"))</h1>
<h1>{</h1>
<h1>if (t_check_trans())</h1>
<h1>t_relay();</h1>
<h1>exit;</h1>
<h1>}</h1>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.4</p>
<pre><code>t_check_trans();
</code></pre>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.4</p>
<h1>remove_hf("Route");</h1>
<h1>if (is_method("INVITE|SUBSCRIBE"))</h1>
<h1>record_route();</h1>
<h1>if (is_method("INVITE"))</h1>
<h1>{</h1>
<h1>setflag(1); # do accounting</h1>
<h1>}</h1>
<h1>route(PRESENCE);</h1>
<h1>route(REGISTRAR);</h1>
<h1>if ($rU==$null)</h1>
<h1>{</h1>
<pre><code> # request with no Username in RURI
</code></pre>
<h1>sl_send_reply("484","Address Incomplete");</h1>
<h1>exit;</h1>
<h1>}</h1>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.4</p>
<pre><code>route(DISPATCH);
</code></pre>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1<br>
route(RELAY);<br>
<a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1</p>
<p>}</p>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1 xlog <br>
route[RELAY] {<br>
if (!t_relay()) {<br>
sl_reply_error();<br>
}<br>
exit;<br>
}<br>
#---4.1---</p>
<h1>Per SIP request initial checks</h1>
<p>route[REQINIT] {<br>
<a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.4<br>
if (!mf_process_maxfwd_header("10")) {<br>
sl_send_reply("483","Too Many Hops");<br>
exit;<br>
}<br>
<a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.4</p>
<pre><code>if(!sanity_check("1511", "7"))
{
xlog("Malformed SIP message from $si:$sp\n");
exit;
}
</code></pre>
<p>}</p>
<h1>Handle requests within SIP dialogs</h1>
<p>route[WITHINDLG] {<br>
if (has_totag()) {</p>
<pre><code> if (loose_route()) {
if (is_method("BYE")) {
setflag(1); # do accounting ...
setflag(3); # ... even if the transaction fails
}
#4.1
# if ($du == "") {
# handle_ruri_alias();
# }
#4.1
route(RELAY);
} else {
#4.4
if (is_method("SUBSCRIBE") && uri == myself) {
# in-dialog subscribe requests
route(PRESENCE);
exit;
}
#4.4
if ( is_method("ACK") ) {
if ( t_check_trans() ) {
t_relay();
exit;
} else {
exit;
}
}
sl_send_reply("404","Not here");
#4.1 if ( is_method("ACK") ) {
# if ( t_check_trans() ) {
# t_relay();
# exit;
# } else {
# exit;
# }
# }
# sl_send_reply("404","Not here");
}
#4.1 route(RELAY);
exit;
}
</code></pre>
<p>}</p>
<h1>Handle SIP registrations 4.4</h1>
<p>route[REGISTRAR] {<br>
if(!is_method("REGISTER"))<br>
return;<br>
sl_send_reply("404", "No registrar");<br>
exit;<br>
}</p>
<h1>Presence server route 4.4</h1>
<p>route[PRESENCE] {<br>
if(!is_method("PUBLISH|SUBSCRIBE"))<br>
return;</p>
<pre><code>sl_send_reply("404", "Not here");
exit;
</code></pre>
<p>}</p>
<h1>Dispatch requests-------4.4</h1>
<h1>route[DISPATCH] {</h1>
<pre><code># round robin dispatching on gateways group '1'
</code></pre>
<h1>if(!ds_select_dst("1", "4"))</h1>
<h1>{</h1>
<h1>send_reply("404", "No destination");</h1>
<h1>exit;</h1>
<h1>}</h1>
<h1>xlog("L_DBG", "--- SCRIPT: going to <$ru> via <$du>\n");</h1>
<h1>t_on_failure("RTF_DISPATCH");</h1>
<h1>route(RELAY);</h1>
<h1>exit;</h1>
<h1>}</h1>
<h1>Dispatch requests-------4.4</h1>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1----------------dispatch</p>
<h1>Dispatch requests</h1>
<p>route[DISPATCH] {<br>
# round robin dispatching on gateways group '1'<br>
if(is_method("REGISTER")){<br>
if(ds_select_dst("1", "0"))<br>
{<br>
loose_route();<br>
# route(RELAY);<br>
}<br>
else<br>
{<br>
send_reply("404", "No destination");<br>
exit;<br>
}<br>
}</p>
<pre><code>else if (is_method("INVITE")) {
if ($du == "") {
if (!handle_ruri_alias()) {
xlog("L_ERR", "Bad alias <$ru>\n");
sl_send_reply("400", "Bad Request");
exit;
}
}
$avp(route)=$(hdr(Route)[0]);
$avp(LastRouteParam)=$(avp(route){param.count})-1;
if($(avp(route){param.name,$avp(LastRouteParam)})=="fccs>"){
#xlog("the method invite from sipserver \n");
loose_route();
if( $(ru{param.value,transport}) == "TCP"||$(ru{param.value,transport}) == "tcp" ){
record_route_preset("10.2.45.111:5085;transport=tcp","10.2.45.111:5085");
}
else if( $(ru{param.value,transport}) == "TLS"||$(ru{param.value,transport}) == "tls" ){
record_route_preset("10.2.45.111:5086;transport=tls","10.2.45.111:5085");
}
else if( $(ru{param.value,transport}) == "WS"||$(ru{param.value,transport}) == "ws" ){
record_route_preset("10.2.45.111:5087;transport=ws","10.2.45.111:5085");
}
else if( $(ru{param.value,transport}) == "WSS"||$(ru{param.value,transport}) == "ws" ){
record_route_preset("10.2.45.111:5088;transport=wss","10.2.45.111:5085");
}
else{
record_route_preset("10.2.45.111:5085","10.2.45.111:5085");
}
route(RELAY);
}
else{
if (ds_select_dst("1", "6")) {
#xlog("the first invite load balance \n");
if(proto==TCP){
record_route_preset("10.2.45.111:5085","10.2.45.111:5085;transport=tcp");
}
else if(proto==TLS){
record_route_preset("10.2.45.111:5085","10.2.45.111:5086;transport=tls");
}
else if(proto==WS){
record_route_preset("10.2.45.111:5085","10.2.45.111:5087;transport=ws");
}
else if(proto==WSS){
record_route_preset("10.2.45.111:5085","10.2.45.111:5088;transport=wss");
}
else{
record_route_preset("10.2.45.111:5085","10.2.45.111:5085");
}
loose_route();
route(RELAY);
}
else{
send_reply("503","Invite Load_balance Service Unavailable");
exit;
}
}
}
else if(is_method("MESSAGE")||is_method("REFER")||is_method("PUBLISH")||is_method("SUBSCRIBE")||is_method("NOTIFY")){
$avp(route2)=$(hdr(Route)[0]);
$avp(LastRouteParam2)=$(avp(route){param.count})-1;
if($(avp(route2){param.name,$avp(LastRouteParam2)})=="fccs>"){
loose_route();
route(RELAY);
}
else{
if(ds_select_dst("1", "0"))
{
loose_route();
# route(RELAY);
}
else
{
send_reply("404", "No destination");
exit;
}
}
}
else{
send_reply("400","method not defined \n");
}
xlog("L_DBG", "--- SCRIPT: going to <$ru> via <$du>\n");
t_on_failure("RTF_DISPATCH");
return;
</code></pre>
<p>}</p>
<p>#----------------4.1 dispatch</p>
<h1>Sample failure route ----4.4</h1>
<p>#failure_route[RTF_DISPATCH] {</p>
<h1>if (t_is_canceled()) {</h1>
<h1>exit;</h1>
<h1>}</h1>
<pre><code># next DST - only for 500 or local timeout
</code></pre>
<h1>if (t_check_status("500")</h1>
<h1>or (t_branch_timeout() and !t_branch_replied()))</h1>
<h1>{</h1>
<h1>if(ds_next_dst())</h1>
<h1>{</h1>
<h1>t_on_failure("RTF_DISPATCH");</h1>
<h1>route(RELAY);</h1>
<h1>exit;</h1>
<h1>}</h1>
<h1>}</h1>
<h1>}</h1>
<h1>Sample failure route ----4.4</h1>
<h1>Sample failure route</h1>
<p>failure_route[RTF_DISPATCH] {<br>
if (t_is_canceled()) {<br>
exit;<br>
}<br>
# next DST - only for 500 or local timeout<br>
if (t_check_status("500")<br>
or (t_branch_timeout() and !t_branch_replied()))<br>
{<br>
if(ds_next_dst())<br>
{<br>
t_on_failure("RTF_DISPATCH");<br>
route(RELAY);<br>
exit;<br>
}<br>
<a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1<br>
ds_mark_dst("ip"); # set to inactive and probing<br>
<a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1<br>
}<br>
}</p>
<p><a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1<br>
onreply_route {<br>
if (nat_uac_test(64)) {<br>
# Do NAT traversal stuff for replies to a WebSocket connection<br>
# - even if it is not behind a NAT!<br>
# This won't be needed in the future if Kamailio and the<br>
# WebSocket client support Outbound and Path.<br>
add_contact_alias();<br>
}<br>
}<br>
<a href="https://github.com/kamailio/kamailio/pull/4" class="issue-link js-issue-link" data-url="https://github.com/kamailio/kamailio/issues/4" data-id="49856885" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#4</a>.1</p>
<p>event_route[xhttp:request] {<br>
set_reply_close();<br>
set_reply_no_connect();<br>
#set_forward_close();<br>
#set_forward_no_connect();<br>
#t_relay();<br>
if ($Rp != 5087 && $Rp != 5088) <br>
{<br>
xlog("L_WARN", "HTTP request received on $Rp\n");<br>
xhttp_reply("403", "Forbidden", "", "");<br>
exit;<br>
}</p>
<pre><code>xlog("L_DBG", "HTTP Request Received\n");
if ($hdr(Upgrade)=~"websocket"
&& $hdr(Connection)=~"Upgrade"
&& $rm=~"GET") {
#xlog("websocket upgrade ok\n");
# Validate Host - make sure the client is using the correct
# alias for WebSockets
if ($hdr(Host) == $null || !is_myself("sip:" + $hdr(Host))) {
xlog("L_WARN", "Bad host $hdr(Host)\n");
xhttp_reply("403", "Forbidden", "", "");
exit;
}
# Optional... validate Origin - make sure the client is from an
# authorised website. For example,
#
# if ($hdr(Origin) != "http://communicator.MY_DOMAIN"
# && $hdr(Origin) != "https://communicator.MY_DOMAIN") {
# xlog("L_WARN", "Unauthorised client $hdr(Origin)\n");
# xhttp_reply("403", "Forbidden", "", "");
# exit;
# }
# Optional... perform HTTP authentication
# ws_handle_handshake() exits (no further configuration file
# processing of the request) when complete.
if (ws_handle_handshake())
{
# Optional... cache some information about the
# successful connection
exit;
}
}
#route(RELAY);
xhttp_reply("404", "Http Not Found", "", "");
</code></pre>
<p>}</p>
<p>event_route[websocket:closed] {<br>
xlog("L_INFO", "WebSocket connection from $si:$sp has closed\n");<br>
}</p>
<p>#added by liqixin<br>
#event_route[evapi:connection-new] {</p>
<h1>xlog("new connection from $evapi(srcaddr):$evapi(srcport)\n");</h1>
<p>#}</p>
<p>#event_route[evapi:connection-closed] {</p>
<h1>xlog("connection closed by $evapi(srcaddr):$evapi(srcport)\n");</h1>
<p>#}<br>
#added by liqixin`</p>
<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly or <a href="https://github.com/kamailio/kamailio/issues/585">view it on GitHub</a><img alt="" height="1" src="https://github.com/notifications/beacon/AF36ZcIDZj_2FGxQr7E4ZTcRT-MHHpJjks5p7wcLgaJpZM4IQpjm.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
<link itemprop="url" href="https://github.com/kamailio/kamailio/issues/585"></link>
<meta itemprop="name" content="View Issue"></meta>
</div>
<meta itemprop="description" content="View this Issue on GitHub"></meta>
</div>