[vlc-devel] Fixed TCP handle leak on failed attempt to open network stream
tom245292 at hushmail.me
tom245292 at hushmail.me
Wed Jan 20 16:14:23 CET 2010
Rémi,
Thanks. You were right about the problem being in
src/misc/objects.c . I believe that the leak was actually caused by
the position of the WIN32 specific winsock code (pipe() + def
statements) that was located BELOW vlc_object_destroy(). These
defined the close() statement as clocksocket() for WIN32. However,
because they are defined AFTER vlc_object_destroy(), the close()
statements have a different meaning inside vlc_object_destroy()
itself. Consequently closesocket() doesn't get called and the two
pipe sockets get left open.
To fix this I've moved the definition for vlc_object_destroy to
BELOW the WIN32 specific winsock code. This now allows
vlc_object_destroy() to call closesocket() and thus cleans up the
connections.
I have performed a preliminary build to confirm that this fixes the
leak on Windows XP. I will perform more vigorous testing to ensure
that there are no side effects later on.
As I'm completly new to VLC development, could somebody please
check that I've got this bugfix right ?
Thanks again,
Tom
On Wed, 20 Jan 2010 12:59:44 +0000 Rémi Denis-Courmont
<remi at remlab.net> wrote:
>----- Message d'origine -----
>> I am searching through VLC's source code to try and find where
>> these connections are left open. Any help or advice would be
>> greatly appreciated.
>
>For HTTP, modules/access/http.c, for RTSP
>moduled/demux/live555.cpp and the underlying live555 library.
>
>> Example command line: "c:\program files\VideoLan\vlc\vlc.exe
>> rtsp:\\badURL".
>
>If that fails, even with an invalid domain name, it sounds more
>like a problem in the "waitpipe" in src/misc/objects.c.
>
>--
>Rémi
More information about the vlc-devel
mailing list