[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