[Live-devel] Lost consideration about SSM on Windows XP with VS6.

Ross Finlayson finlayson at live555.com
Wed Nov 21 09:10:45 PST 2007


>The fourth parameter "forceMulticastOnUnspecified" of 
>RTSPClient::setupMediaSubsession() will guide the client agent to 
>setup a multicast subsession if the IP address is not specified in 
>SDP. The client will then join the multicast group later by calling 
>subsession.setDestinations(fServerAddress) which then invokes 
>fRTPSocket->changeDestinationParameters(destAddr, destPort, 
>destTTL). However, Groupsock::changeDestinationParameters() doesn't 
>consider if it has a source filter address specified in SDP and just 
>try a regular multicast address group leave and join.

I don't follow this.  The "forceMulticastOnUnspecified" hack - which 
is used only if a multicast address was *not* specified in SDP - 
cannot possibly be expected to work for SSM sessions, because, for 
such sessions, the source filter address can only be specified within 
a SDP description.

>
>Hence, I suggest to modify as follows:
>
>Groupsock::changeDestinationParameters(...) {

I have no plans to change the existing code at this time.


>Besides, the ws2tcpip.h provided in a newly installed Visual Studio 
>C++ 6 doesn't define IP_ADD_SOURCE_MEMBERSHIP and 
>IP_DROP_SOURCE_MEMBERSHIP so the following conditional macro in 
>GroupHelper.cpp wiill  define them as wrong values on  Windows.
>
>#ifdef LINUX
>#define IP_ADD_SOURCE_MEMBERSHIP   39
>#define IP_DROP_SOURCE_MEMBERSHIP 40
>#else
>#define IP_ADD_SOURCE_MEMBERSHIP   25   // should be 15 on Windows
>#define IP_DROP_SOURCE_MEMBERSHIP 26  // should be 16 on Windows
>#endif
>
>Therefore, I suggest modify the above as the following:
>
>#ifdef LINUX
>#define IP_ADD_SOURCE_MEMBERSHIP   39
>#define IP_DROP_SOURCE_MEMBERSHIP 40
>#elif defined(WINNT) || defined(_WINNT)
>#define IP_ADD_SOURCE_MEMBERSHIP  15 /* join IP group/source */
>#define IP_DROP_SOURCE_MEMBERSHIP 16 /* leave IP group/source */
>#else
>#define IP_ADD_SOURCE_MEMBERSHIP   25
>#define IP_DROP_SOURCE_MEMBERSHIP 26
>#endif

Can anyone else (preferably someone who doesn't use a @gmail.com 
email address :-) confirm that Windows uses the values 25 and 26 for 
IP_ADD_SOURCE_MEMBERSHIP and IP_DROP_SOURCE_MEMBERSHIP?  (But why 
doesn't WIndows actually define those constants??)


>#define IP_BLOCK_SOURCE           17 /* block IP group/source */
>#define IP_UNBLOCK_SOURCE         18 /* unblock IP group/source */
>#define IP_PKTINFO                19 /* receive packet information for ipv4*/
>#define IP_RECEIVE_BROADCAST      22 /* allow/block broadcast reception */

No, I won't be defining those, because they're not used anywhere in our code.
-- 

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


More information about the live-devel mailing list