mirror of https://git.ffmpeg.org/ffmpeg.git
avformat/tcp: TCP Protocol: fix descriptor leak on listen and interrupt
If we try to listen on TCP port and ff_listen() fails on interrupt callback socket (bind) descriptor overwrites and does not closed at all. As a result, we can't rebind to the same port. Reviewed-by: Stephan Holljes <klaxa1337@googlemail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
f600381b79
commit
6a8d58d693
|
@ -132,11 +132,11 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
|
|||
goto fail1;
|
||||
} else if (s->listen == 1) {
|
||||
// single client
|
||||
if ((fd = ff_listen_bind(fd, cur_ai->ai_addr, cur_ai->ai_addrlen,
|
||||
s->listen_timeout, h)) < 0) {
|
||||
ret = fd;
|
||||
if ((ret = ff_listen_bind(fd, cur_ai->ai_addr, cur_ai->ai_addrlen,
|
||||
s->listen_timeout, h)) < 0)
|
||||
goto fail1;
|
||||
}
|
||||
// Socket descriptor already closed here. Safe to overwrite to client one.
|
||||
fd = ret;
|
||||
} else {
|
||||
if ((ret = ff_listen_connect(fd, cur_ai->ai_addr, cur_ai->ai_addrlen,
|
||||
s->open_timeout / 1000, h, !!cur_ai->ai_next)) < 0) {
|
||||
|
|
Loading…
Reference in New Issue