aboutsummaryrefslogtreecommitdiffstats
path: root/src/input/CurlInputPlugin.cxx (unfollow)
Commit message (Collapse)AuthorFilesLines
2013-01-29require GLib 2.24Max Kellermann1-1/+0
2013-01-28InputStream: use std::stringMax Kellermann1-3/+2
2013-01-28InputStream: store references instead of pointersMax Kellermann1-12/+12
2013-01-28InputStream: add constructor/destructorMax Kellermann1-4/+2
Eliminate input_stream_init() and input_stream_deinit().
2013-01-27DecoderControl, InputStream: use Mutex/Cond instead of GMutex/GCondMax Kellermann1-22/+17
2013-01-26input_stream: forward-declare the structMax Kellermann1-1/+2
Hide the definition from C code, to prepare the transition to C++.
2013-01-25input_{internal,plugin}: convert to C++Max Kellermann1-2/+2
2013-01-21input_internal.h: add extern "C"Max Kellermann1-4/+0
2013-01-15input/Curl: break loop when remaining length becomes 0Max Kellermann1-0/+6
Fixes assertion failure (regression).
2013-01-15input/Curl: move code to class MultiSocketMonitorMax Kellermann1-116/+60
2013-01-15input/Curl: simpler GPollFD initialisationMax Kellermann1-5/+2
Using initializer list.
2013-01-15input/Curl: don't remove/add modified GPollFDMax Kellermann1-9/+2
Not necessary, GLib will pick up the updated GPollFD automatically.
2013-01-14Main, IOThread: move GMainLoop setup code to class EventLoopMax Kellermann1-1/+3
2013-01-10input/curl: use std::list instead of GQueueMax Kellermann1-93/+80
2013-01-10icy_metadata: convert to C++Max Kellermann1-13/+11
2013-01-10input/Curl: add constructor to input_curl classMax Kellermann1-32/+30
2013-01-10input/Curl: remove unused source/source_id attributesMax Kellermann1-7/+0
2013-01-10input/Curl: remove redundant attribute "url"Max Kellermann1-4/+2
Use the "url" attribute from the base class instead.
2013-01-10input/Curl: use std::forward_list instead of GSListMax Kellermann1-27/+21
2013-01-10input/Curl: remove unused attribute "fds"Max Kellermann1-3/+1
2013-01-10input/Curl: require libcurl 7.18Max Kellermann1-24/+4
2013-01-10io_thread: convert to C++Max Kellermann1-1/+1
2013-01-10input/{curl,soup}: convert to C++Max Kellermann1-37/+47
2012-04-04input/curl: use g_source_get_time()Max Kellermann1-12/+5
g_source_get_current_time() is deprecated since GLib 2.28. This patch adds a compatibility wrapper for older GLib versions to glib_compat.h.
2011-09-16input_stream: non-blocking I/OMax Kellermann1-72/+36
Add GMutex, GCond attributes which will be used by callers to conditionally wait on the stream. Remove the (now-useless) plugin method buffer(), wait on GCond instead. Lock the input_stream before each method call. Do the same with the playlist plugins.
2011-09-16input_plugin: add method check()Max Kellermann1-0/+18
To check for errors without reading. The decoder thread wants to do that, before it passes the input stream to the plugin.
2011-09-16input/{soup,curl}: free unused postponed_errorMax Kellermann1-0/+5
Fix memory leak.
2011-09-16input/curl: wait some more before resuming the streamMax Kellermann1-1/+6
Pausing and resuming after every little chunk adds lots of overhead. Add a lower level for resuming the stream.
2011-09-16input/curl: clear the "paused" flag before resumingMax Kellermann1-1/+1
curl_easy_pause(CURLPAUSE_CONT) may have added enough data to go into pause again.
2011-09-16input/curl: remove _schedule_update()Max Kellermann1-48/+1
Call _update_fds() directly. This is possible because it's only called from within the I/O thread.
2011-09-16input/curl: unlock the mutex for io_thread_call()Max Kellermann1-1/+4
Fix deadlock.
2011-09-16input/curl, output/pulse: fix "unused local variable" warningsMax Kellermann1-1/+1
2011-09-15input/curl: per-request mutex/condMax Kellermann1-33/+35
The global data structures are now lock-free, because they are accessed only from the I/O thread. By using per-request locks, we have finer grained locking, preparing for locks shared with the client.
2011-09-15input/curl: move all libCURL calls to the I/O threadMax Kellermann1-29/+69
This adds some overheads for indirect calls to the I/O thread, but reduces the amount of global locks. Next step will be switching to per-request locks.
2011-09-15input/curl: don't set "ready" on _easy_free()Max Kellermann1-3/+2
Move the assignment to _request_done(), right before the GCond is signalled. This might fix spurious wakeups.
2011-09-15input/curl: add assertions on io_thread_inside()Max Kellermann1-0/+9
2011-09-15input/curl: merge _request_abort() into _request_done()Max Kellermann1-31/+19
This is a trivial function. Merge some duplicate code, e.g. the g_cond_broadcast() call.
2011-09-15input/curl: API documentation fixMax Kellermann1-1/+1
2011-09-14input_stream: move input_stream_init(), _deinit() to _internal.cMax Kellermann1-0/+1
2011-08-26input/curl: implement a hard-coded timeout of 10 secondsMax Kellermann1-0/+3
Be sure to stop the operation at some point when the server isn't responding.
2011-08-25input/curl: use the I/O threadMax Kellermann1-222/+653
Background buffering and better timeout handling. This patch sort of obsoletes the input_plugin method buffer().
2011-08-25input/curl: eliminate attribute "eof"Max Kellermann1-11/+4
Assume the flag is true when the "easy" CURL handle is NULL. That way, we don't need to keep track if CURL has sent us the "DONE" information yet.
2011-08-25input/curl: release "easy" CURL handle as early as possibleMax Kellermann1-9/+10
Release it immediately when end-of-file has been reached. We don't need that handle anymore, because the rest is delivered from the buffers.
2011-08-25input/curl: move code to input_curl_flush_buffers()Max Kellermann1-3/+9
Allow closing the handle while preserving the remaining buffers.
2011-08-25input/curl: pass input_curl to fill_buffer()Max Kellermann1-4/+3
Remove a cast.
2011-08-25input/curl: set GError when init() failsMax Kellermann1-2/+3
Let the caller know what happened, he's responsible for logging.
2011-08-24input/curl: remove obsolete function input_curl_reinit()Max Kellermann1-12/+0
2011-08-23input/curl: limit the receive buffer sizeMax Kellermann1-0/+30
2011-01-29copyright year 2011Max Kellermann1-1/+1
2011-01-29input/curl: enable CURLOPT_NETRCIan Zimmerman1-0/+1
I wanted mpd to play a mp3 stream from a music website. The stream is only available to subscribers, which restriction is enforced through normal http authentication. However, the URL I get from the website is not the final URL of the stream, but a generic URL which points to the real one through a redirect (code 301). Thus, I cannot predict the final URL, and so I cannot use the username:password hack to force the authentication, and mpd (libcurl on mpds behalf) fails to grab the stream. libcurl allows the option CURLOPT_NETRC to be set and then the credentials can be stored in the good old .netrc file (in this case it would be ~mpd/.netrc, of course). But mpd doesn't set this option. I think it should.