sip客户端注册超时细节

2018-01-29  本文已影响448人  XDgbh

1、注册信息数据库表。

//源文件sofia.c第2476行。
//将注册信息存入sofia_reg_internal.db数据库的sip_registrations表中。
sql = switch_mprintf("insert into sip_registrations "
                     "(call_id, sip_user, sip_host, presence_hosts, contact, status, rpid, expires,"
                     "user_agent, server_user, server_host, profile_name, hostname, network_ip, network_port, sip_username, sip_realm,"
                     "mwi_user, mwi_host, orig_server_host, orig_hostname, ping_status, ping_count) "
                     "values ('%q','%q','%q','%q','%q','Registered','%q',%ld, '%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q', '%q', %d)",
                     call_id, from_user, from_host, presence_hosts, contact_str, rpid, expires, user_agent, to_user, guess_ip4,
                     profile_name, mod_sofia_globals.hostname, network_ip, network_port, username, realm, mwi_user, mwi_host,
                     orig_server_host, orig_hostname, "Reachable", 0);

2、超时时间。

3、注册信息更新。

4、超时时间和注册时间的关系。

这个秒数x有两种情况:
1)如果用户配置信息中配置了sip-force-expires具体值如100,那么x等于100秒。
2)如果用户配置信息中没配置该expires值,那么就从sip客户端注册时提交的信息中获取expires值,如x-lite sip客户端一般将expires值设为3600秒。那么x等于3600秒。

这个秒数y是指:sip协议源代码中,默认设置的一个安全时间,一般y是60秒。可以防止用户配置信息中sip-force-expires设置的太小,导致频繁检测注册用户是否超时。

若要在源代码中修改,可修改sofia_reg.c源文件中的 超时时间=(long)reg_time + (long)exptime + profile->sip_expires_late_margin 与上面式子一一对应。

5、注册超时

6、用户正常上下线事件通知

以上这些事件需要向freeswitch发送相关api订阅api event plain CUSTOM sofia::register sofia::unregister sofia::expire。收到的事件的正文内容会包含一些用户的信息,比如号码、系统当前时间、超时时间等等。

上一篇下一篇

猜你喜欢

热点阅读