summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavformat/http.c6
-rw-r--r--libavformat/http.h11
2 files changed, 17 insertions, 0 deletions
diff --git a/libavformat/http.c b/libavformat/http.c
index 27d4e8ac10..4a46b41cad 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -69,6 +69,12 @@ void ff_http_set_chunked_transfer_encoding(URLContext *h, int is_chunked)
((HTTPContext*)h->priv_data)->chunksize = is_chunked ? 0 : -1;
}
+void ff_http_init_auth_state(URLContext *dest, const URLContext *src)
+{
+ memcpy(&((HTTPContext*)dest->priv_data)->auth_state,
+ &((HTTPContext*)src->priv_data)->auth_state, sizeof(HTTPAuthState));
+}
+
/* return non zero if error */
static int http_open_cnx(URLContext *h)
{
diff --git a/libavformat/http.h b/libavformat/http.h
index fe5539a217..a0ae943b84 100644
--- a/libavformat/http.h
+++ b/libavformat/http.h
@@ -50,4 +50,15 @@ void ff_http_set_headers(URLContext *h, const char *headers);
*/
void ff_http_set_chunked_transfer_encoding(URLContext *h, int is_chunked);
+/**
+ * Initialize the authentication state based on another HTTP URLContext.
+ * This can be used to pre-initialize the authentication parameters if
+ * they are known beforehand, to avoid having to do an initial failing
+ * request just to get the parameters.
+ *
+ * @param dest URL context whose authentication state gets updated
+ * @param src URL context whose authentication state gets copied
+ */
+void ff_http_init_auth_state(URLContext *dest, const URLContext *src);
+
#endif /* AVFORMAT_HTTP_H */