On Tue, Jul 21, 2015 at 11:09 AM, Nicolas George <geo...@nsup.org> wrote: > Le tridi 3 thermidor, an CCXXIII, Stephan Holljes a écrit : >> From 12d9a1e1c511615275260977941aff3067f103ea Mon Sep 17 00:00:00 2001 >> From: Stephan Holljes <klaxa1...@googlemail.com> >> Date: Tue, 21 Jul 2015 06:10:25 +0200 >> Subject: [PATCH 4/8] lavf/tcp: add tcp_accept >> >> Signed-off-by: Stephan Holljes <klaxa1...@googlemail.com> >> --- >> libavformat/tcp.c | 19 +++++++++++++++++++ >> 1 file changed, 19 insertions(+) >> >> diff --git a/libavformat/tcp.c b/libavformat/tcp.c >> index f24cad2..9f8c2a0 100644 >> --- a/libavformat/tcp.c >> +++ b/libavformat/tcp.c >> @@ -19,6 +19,7 @@ >> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 >> USA >> */ >> #include "avformat.h" >> +#include "libavutil/avassert.h" >> #include "libavutil/parseutils.h" >> #include "libavutil/opt.h" >> #include "libavutil/time.h" >> @@ -163,6 +164,23 @@ static int tcp_open(URLContext *h, const char *uri, int >> flags) >> return ret; >> } >> >> +static int tcp_accept(URLContext *s, URLContext **c) >> +{ >> + TCPContext *sc = s->priv_data; >> + TCPContext *cc; >> + int ret; >> + av_assert0(sc->listen); > >> + if ((ret = ffurl_alloc(c, s->filename, s->flags & (AVIO_FLAG_READ_WRITE >> | AVIO_FLAG_DIRECT), >> + &s->interrupt_callback)) < 0) > > What about NONBLOCK? If the client is non-blocking, the application will > probably also want non-blocking clients.
Filtering s->flags was suggested in an earlier version of this patch (you said NONBLOCK wouldn't work?), but I'll gladly remove the filtering and just pass s->flags. > > AFAICS, currently, all the flags are relevant to clients, you can probably > pass s->flags entirely, and leave the issue to the person who introduce > server-specific flags. > >> + return ret; >> + cc = (*c)->priv_data; >> + ret = ff_accept(sc->fd, sc->listen_timeout, s); >> + if (ret < 0) >> + return ff_neterrno(); >> + cc->fd = ret; >> + return 0; >> +} >> + >> static int tcp_read(URLContext *h, uint8_t *buf, int size) >> { >> TCPContext *s = h->priv_data; >> @@ -223,6 +241,7 @@ static int tcp_get_file_handle(URLContext *h) >> URLProtocol ff_tcp_protocol = { >> .name = "tcp", >> .url_open = tcp_open, >> + .url_accept = tcp_accept, >> .url_read = tcp_read, >> .url_write = tcp_write, >> .url_close = tcp_close, > > Regards, > > -- > Nicolas George > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > Regards, Stephan _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel