[Live-devel] Late binding fix in 2010.01.15 version not yielding video...
Robert Krakora
rob.krakora at gmail.com
Thu Jan 21 12:42:15 PST 2010
Ross:
No multicast packets are received with the 2010-01-15 version for which you
provided the fix. I looked at the TCP/IP stack source and it appears that
once a socket is bound it cannot be rebound. As a test I commented out the
'bind' code block in the setupDatagramSocket() function in the
"GroupsockHelper.cpp" file and let the changePort() function in the
"NetInterface.cpp" file perform the 'bind' and multicast packets then were
received by VLC and video displayed. I hope this helps and sorry for the
'false' positive on the first go-round.
Best Regards,
--
Rob Krakora
Senior Software Engineer
MessageNet Systems
101 East Carmel Dr. Suite 105
Carmel, IN 46032
(317)566-1677 Ext. 206
(317)663-0808 Fax
On Thu, Jan 21, 2010 at 11:13 AM, Robert Krakora <rob.krakora at gmail.com>wrote:
> My bad,
>
> SO_REUSEADDR allows binding to an address that is in a TIME_WAIT state
> while SO_REUSEPORT allows multiple processes to bind to the same address.
> This has nothing to do with rebinding...I will keep looking...
>
>
> On Thu, Jan 21, 2010 at 10:58 AM, Robert Krakora <rob.krakora at gmail.com>wrote:
>
>> Ross:
>>
>> It looks like kernel 2.6.18-128.1.10.el5 utilized in CentOS 5.3 does not
>> implement SO_REUSEPORT (see commented out SO_REUSEPORT below from "socket.h"
>> file for this kernel and the comment about it's needed implementation in
>> *bold red*). Otherwise I believe your fix would have worked. I did not
>> see an error message on the re-bind code like I would have expected though.
>> I am going to retest and put in some breakpoints.
>>
>> #ifndef _ASM_SOCKET_H
>> #define _ASM_SOCKET_H
>>
>> #include <asm/sockios.h>
>>
>> /* For setsockopt(2) */
>> #define SOL_SOCKET 1
>>
>> #define SO_DEBUG 1
>> #define SO_REUSEADDR 2
>> #define SO_TYPE 3
>> #define SO_ERROR 4
>> #define SO_DONTROUTE 5
>> #define SO_BROADCAST 6
>> #define SO_SNDBUF 7
>> #define SO_RCVBUF 8
>> #define SO_SNDBUFFORCE 32
>> #define SO_RCVBUFFORCE 33
>> #define SO_KEEPALIVE 9
>> #define SO_OOBINLINE 10
>> #define SO_NO_CHECK 11
>> #define SO_PRIORITY 12
>> #define SO_LINGER 13
>> #define SO_BSDCOMPAT 14
>> */* To add :#define SO_REUSEPORT 15 */*
>> #define SO_PASSCRED 16
>> #define SO_PEERCRED 17
>> #define SO_RCVLOWAT 18
>> #define SO_SNDLOWAT 19
>> #define SO_RCVTIMEO 20
>> #define SO_SNDTIMEO 21
>>
>> /* Security levels - as per NRL IPv6 - don't actually do anything */
>> #define SO_SECURITY_AUTHENTICATION 22
>> #define SO_SECURITY_ENCRYPTION_TRANSPORT 23
>> #define SO_SECURITY_ENCRYPTION_NETWORK 24
>>
>> #define SO_BINDTODEVICE 25
>>
>> /* Socket filtering */
>> #define SO_ATTACH_FILTER 26
>> #define SO_DETACH_FILTER 27
>>
>> #define SO_PEERNAME 28
>> #define SO_TIMESTAMP 29
>> #define SCM_TIMESTAMP SO_TIMESTAMP
>>
>> #define SO_ACCEPTCONN 30
>>
>> #define SO_PEERSEC 31
>> #define SO_PASSSEC 34
>>
>> #endif /* _ASM_SOCKET_H */
>>
>>
>> Best Regards,
>>
>> --
>> Rob Krakora
>> Senior Software Engineer
>> MessageNet Systems
>> 101 East Carmel Dr. Suite 105
>> Carmel, IN 46032
>> (317)566-1677 Ext. 206
>> (317)663-0808 Fax
>>
>> On Thu, Jan 21, 2010 at 8:26 AM, Robert Krakora <rob.krakora at gmail.com>wrote:
>>
>>> Ross:
>>>
>>> I will debug this and let you know what is going on. Multicast data was
>>> arriving per Wireshark. However, I did not capture the RTSP traffic...I
>>> cannot see the video as the location is remote. It was bad judgement on my
>>> part to indicate to you that it was working prematurely. I will have
>>> someone at the site set up the camera and I will get you some data today.
>>> Sorry, I have a lot of things on my platter and I rushed to judgement. ;-)
>>>
>>> Best Regards,
>>>
>>> --
>>> Rob Krakora
>>> Senior Software Engineer
>>> MessageNet Systems
>>> 101 East Carmel Dr. Suite 105
>>> Carmel, IN 46032
>>> (317)566-1677 Ext. 206
>>> (317)663-0808 Fax
>>> On Wed, Jan 20, 2010 at 6:19 PM, Ross Finlayson <finlayson at live555.com>wrote:
>>>
>>>> The fix with which you provided me for the multicast destination
>>>>> address embedded in the SETUP response does not appear to be yielding video.
>>>>>
>>>>
>>>> Well, beforehand you told me that it worked OK!
>>>>
>>>> Anyway, the fix was to reimplement the "Socket::changePort()" function
>>>> (in "groupsock/NetInterface.cpp") to call "bind()" (with the new port
>>>> number), rather than closing and then reopening the socket (which is what
>>>> both the old version and your hack did). Could you please figure out why
>>>> the "changePort()" function is not working for you? Unfortunately, I can't
>>>> test this myself, because I don't have server that works the way yours does.
>>>> --
>>>>
>>>> Ross Finlayson
>>>> Live Networks, Inc.
>>>> http://www.live555.com/
>>>> _______________________________________________
>>>> live-devel mailing list
>>>> live-devel at lists.live555.com
>>>> http://lists.live555.com/mailman/listinfo/live-devel
>>>>
>>>
>>>
>>
>
>
> --
> Rob Krakora
> Senior Software Engineer
> MessageNet Systems
> 101 East Carmel Dr. Suite 105
> Carmel, IN 46032
> (317)566-1677 Ext. 206
> (317)663-0808 Fax
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20100121/7511c23f/attachment.html>
More information about the live-devel
mailing list