[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