<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I am posting this in case someone else runs into this, especially since I found it may not be Mac OSX specific (I was able to duplicate on SUSE although not as much).&nbsp;<div><br></div><div>Both of the following conditions must exist:</div><div>1. You have at least one TCP local extension. In this case, due to Bria, etc. on an iPad, using TCP reduced battery usage since no need to run in background.</div><div>2. FreeSwitch is recycled very quickly, in this case down/up within 30 seconds because it was automated at 2am each day. I needed it due to a long running sofia memory leak on OSX which may be resolved but I need to test.</div><div><br></div><div>Problem: The extension using TCP cause a TIME_WAIT that keeps the 5060 port active (but NOT open) on the TCP stack, in my case it was 30 seconds but I found the time could be different on other platforms. When FreeSwitch comes back up the "internal.xml" profile fails because port 5060 is in use. If FS is brought up AFTER the TIME_WAIT goes away there is no problem, but in my case it was very quick each night to minimize the outage.</div><div><br></div><div>Solution: I changed the OSX plist that auto restarts FS to run a script that starts FS, this makes no difference except a script is more flexible. Rather than use an arbitrary sleep time I check for port 5060 which is more reliable and faster. I tested this many times using different scenarios and all worked. Note I tried to use the "lsof -i TCP:5060" command but it shows only OPEN ports so it won't work.&nbsp;</div><div><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">#!/bin/sh</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">while : ; do</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">&nbsp;&nbsp; a=$(/usr/sbin/netstat -p tcp)</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">&nbsp;&nbsp; if [[ "$a" != *sip* ]] ; then</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">&nbsp;&nbsp; &nbsp; break</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">&nbsp;&nbsp; fi</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">&nbsp;&nbsp; echo "Port 5060 still in use - waiting for it to free up"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">&nbsp;&nbsp; echo "${a}"</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">&nbsp;&nbsp; /bin/sleep 3</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">done</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">/usr/local/freeswitch/bin/freeswitch -nc -nonat</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "># &nbsp; a=$(/usr/sbin/lsof -i TCP:5060)&nbsp; &lt;- only shows open ports</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "># &nbsp; if [ "$a" = "" ] ; then</div></div><div><br></div><div><br><div><br><div><div>On Apr 3, 2012, at 8:53 AM, Mario G wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">For anyone who may run into this see "<span class="Apple-style-span" style="font-size: 12px; "><b>FS shutdown not closing TCP port causes TIME_WAIT problems" for follow up and solution.</b></span><div><div>On Apr 2, 2012, at 1:33 PM, Mario G wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>That's what I was thinking, trying to figure out how now. Will post a solution when I get one.<br><br>On Apr 2, 2012, at 1:28 PM, Anthony Minessale wrote:<br><br><blockquote type="cite"><blockquote type="cite">From what I see, sofia uses the REUSEADDR flag so I will bet its yet<br></blockquote></blockquote><blockquote type="cite">another MAC specific thing.<br></blockquote><blockquote type="cite">I am not really sure what you can do since you tend to find issues<br></blockquote><blockquote type="cite">deep inside libsofia-sip and its portability to OSX.<br></blockquote><blockquote type="cite">Maybe make your restart script sleep a bit?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">libs/sofia-sip/libsofia-sip-ua/tport/tport_type_tcp.c:<br></blockquote><blockquote type="cite">su_setreuseaddr(socket, 1);<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">On Mon, Apr 2, 2012 at 3:13 PM, Mario G &lt;<a href="mailto:mario_fs@mgtech.com">mario_fs@mgtech.com</a>&gt; wrote:<br></blockquote><blockquote type="cite"><blockquote type="cite">If FS is shutdown and started too quickly, the internal profile ip/port stays in use and FS will fail to start it. After searching on the wen I found many references to TIME_WAIT but all fixes were to the program source. So I am wondering if when FS/sofia shuts down they are not releasing the ip/port for internal. If it's true, I found some source changes to solve it. Google "TIME-WAIT" and you'll find lots of good stuff like <a href="http://serverfault.com/questions/329845/how-to-forcibly-close-a-socket-in-time-wait">http://serverfault.com/questions/329845/how-to-forcibly-close-a-socket-in-time-wait</a>. Apparently there is no way to free up the port manually. Help/comments anyone?<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Mario G<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">_________________________________________________________________________<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Professional FreeSWITCH Consulting Services:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="mailto:consulting@freeswitch.org">consulting@freeswitch.org</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="http://www.freeswitchsolutions.com/">http://www.freeswitchsolutions.com</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">FreeSWITCH-powered IP PBX: The CudaTel Communication Server<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="http://www.cudatel.com/">http://www.cudatel.com</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Official FreeSWITCH Sites<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="http://www.freeswitch.org/">http://www.freeswitch.org</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="http://wiki.freeswitch.org/">http://wiki.freeswitch.org</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="http://www.cluecon.com/">http://www.cluecon.com</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">FreeSWITCH-users mailing list<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="mailto:FreeSWITCH-users@lists.freeswitch.org">FreeSWITCH-users@lists.freeswitch.org</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="http://lists.freeswitch.org/mailman/listinfo/freeswitch-users">http://lists.freeswitch.org/mailman/listinfo/freeswitch-users</a><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><a href="http://www.freeswitch.org/">http://www.freeswitch.org</a><br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">-- <br></blockquote><blockquote type="cite">Anthony Minessale II<br></blockquote><blockquote type="cite"><br></blockquote><br></div></blockquote></div></div></blockquote></div><br></div></div></body></html>