summaryrefslogtreecommitdiff
path: root/libavformat/http.c
Commit message (Collapse)AuthorAge
* http: Check the auth string contents and not only the pointerMichael Niedermayer2013-10-14
| | | | | | | This makes sure we don't send the Except: 100-continue header if no authentication credentials have been provided. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Support auth method detection for POSTMartin Storsjö2013-10-13
| | | | | | | | | | | | | | | | | | | | | | | | Inspired by a patch by Jakob van Bethlehem. But instead of doing an empty POST first to trigger the WWW-Authenticate header (which would succeed if no auth actually was required), add an Expect: 100-continue header, which is meant to be used exactly for cases like this. The header is added if doing a post, and the user has specified authentication but we don't know the auth method yet. Not all common HTTP servers support the Expect: 100-continue header, though, so we only try to use it when it really is needed. The user can request it to be added for other POST requests as well via an option - which would allow the caller to know immediately that the POST has failed (e.g. if no auth was provided but the server required it, or if the target URL simply doesn't exist). This is only done for write mode posts (e.g. posts without pre-set post_data) - for posts with pre-set data, we can just redo the post if it failed due to 401. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Add an option for forcing basic authenticationMartin Storsjö2013-10-13
| | | | | | | | | | | | | The default is to autodetect the auth method. This does require one extra request (and also closing and reopening the http connection). For some cases such as HTTP POST, the autodetection is not handled properly (yet). No option is added for digest, since this method requires getting nonce parameters from the server first and can't be used straight away like Basic. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Pass options through to the nested protocolMartin Storsjö2013-09-26
| | | | | | | | When passing a dict to the nested protocol, it will consume the used options from it, so a separate copy needs to be used when reopening the connection multiple times. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Support reading gzip/deflate compressed dataZhang Rui2013-07-28
| | | | | | | | | | | | | | | | Derived from VLC's http module. Original authors: Antoine Cellerier <dionoea@videolan.org> Sébastien Escudier <sebastien-devel@celeos.eu> Rémi Duraffort <ivoire@videolan.org> Rémi Denis-Courmont <remi@remlab.net> Francois Cartegnie <fcvlcdev@free.fr> Normally, http servers shouldn't send this to us since we don't advertise it with an Accept-Encoding header, but some servers still do it anyway. Signed-off-by: Martin Storsjö <martin@martin.st>
* Use the avstring.h locale-independent character type functionsReimar Döffinger2013-03-07
| | | | | | Make sure the behavior does not change with the locale. Signed-off-by: Martin Storsjö <martin@martin.st>
* lavf: Handle the environment variable no_proxy more properlyMartin Storsjö2013-02-27
| | | | | | | | | | | | | | | | | | | | The handling of the environment variable no_proxy, present since one of the initial commits (de6d9b6404), is inconsistent with how many other applications and libraries interpret this variable. Its bare presence does not indicate that the use of proxies should be skipped, but it is some sort of pattern for hosts that does not need using a proxy (e.g. for a local network). As investigated by Rudolf Polzer, different libraries handle this in different ways, some supporting IP address masks, some supporting arbitrary globbing using *, some just checking that the pattern matches the end of the hostname without regard for whether it actually is the right domain or a domain that ends in the same string. This simple logic should be pretty similar to the logic used by lynx and curl. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: use av_strlcpy instead of strcpy() without size checksJanne Grunau2012-10-09
| | | | Fixes CID700730.
* http: Increase buffer sizes to cope with longer URIsDuncan Salerno2012-09-28
| | | | | | | | | | | | | Use the MAX_URL_SIZE define where applicable. Increase buffer sizes for all buffers that need to fit a long pathname - buffers that need to fit only the hostname (and other short strings, but not the pathname - such as "headers" in http_connect) are kept at 1024 bytes for now. Also increase the max line length in http_read_header, since it might need to contain a full url for Location: redirects. Signed-off-by: Martin Storsjö <martin@martin.st>
* avopt: Store defaults for AV_OPT_TYPE_INT in the i64 union memberMartin Storsjö2012-09-04
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* lavf: remove unnecessary inclusions of unistd.hMans Rullgard2012-06-20
| | | | | | These files do not use anything provided by unistd.h. Signed-off-by: Mans Rullgard <mans@mansr.com>
* http: replace atoll() with strtoll()Ronald S. Bultje2012-06-19
|
* http: Properly handle chunked transfer-encoding for replies to post dataMartin Storsjö2012-06-17
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Fail reading if the connection has gone awayMartin Storsjö2012-06-17
| | | | | | | This can happen if doing a new request using the same socket, but the new request failed, which clears the urlcontext. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Add the url_shutdown function for https, tooMartin Storsjö2012-06-01
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Simplify code by removing a local variableMartin Storsjö2012-06-01
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Clear the old URLContext pointer when closedMartin Storsjö2012-06-01
| | | | | | | This fixes issues with opening http urls that have authentication or redirects, introduced in commit e999b641. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Pass the proper return code of net IO operationsSamuel Pitoiset2012-05-30
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Add 'post_data', a new option which sets custom HTTP post dataSamuel Pitoiset2012-05-30
| | | | | | | This allows doing http posts with a content-length header sent in advance, avoiding chunked encoding. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Add support for reusing the http socket for subsequent requestsSamuel Pitoiset2012-05-28
| | | | | | | 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>
* http: Add support for using persistent connectionsSamuel Pitoiset2012-05-28
| | | | | | | Add a new AVOption 'multiple_requests', which indicates if we want to use persistent connections (ie. Connection: keep-alive). Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Add support for reading http POST reply headersSamuel Pitoiset2012-05-22
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Add http_shutdown() for ending writing of postsSamuel Pitoiset2012-05-22
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Factorize the code by adding http_read_header()Samuel Pitoiset2012-05-20
| | | | | | This function is used for reading http reply headers. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Clear the auth state on redirectsMartin Storsjö2012-03-13
| | | | | | | Currently we only try continuing with the same auth mechanism as the initial request. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Retry auth if it failed due to being staleMartin Storsjö2012-03-13
| | | | | | | Allow up to 4 retries for normal requests, where both the proxy and the target server might need to authenticate. Signed-off-by: Martin Storsjö <martin@martin.st>
* avio: Add an URLProtocol flag for indicating that a protocol uses networkMartin Storsjö2012-01-05
| | | | | | | This definition is in two files, since the definitions will move to the private header at the next bump. Signed-off-by: Martin Storsjö <martin@martin.st>
* Remove extraneous semicolonsMans Rullgard2011-12-11
| | | | | | These semicolons cause invalid empty top-level declarations. Signed-off-by: Mans Rullgard <mans@mansr.com>
* http: Make sure proxyauth is initializedMartin Storsjö2011-12-01
| | | | | | | | | This string will be passed to ff_http_auth_create_response even if no proxy is used, resulting in reading uninitialized memory. The other auth string is always initialized by av_url_split. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Don't use the normal http proxy mechanism for httpsMartin Storsjö2011-11-18
| | | | | | | | | | The tls protocol handles connections via proxies internally. With TLS/SSL, the peer verification requires that the client speaks directly with the server, since the proxy doesn't have the remote server's private key. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Reorder two code blocksMartin Storsjö2011-11-18
| | | | | | This is in preparation for a later commit. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Add a new protocol for opening connections via http proxiesMartin Storsjö2011-11-18
| | | | | | | | | | This opens a plain TCP connection through the proxy via the CONNECT HTTP method. Normally, this is allowed for connections on port 443, but can in general be used to allow connections to any port (depending on proxy configuration), and could thus be used to tunnel any TCP connection via a HTTP proxy. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Split out the non-chunked buffer reading part from http_readMartin Storsjö2011-11-18
| | | | | | | This is in preparation for a later commit, where this function is reused. Signed-off-by: Martin Storsjö <martin@martin.st>
* avio: add support for passing options to protocols.Anton Khirnov2011-11-13
| | | | | Not used anywhere yet, support for passing options from avio_open() will follow.
* avio: Add an AVIOInterruptCB parameter to ffurl_open/ffurl_allocMartin Storsjö2011-11-13
| | | | | Change all uses of these function to pass the relevant callback on.
* http: Handle proxy authenticationMartin Storsjö2011-11-11
| | | | | | | | Tested with both Basic and Digest authentication, and tested with both proxy authentication and authentication for the requested resource at the same time. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Print an error message for Authorization Required, tooMartin Storsjö2011-11-11
| | | | | | | | | | | The error was hidden before, to avoid showing an error on the first request where no auth has been provided, when the server indicates which authentication method to use. Now the error is printed if an authentication method was used, but failed. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Don't add a Range: bytes=0- header for POSTMartin Storsjö2011-11-10
| | | | | | That header simply doesn't make sense in that context. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Change the chunksize AVOption into chunked_postMartin Storsjö2011-11-10
| | | | | | | | | | | | | | | | | The chunksize internal variable has two different uses - for reading, it's the amount of data left of the current chunk (or -1 if the server doesn't send data in chunked mode), where it's only an internal state variable. For writing, it's used to decide whether to enable chunked encoding (by default), by using the value 0, or disable chunked encoding (value -1). This, while consistent, doesn't make much sense to expose as an AVOption. This splits the usage of the internal variable into two variables, chunksize which is used for reading (as before), and chunked_post which is the user-settable option, with the values 0 and 1, where 1 is default. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Add encoding/decoding flags to the AVOptionsAnton Khirnov2011-11-10
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* http: use different classes for http and https.Anton Khirnov2011-11-10
|
* http: Change an error log message to a warningMartin Storsjö2011-11-10
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Remove the now unused ff_http_set_headers custom functionMartin Storsjö2011-11-10
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Make custom headers settable via an AVOptionMartin Storsjö2011-11-10
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* Replace all usage of strcasecmp/strncasecmpReimar Döffinger2011-11-06
| | | | | | | | | | | All current usages of it are incompatible with localization. For example strcasecmp("i", "I") != 0 is possible, but would break many of the places where it is used. Instead use our own implementations that always treat the data as ASCII. Signed-off-by: Martin Storsjö <martin@martin.st>
* http: Remove the custom function for disabling chunked postsMartin Storsjö2011-11-05
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* avformat: Add the https protocolMartin Storsjö2011-11-05
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* Replace outdated references to ffmpeg tool with avconv.Diego Biurrun2011-11-02
|
* AVOptions: rename FF_OPT_TYPE_* => AV_OPT_TYPE_*Anton Khirnov2011-10-12
|
* http: Consider the stream as seekable if the reply contains Accept-Ranges: bytesStefan Fritsch2011-09-04
| | | | | | | | | | | | The initial request contains "Range: 0-", which servers normally have responded with "HTTP/1.1 206 Partial Content" reply with a Content-Range header, which was used as indicator for seekability. Apache, since 2.2.20, responds with "HTTP/1.1 200 OK" for these requests, which is more friendly to caches and proxies, but the seekability still is indicated via the Accept-Ranges: bytes header. Signed-off-by: Martin Storsjö <martin@martin.st>