From de3a7ef2042f4d82d02711d7d979630f620c73a3 Mon Sep 17 00:00:00 2001 From: Stephan Holljes Date: Tue, 9 Jun 2015 22:26:48 +0200 Subject: [PATCH] lavf/http: Correctly terminate session with HTTP POST client. Send a footer to correctly close client sockets. This fixes network errors in client applications. Signed-off-by: Stephan Holljes Reviewed-by: Nicolas George Signed-off-by: Michael Niedermayer --- libavformat/http.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavformat/http.c b/libavformat/http.c index 2db2dea51e..676bfd5c5a 100644 --- a/libavformat/http.c +++ b/libavformat/http.c @@ -325,6 +325,7 @@ static int http_listen(URLContext *h, const char *uri, int flags, char lower_url[100]; const char *lower_proto = "tcp"; int port, new_location; + s->chunked_post = 1; av_url_split(proto, sizeof(proto), NULL, 0, hostname, sizeof(hostname), &port, NULL, 0, uri); if (!strcmp(proto, "https")) @@ -1242,7 +1243,8 @@ static int http_shutdown(URLContext *h, int flags) HTTPContext *s = h->priv_data; /* signal end of chunked encoding if used */ - if ((flags & AVIO_FLAG_WRITE) && s->chunked_post) { + if (((flags & AVIO_FLAG_WRITE) && s->chunked_post) || + ((flags & AVIO_FLAG_READ) && s->chunked_post && s->listen)) { ret = ffurl_write(s->hd, footer, sizeof(footer) - 1); ret = ret > 0 ? 0 : ret; s->end_chunked_post = 1;