<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><blockquote type="cite"><div>I have a similar use case in which the application has to start and stop the OnDemandRTSPServer before the EOF without the process being killed.</div></blockquote><div><br></div>Why?  It would be much better to just leave the server running, but add/remove "ServerMediaSubsession" objects as appropriate.</div><div><br></div><div><br><blockquote type="cite"><div>I am using the code of h264ESVideoTest of testOnDemandRTSPServer</div>
<div><br></div><div>To stop the server i set the watchVariable to a non null value. </div><div>when the  doEventLoop(&watchVariable); returns</div><div><br></div><div>I am doing the following. </div><div>      rtspServer->removeServerMediaSession(sms);</div>
<div><div>      delete sms;</div><div>      env->reclaim();</div><div>      delete scheduler;</div></div><div><br></div><div>Next time when I start the server, port binding is failing. </div><div>Anything I am missing here ?</div></blockquote><div><br></div>A lot, unfortunately.</div><div><br></div><div>First, after you call "removeServerMediaSubsession(sms)", you *must not* then do "delete sms" (or "Medium::close(sms)"), because that will cause the object to be deleted twice.</div><div><br></div><div>Second, you shouldn't reclaim the "UsageEnvironment" object, unless you first delete all of the objects that use it.  In particular, you must first do</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>Medium::close(rtspServer);</div><div>but note that if you do that, then this will automatically remove all "ServerMediaSession" objects, so you won't need to do that yourself.</div><div><br></div><div>But once again: Rather than doing all this, why not just exit() and then recreate a new process?  This would be much simpler.</div><br><br><div apple-content-edited="true">
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; ">Ross Finlayson<br>Live Networks, Inc.<br><a href="http://www.live555.com/">http://www.live555.com/</a></span></span>
</div>
<br></body></html>