summaryrefslogtreecommitdiff
path: root/libavformat/http.c
diff options
context:
space:
mode:
authorStephan Holljes <klaxa1337@googlemail.com>2015-06-09 22:26:48 +0200
committerMichael Niedermayer <michaelni@gmx.at>2015-06-10 18:17:28 +0200
commitde3a7ef2042f4d82d02711d7d979630f620c73a3 (patch)
tree6a132b67bfaae85641a6526e7dcae5a2ee260271 /libavformat/http.c
parent63276fa9c1d14a17356c5e0c50eb5413dae846df (diff)
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 <klaxa1337@googlemail.com> Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/http.c')
-rw-r--r--libavformat/http.c4
1 files changed, 3 insertions, 1 deletions
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;