aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Liu <lq@chinaffmpeg.org>2019-08-30 07:14:27 +0800
committerSteven Liu <lq@chinaffmpeg.org>2019-09-06 10:26:16 +0800
commit6c593fee6335b8dda62eaa54d40504aa366b0696 (patch)
tree67eedd5b1b1417feb78252d54405ca354ca038ee
parent2b66c757d6aa3a9feee4d25b587becd366c868f1 (diff)
downloadffmpeg-6c593fee6335b8dda62eaa54d40504aa366b0696.tar.gz
avformat/http: add ff_http_get_shutdown_status api for check the status of shutdown
this function is used to get the previous shutdown status when reusing the old connection in block mode. Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
-rw-r--r--libavformat/http.c16
-rw-r--r--libavformat/http.h9
2 files changed, 25 insertions, 0 deletions
diff --git a/libavformat/http.c b/libavformat/http.c
index 579debcd35..71dd6c2b1f 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -304,6 +304,22 @@ fail:
return location_changed;
return ff_http_averror(s->http_code, AVERROR(EIO));
}
+int ff_http_get_shutdown_status(URLContext *h)
+{
+ int ret = 0;
+ HTTPContext *s = h->priv_data;
+
+ /* flush the receive buffer when it is write only mode */
+ char buf[1024];
+ int read_ret;
+ read_ret = ffurl_read(s->hd, buf, sizeof(buf));
+ if (read_ret < 0) {
+ ret = read_ret;
+ }
+
+ return ret;
+}
+
int ff_http_do_new_request(URLContext *h, const char *uri)
{
diff --git a/libavformat/http.h b/libavformat/http.h
index 7d02713e31..662bd2cab6 100644
--- a/libavformat/http.h
+++ b/libavformat/http.h
@@ -38,6 +38,15 @@
void ff_http_init_auth_state(URLContext *dest, const URLContext *src);
/**
+ * Get the HTTP shutdown response status, be used after http_shutdown.
+ *
+ * @param h pointer to the resource
+ * @return a negative value if an error condition occurred, 0
+ * otherwise
+ */
+int ff_http_get_shutdown_status(URLContext *h);
+
+/**
* Send a new HTTP request, reusing the old connection.
*
* @param h pointer to the resource