通Inbound模式連接Freeswitch控制呼叫,有的時(shí)候發(fā)現(xiàn)ESL Client的連接總是發(fā)送消息沒(méi)有回。往往致任務(wù)的超時(shí)。
通過(guò)觀察發(fā)現(xiàn),一般出現(xiàn)這種情況往往是在Freeswitch crash之后。
重現(xiàn)問(wèn)題
根據(jù)這一線索,先嘗試本地復(fù)現(xiàn)該問(wèn)題。
首先,我們?cè)谝慌_(tái)主機(jī)上(192.168.2.108)運(yùn)行Freeswitch,然后我們?cè)诹硗庖慌_(tái)主機(jī)上(192.168.2.133)上運(yùn)行ESL Client
通過(guò)netstat -anp | grep 8021 查看一下當(dāng)前的連接情況。
當(dāng)把Freeswitch重啟后,可見(jiàn)該TCP連接由ESTABLISHED變成了CLOSE WAIT

網(wǎng)絡(luò)連接
但是ELS client的連接還在,此時(shí)如果在client發(fā)送命令的話,client就發(fā)生了crash,然后這個(gè)tcp連接就結(jié)束了。
這個(gè)是c寫的client,可能沒(méi)有保護(hù)一些異常,所以crash了,從而導(dǎo)致了tcp連接徹底釋放。
但是實(shí)際的問(wèn)題現(xiàn)象與這個(gè)稍有不同。 出現(xiàn)問(wèn)題時(shí),沒(méi)有出現(xiàn)CLOSE_WAIT狀態(tài)