mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-27 13:30:45 +00:00
http: Add support for reusing the http socket for subsequent requests
Introduce ff_http_do_new_request(), a new function which sends a new HTTP request, reusing the existing connection to the server. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
3bdb438e65
commit
e999b641df
@ -139,12 +139,16 @@ static int http_open_cnx(URLContext *h)
|
||||
}
|
||||
|
||||
ff_url_join(buf, sizeof(buf), lower_proto, NULL, hostname, port, NULL);
|
||||
err = ffurl_open(&hd, buf, AVIO_FLAG_READ_WRITE,
|
||||
&h->interrupt_callback, NULL);
|
||||
if (err < 0)
|
||||
goto fail;
|
||||
|
||||
s->hd = hd;
|
||||
if (!s->hd) {
|
||||
err = ffurl_open(&hd, buf, AVIO_FLAG_READ_WRITE,
|
||||
&h->interrupt_callback, NULL);
|
||||
if (err < 0)
|
||||
goto fail;
|
||||
|
||||
s->hd = hd;
|
||||
}
|
||||
|
||||
cur_auth_type = s->auth_state.auth_type;
|
||||
cur_proxy_auth_type = s->auth_state.auth_type;
|
||||
if (http_connect(h, path, local_path, hoststr, auth, proxyauth, &location_changed) < 0)
|
||||
@ -187,6 +191,16 @@ static int http_open_cnx(URLContext *h)
|
||||
return AVERROR(EIO);
|
||||
}
|
||||
|
||||
int ff_http_do_new_request(URLContext *h, const char *uri)
|
||||
{
|
||||
HTTPContext *s = h->priv_data;
|
||||
|
||||
s->off = 0;
|
||||
av_strlcpy(s->location, uri, sizeof(s->location));
|
||||
|
||||
return http_open_cnx(h);
|
||||
}
|
||||
|
||||
static int http_open(URLContext *h, const char *uri, int flags)
|
||||
{
|
||||
HTTPContext *s = h->priv_data;
|
||||
@ -430,6 +444,7 @@ static int http_connect(URLContext *h, const char *path, const char *local_path,
|
||||
s->filesize = -1;
|
||||
s->willclose = 0;
|
||||
s->end_chunked_post = 0;
|
||||
s->end_header = 0;
|
||||
if (post) {
|
||||
/* Pretend that it did work. We didn't read any header yet, since
|
||||
* we've still to send the POST data, but the code calling this
|
||||
|
@ -35,4 +35,14 @@
|
||||
*/
|
||||
void ff_http_init_auth_state(URLContext *dest, const URLContext *src);
|
||||
|
||||
/**
|
||||
* Send a new HTTP request, reusing the old connection.
|
||||
*
|
||||
* @param h pointer to the ressource
|
||||
* @param uri uri used to perform the request
|
||||
* @return a negative value if an error condition occured, 0
|
||||
* otherwise
|
||||
*/
|
||||
int ff_http_do_new_request(URLContext *h, const char *uri);
|
||||
|
||||
#endif /* AVFORMAT_HTTP_H */
|
||||
|
Loading…
Reference in New Issue
Block a user