aboutsummaryrefslogtreecommitdiffstats
path: root/src/input/plugins/CurlInputPlugin.cxx (unfollow)
Commit message (Collapse)AuthorFilesLines
2015-06-26config/Global: allow calling config_get_string() with one argumentMax Kellermann1-2/+2
default_value defaults to nullptr.
2015-06-19input/curl: trigger the condition variable in RequestDone()Max Kellermann1-0/+2
Fixes deadlock on small responses.
2015-01-21config/Param: split block-specific attributes to new struct ConfigBlockMax Kellermann1-8/+8
The old struct config_param remains only for top-level string options.
2015-01-21config/Option: convert to strictly-typed enumMax Kellermann1-4/+4
2015-01-21input/curl: work around format warning on WIN32Max Kellermann1-0/+3
2015-01-21ConfigData: move struct config_param to Param.hxxMax Kellermann1-1/+1
2015-01-01Copyright year 2015Max Kellermann1-1/+1
2014-11-10input/curl: ignore ResponseBoundary() while seekingMax Kellermann1-0/+4
While seeking, metadata must not be updated. ResponseBoundary() was added in MPD 0.19.1, but I forgot to add the IsSeeking() check there. This caused the "seekable" flag to reset.
2014-11-02input/curl: forget Content-Length (and more) after redirectMax Kellermann1-0/+26
Fixes playback of redirected streams.
2014-11-01input/curl: fix curl_easy_setopt() parameter typesMax Kellermann1-3/+3
2014-09-16CurlInputPlugin: fix crash after second init callThomas Guillem1-0/+1
The second time init was called, http_200_aliases pointed to a freed pointer and leaded to a SEGFAULT.
2014-08-07util/StringUtil: add StripRight() overload with "end" argumentMax Kellermann1-6/+3
2014-07-11input/curl: options "verify_peer" and "verify_host"Max Kellermann1-0/+8
2014-06-17input/curl: hold mutex while writing to postponed_errorMax Kellermann1-3/+4
2014-05-24input/curl: move code to AsyncInputStreamMax Kellermann1-211/+48
New base class for other InputStream implementations that run in the I/O thread.
2014-05-24input/curl: call SetReady() only if not yet readyMax Kellermann1-1/+2
Fixes assertion failure.
2014-05-24input/curl: include cleanupMax Kellermann1-7/+0
2014-05-22InputStream: make Seek() always absoluteMax Kellermann1-24/+3
Remove the "whence" parameter that is not actually necessary, and only complicates the InputStream implementations.
2014-05-21input/curl: relock mutex in error pathsMax Kellermann1-2/+7
2014-05-21input/curl: pass remaining size to CircularBuffer::Append()Max Kellermann1-1/+1
2014-05-21input/curl: move code to IcyInputStreamMax Kellermann1-86/+16
2014-05-11InputStream: remove attribute "plugin"Max Kellermann1-1/+1
2014-05-11InputStream: make various methods abstractMax Kellermann1-71/+19
Replace InputPlugin attributes.
2014-05-11InputStream: add virtual destructorMax Kellermann1-9/+0
Replaces the method Close().
2014-05-11input/plugins: make InputStream the base classMax Kellermann1-51/+49
Prepare for adding virtual methods.
2014-05-11InputStream: convert to classMax Kellermann1-7/+4
2014-03-16input/curl: use CircularBufferMax Kellermann1-133/+75
Replaces its own weird buffering code.
2014-03-15input/curl: add method CurlInputStream::Open()Max Kellermann1-12/+17
2014-03-15input/curl: move _seek() into the CurlInputStream classMax Kellermann1-38/+44
2014-03-15input/curl: move _easy_init() into the CurlInputStream classMax Kellermann1-30/+30
2014-03-15input/curl: pass std::string&& to HeaderReceived()Max Kellermann1-25/+8
Code simplification.
2014-03-15input/curl: move code to CurlInputStream methodsMax Kellermann1-178/+231
2014-03-15input/curl: rename "error" to "error_buffer"Max Kellermann1-3/+3
2014-03-15input/curl: rename struct input_curl to CurlInputStreamMax Kellermann1-32/+32
2014-03-02InputPlugin: allow init() to soft-failMax Kellermann1-4/+6
Add enum InputResult which is a tri-state. Input plugins may now fail and just become unavailable.
2014-02-22input/curl: include cleanupMax Kellermann1-1/+0
2014-01-24Input*: move to input/Max Kellermann1-2/+2
2014-01-24Config*: move to config/Max Kellermann1-2/+2
2014-01-13copyright year 2014Max Kellermann1-1/+1
2014-01-08tag/TagBuilder: overload Commit() returning a Tag objectMax Kellermann1-1/+1
2014-01-08tag/TagBuilder: rename Commit() to CommitNew()Max Kellermann1-1/+1
2014-01-06event/SocketMonitor: don't close the socket automaticallyMax Kellermann1-2/+0
Users now have to call Close() explicitly. This simplifies using the class, as most users have automatic socket management already, and Steal() had to be used often.
2013-12-03input/curl: use class TagBuilderMax Kellermann1-4/+10
2013-11-23input/curl: work around stream resume bug (fixed in libcurl 7.32.0)Max Kellermann1-0/+17
2013-11-23input/curl: add global variable "curl_version"Max Kellermann1-0/+7
2013-11-23input/curl: dump version numberMax Kellermann1-0/+8
2013-11-07input/curl: unregister removed sockets from epollMax Kellermann1-1/+9
Fixes a crash bug. See code comment.
2013-11-06input/curl: fix bug with redirected streamsMax Kellermann1-110/+138
Migrate from the old curl_multi_perform() API to the newer curl_multi_socket_action() API (since CURL 7.16). This allows working around a bug with HTTP redirections with epoll: when CURL closes a socket and the new one happens to have the same file number, MPD did not have a chance to remove the old one from epoll and subsequently attempted to use EPOLL_CTL_MOD, which was not allowed by epoll, because it's a new socket now.
2013-11-06input/curl: move code into class CurlMultiMax Kellermann1-43/+66
Move all global variables there, and keep just one global variable: the pointer to the CurlMulti instance. Prepares for the next commit.
2013-11-06input/curl: remove the global list of requestsMax Kellermann1-13/+0
Unused.