El jue., 13 ago. 2020 a las 3:56, Marton Balint (<c...@passwd.hu>) escribió: > > > > On Thu, 13 Aug 2020, Nicolas Sugino wrote: > > > In listener mode the first fd is not closed when libsrt_close() is called > > because it is overwritten by the new accept fd. > > Added the listen_fd to the context to properly close it when libsrt_close() > > is called. > > This fixes trac ticket #8372, right? Add a reference to it to the commit > message. > > > > > Signed-off-by: Nicolas Sugino <nsug...@3way.com.ar> > > --- > > libavformat/libsrt.c | 8 +++++++- > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c > > index 4719ce0d4b..02dab64e36 100644 > > --- a/libavformat/libsrt.c > > +++ b/libavformat/libsrt.c > > @@ -53,6 +53,7 @@ enum SRTMode { > > typedef struct SRTContext { > > const AVClass *class; > > int fd; > > + int listen_fd; > > int eid; > > int64_t rw_timeout; > > int64_t listen_timeout; > > @@ -362,7 +363,7 @@ static int libsrt_set_options_pre(URLContext *h, int fd) > > static int libsrt_setup(URLContext *h, const char *uri, int flags) > > { > > struct addrinfo hints = { 0 }, *ai, *cur_ai; > > - int port, fd = -1; > > + int port, fd = -1, listen_fd = -1; > > SRTContext *s = h->priv_data; > > const char *p; > > char buf[256]; > > @@ -439,6 +440,7 @@ static int libsrt_setup(URLContext *h, const char *uri, > > int flags) > > // multi-client > > if ((ret = libsrt_listen(s->eid, fd, cur_ai->ai_addr, > > cur_ai->ai_addrlen, h, s->listen_timeout)) < 0) > > goto fail1; > > + listen_fd = fd; > > fd = ret; > > } else { > > if (s->mode == SRT_MODE_RENDEZVOUS) { > > @@ -471,6 +473,7 @@ static int libsrt_setup(URLContext *h, const char *uri, > > int flags) > > > > h->is_streamed = 1; > > s->fd = fd; > > + s->listen_fd = listen_fd > -1 ? listen_fd : -1; > > Why not simply: > > s->listen_fd = listen_fd; > > Also note that listen_fd should also be cleaned up in both the failure > paths same way as fd is cleaned up now. > > > > > freeaddrinfo(ai); > > return 0; > > @@ -676,6 +679,9 @@ static int libsrt_close(URLContext *h) > > > > srt_close(s->fd); > > > > + if (s->listen_fd > -1) > > >= 0 to be consistent with other similar code. > > Thanks, > Marton > > > + srt_close(s->listen_fd); > > + > > srt_epoll_release(s->eid); > > > > srt_cleanup(); > > -- > > 2.17.1 > > > > _______________________________________________ > > ffmpeg-devel mailing list > > ffmpeg-devel@ffmpeg.org > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > To unsubscribe, visit link above, or email > > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
Thanks for the comments, I've just sent a v2 including them _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".