Ross,

I apologize for that. I should have spotted that bug a mile away…
Thanks again for the help.


From: live-devel [mailto:live-devel-boun...@ns.live555.com] On Behalf Of Ross 
Finlayson
Sent: Thursday, January 22, 2015 5:56 PM
To: LIVE555 Streaming Media - development & use
Subject: Re: [Live-devel] Encapsulate PassiveMediaServerSubsession in a derived 
ServerMediaSession

However I am getting errors at runtime (on Windows specifically). I am seeing a 
“BasicTaskScheduler::SingleStep(): select fails: No error socket numbers used 
in the select call: 120(r) 128(r)”.

FYI, these errors are occurring because you have closed two sockets - 
presumably the RTP and RTCP "Groupsock" objects - without also disabling 
background read handling on those sockets.

The problem is probably this code:

        Groupsock rtpGroupsock(env, destinationAddress, rtpPort, ttl);
       rtpGroupsock.multicastSendOnly(); // we're a SSM source
       Groupsock rtcpGroupsock(env, destinationAddress, rtcpPort, ttl);
       rtcpGroupsock.multicastSendOnly(); // we're a SSM source

You have probably put this code in a function, which you call (and return from) 
before calling "doEventLoop()".  The problem with this is that, because these 
"Groupsock" objects are declared on the stack, they are automatically destroyed 
when you leave the function.

To overcome this, create these objects on the heap instead - i.e.,
            Groupsock* rtpGroupsock = new Groupsock(env, destinationAddress, 
rtpPort, ttl);
       rtpGroupsock->multicastSendOnly(); // we're a SSM source
       Groupsock* rtcpGroupsock = new Groupsock(env, destinationAddress, 
rtcpPort, ttl);
       rtcpGroupsock->multicastSendOnly(); // we're a SSM source

Ross Finlayson
Live Networks, Inc.
http://www.live555.com/

_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to