[mythtv-commits] Ticket #3873: problems with simultaneous record and play with FREEBOX network recorder
MythTV
mythtv at cvs.mythtv.org
Fri Oct 26 01:43:38 UTC 2007
#3873: problems with simultaneous record and play with FREEBOX network recorder
-----------------------+----------------------------------------------------
Reporter: anonymous | Owner: greg
Type: defect | Status: new
Priority: major | Milestone: unknown
Component: mythtv | Version: head
Severity: high | Resolution:
Mlocked: 0 |
-----------------------+----------------------------------------------------
Comment(by Dave <megadave at gmail.com>):
Ok, I think there may be multiple 'network recorders', and apparently I
have been working with each. I think in the recent release, there was both
a 'CRC network recorder', which only took one url, and the 'FreeBOX
network recorder', which took an m3u file. In the current trunk (which is
where I am working from now) there appears to be only one called just
'Network Recorder', and it seems to be supported by the code in
libmythtv/iptv/, and for udp urls, specifically
libmythtv/iptv/iptvfeederudp.cpp, which relys on code in.
libmythlivemedia/groupsock/* for actual UDP socket binding.
The chain of calls seems to pass along the port# to bind, but I cant seem
to find wether the address (host) in the original URL is available
anywhere to the groupsock code, such that it could be modified to bind
that address rather than INADDR_ANY, which it appears to currently be
hardcoded to do in GroupsockHelper.cpp via:
{{{
// By default, use INADDR_ANY for the sending and receiving
netAddressBits SendingInterfaceAddr = INADDR_ANY;
netAddressBits ReceivingInterfaceAddr = INADDR_ANY;
}}}
And then subsequently, with no possibility of
ReceivingInterfaceAddr changing:
{{{
// Note: Windoze requires binding, even if the port number is 0
#if defined(__WIN32__) || defined(_WIN32)
#else
if (port.num() != 0 || ReceivingInterfaceAddr != INADDR_ANY) {
#endif
MAKE_SOCKADDR_IN(name, ReceivingInterfaceAddr, port.num());
if (bind(newSocket, (struct sockaddr*)&name, sizeof name) != 0) {
}}}
I'd really like to change that call to MAKE_SOCKADDR_IN to use the actual
address, and I'm wondering if the actual address contained in the URL is
available at this level, or would it have to be added in the parameters of
the parent functions?
--
Ticket URL: <http://svn.mythtv.org/trac/ticket/3873#comment:6>
MythTV <http://svn.mythtv.org/trac>
MythTV
More information about the mythtv-commits
mailing list