sip客戶端注冊(cè)超時(shí)細(xì)節(jié)

1鹰霍、注冊(cè)信息數(shù)據(jù)庫(kù)表辛燥。

  • 當(dāng)有sip客戶端向服務(wù)器注冊(cè)時(shí),在進(jìn)行一番驗(yàn)證注冊(cè)成功后春缕,會(huì)向<.dir.>/freeswitch/db/core.db數(shù)據(jù)庫(kù)的registrations表中以及sofia_reg_internal.db數(shù)據(jù)庫(kù)的sip_registrations表中,存入注冊(cè)信息艘蹋,兩者大部分?jǐn)?shù)據(jù)是相同的锄贼。
//源文件sofia.c第2476行。
//將注冊(cè)信息存入sofia_reg_internal.db數(shù)據(jù)庫(kù)的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咱娶、超時(shí)時(shí)間。

  • core.db的registrations表中强品,重點(diǎn)關(guān)注第五列數(shù)據(jù)(一個(gè)長(zhǎng)整型數(shù)據(jù)),這個(gè)數(shù)據(jù)就是超時(shí)時(shí)間屈糊,也就是指的這個(gè)用戶的注冊(cè)信息如果不更新將在這個(gè)時(shí)間后失效的榛。具體是指——“當(dāng)前系統(tǒng)正常時(shí)間-UNIX時(shí)間紀(jì)元(1970/1/1/00:00:00)”轉(zhuǎn)化成秒數(shù)的長(zhǎng)整型數(shù)字。
  • sofiq_reg_internal.db的sip_registrations表中有上面registrations表中的所有數(shù)據(jù)逻锐,并多有一些其他更詳細(xì)的數(shù)據(jù)夫晌。

3雕薪、注冊(cè)信息更新。

  • 如果在用戶的配置信息如1010.xml中添加一行<variable name="sip-force-expires" value="100"/>晓淀。那么1010這個(gè)sip客戶端就會(huì)在注冊(cè)后的每50~100秒內(nèi)重新再注冊(cè)一次所袁,然后更新注冊(cè)信息中的超時(shí)時(shí)間。

4凶掰、超時(shí)時(shí)間和注冊(cè)時(shí)間的關(guān)系燥爷。

  • 超時(shí)時(shí)間一般是在當(dāng)前注冊(cè)時(shí)間的系統(tǒng)時(shí)間(秒數(shù))的基礎(chǔ)上,加上一定的秒數(shù)x和秒數(shù)y懦窘。
    即:超時(shí)時(shí)間 = 注冊(cè)時(shí)刻系統(tǒng)時(shí)間now + x + y 前翎。

這個(gè)秒數(shù)x有兩種情況:
1)如果用戶配置信息中配置了sip-force-expires具體值如100,那么x等于100秒畅涂。
2)如果用戶配置信息中沒(méi)配置該expires值港华,那么就從sip客戶端注冊(cè)時(shí)提交的信息中獲取expires值,如x-lite sip客戶端一般將expires值設(shè)為3600秒午衰。那么x等于3600秒立宜。

這個(gè)秒數(shù)y是指:sip協(xié)議源代碼中,默認(rèn)設(shè)置的一個(gè)安全時(shí)間臊岸,一般y是60秒橙数。可以防止用戶配置信息中sip-force-expires設(shè)置的太小扇单,導(dǎo)致頻繁檢測(cè)注冊(cè)用戶是否超時(shí)商模。

若要在源代碼中修改,可修改sofia_reg.c源文件中的 超時(shí)時(shí)間=(long)reg_time + (long)exptime + profile->sip_expires_late_margin 與上面式子一一對(duì)應(yīng)蜘澜。

5施流、注冊(cè)超時(shí)

  • sip協(xié)議源代碼中,會(huì)有個(gè)線程循環(huán)檢測(cè)比較當(dāng)前系統(tǒng)時(shí)間和注冊(cè)信息表中的超時(shí)時(shí)間鄙信,如果系統(tǒng)時(shí)間到了超時(shí)時(shí)間瞪醋,這條注冊(cè)信息還沒(méi)有更新超時(shí)時(shí)間,則認(rèn)為這條用戶注冊(cè)信息超時(shí)了(原因可能是對(duì)應(yīng)用戶的sip客戶端斷網(wǎng)或者進(jìn)程非正常結(jié)束)装诡。但是不會(huì)立馬刪除數(shù)據(jù)庫(kù)中的這條數(shù)據(jù)银受,測(cè)試時(shí)發(fā)現(xiàn)在10秒左右之后,再刪除鸦采,并發(fā)送 CUSTOM sofia::expire 事件通知有用戶注冊(cè)超時(shí)宾巍。

6、用戶正常上下線事件通知

  • 正常注冊(cè)上線渔伯。不管是第一次注冊(cè)還是后面每隔多少秒更新注冊(cè)顶霞,都會(huì)發(fā)送一個(gè)注冊(cè)事件CUSTOM Sofia::register。這些注冊(cè)方式都是UDP锣吼。
  • 不正常注冊(cè)上線時(shí)选浑。如果是用戶在斷網(wǎng)或其他原因不正常下線后又恢復(fù)網(wǎng)絡(luò)重新注冊(cè)時(shí)蓝厌,注冊(cè)方式會(huì)是TCP,會(huì)產(chǎn)生3個(gè)事件CUSTOM Sofia::register古徒。
  • 正常取消注冊(cè)下線時(shí)拓提。此為正常手動(dòng)關(guān)閉退出sip客戶端程序,會(huì)產(chǎn)生事件CUSTOM Sofia::unregister隧膘。
  • 不正常下線時(shí)代态。如果因?yàn)樽?cè)超時(shí),然后被刪除數(shù)據(jù)庫(kù)注冊(cè)信息舀寓,會(huì)收到 CUSTOM sofia::expire 事件通知有用戶注冊(cè)超時(shí)胆数。

以上這些事件需要向freeswitch發(fā)送相關(guān)api訂閱api event plain CUSTOM sofia::register sofia::unregister sofia::expire。收到的事件的正文內(nèi)容會(huì)包含一些用戶的信息互墓,比如號(hào)碼必尼、系統(tǒng)當(dāng)前時(shí)間、超時(shí)時(shí)間等等篡撵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末判莉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子育谬,更是在濱河造成了極大的恐慌券盅,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膛檀,死亡現(xiàn)場(chǎng)離奇詭異锰镀,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)咖刃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門泳炉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人嚎杨,你說(shuō)我怎么就攤上這事花鹅。” “怎么了枫浙?”我有些...
    開(kāi)封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵刨肃,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我箩帚,道長(zhǎng)真友,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任紧帕,我火速辦了婚禮锻狗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘焕参。我一直安慰自己轻纪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布叠纷。 她就那樣靜靜地躺著刻帚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涩嚣。 梳的紋絲不亂的頭發(fā)上崇众,一...
    開(kāi)封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音航厚,去河邊找鬼顷歌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛幔睬,可吹牛的內(nèi)容都是我干的眯漩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼麻顶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起骤坐,我...
    開(kāi)封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤米母,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后矫钓,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體要尔,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年新娜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赵辕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡杯活,死狀恐怖匆帚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旁钧,我是刑警寧澤吸重,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站歪今,受9級(jí)特大地震影響嚎幸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寄猩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一嫉晶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦替废、人聲如沸箍铭。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)诈火。三九已至,卻和暖如春状答,著一層夾襖步出監(jiān)牢的瞬間冷守,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工惊科, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拍摇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓馆截,卻偏偏與公主長(zhǎng)得像充活,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子孙咪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容