Max Kellermann
9e503b21c1
{input,mixer}/alsa: move code to lib/alsa/NonBlock.cxx
2017-02-09 21:24:24 +01:00
Max Kellermann
03a97d87ea
tag/Tag*: rename several source files
2017-02-08 08:49:42 +01:00
Max Kellermann
df4af2b550
Merge tag 'v0.20.4'
...
release v0.20.4
2017-02-01 22:05:33 +01:00
Max Kellermann
591afa0647
lib/nfs/Connection: detect socket hangup and unregister from epoll
...
Fixes race condition when epoll_ctl() gets called after the socket has
been closed, which may affect a different socket created by another
thread meanwhile.
2017-02-01 21:44:20 +01:00
Max Kellermann
05eac20ffe
lib/nfs/Connection: detect libnfs reconnect
...
When rpc_reconnect_requeue() gets called from inside nfs_service(),
the NfsInputStream can stall completely because the old socket has
been unregistered from epoll automatically, but the new one has never
been registered. Therefore, nfs_service() will never be called again.
This kludge attempts to detect this condition by checking
nfs_which_events()==POLLOUT.
https://bugs.musicpd.org/view.php?id=4081
2017-02-01 21:36:58 +01:00
Max Kellermann
add953fb6e
lib/curl/Global: decouple from the IOThread library
2017-01-26 09:29:49 +01:00
Max Kellermann
6d5904801e
lib/nfs/FileReader: use nfs_get_event_loop()
...
Make sure we're using the same EventLoop as the NfsManager.
2017-01-26 09:23:49 +01:00
Max Kellermann
d4993c405e
lib/nfs/Glue: add EventLoop& accessor
2017-01-26 09:23:25 +01:00
Max Kellermann
611ce6e756
lib/nfs/{FileReader,Glue}: pass EventLoop&
...
Eliminate dependency on io_thread_get().
2017-01-25 23:02:02 +01:00
Max Kellermann
44dd9af276
lib/upnp/Util: pass single delimiter character to stringToTokens()
2017-01-23 19:34:55 +01:00
Max Kellermann
d3013d4f8c
lib/upnp/Util: remove parameter "skipinit", always true
2017-01-23 19:28:07 +01:00
Max Kellermann
678524ad21
lib/upnp/WorkQueue: fix race condition
...
With "ok==false", newly created threads may quit instantly.
2017-01-23 19:25:30 +01:00
Max Kellermann
32a64481f2
lib/upnp: fix bad std::chrono cast
...
libupnp provides seconds, not whatever time unit is used by
std::chrono::steady_clock.
2017-01-23 19:16:14 +01:00
Max Kellermann
ec8cba369c
lib/upnp/WorkQueue: disallow copying
2017-01-23 18:35:58 +01:00
Max Kellermann
f4c248f406
lib/upnp/WorkQueue: make constructor explicit
2017-01-23 18:35:47 +01:00
Max Kellermann
f3b2a58646
lib/upnp/WorkQueue: use C++11 initializers
2017-01-23 18:35:22 +01:00
Max Kellermann
6eea56861b
AUTHORS, ...: update my email address
2017-01-17 11:54:55 +01:00
Max Kellermann
6c293a3d7f
lib/nfs: add more API documentation
2017-01-15 00:58:49 +01:00
Max Kellermann
58fb36bdb9
storage/http: new storage plugin
2017-01-08 14:40:20 +01:00
Max Kellermann
4297a7b0a4
lib/curl/Request: move exception handling out of the WRITEFUNCTION
...
libcurl's WRITEFUNCTION is pretty fragile; if we destroy the CURL*
instance or even unregister it using curl_multi_remove_handle(),
libcurl will crash instantly. But still we need to be able to handle
exceptions from inside the WRITEFUNCTION, and call
CurlResponseHandler::OnError(), which may destroy the whole thing. As
a workaround, I use DeferredMonitor to postpone the OnError() call
into a stack frame which is allowed to destroy the request.
2017-01-08 14:36:27 +01:00
Max Kellermann
1bab6d0dd7
lib/curl/Request: move catch clause out of FinishHeaders
...
Let the caller decide what to do with the exception.
2017-01-08 14:36:27 +01:00
Max Kellermann
13b85edbe2
lib/curl/Request: postpone the curl_easy_cleanup() call
...
When the request is done, only unregister the CURL* handle, but do not
delete it yet - it may still be needed for CURLINFO_RESPONSE_CODE.
2017-01-08 13:51:53 +01:00
Max Kellermann
dc53098e43
lib/curl/Request: allow Stop() to be called twice
...
Convert assertion to runtime check. This is useful because this is a
public method, and the caller has no chance to check if the object is
still registered.
2017-01-08 13:51:53 +01:00
Max Kellermann
3c66feff5a
lib/curl/Global: defer the ReadInfo() call
...
Fixes a crash that can occur due to recursion from InvalidateSockets()
to ReadInfo() to CurlRequest callbacks.
2017-01-08 12:46:35 +01:00
Max Kellermann
218c3bc0d5
lib/curl/Multi: fix typo
2017-01-08 12:46:35 +01:00
Max Kellermann
9f5eddcd13
lib/curl/Global: move code to UpdateTimeout()
2017-01-08 12:44:07 +01:00
Max Kellermann
3cba76552b
lib/curl/Global: drop redundant ">=0" check
2017-01-08 12:44:04 +01:00
Max Kellermann
e98a8b624b
lib/curl/Global: drop redundant "virtual"
2017-01-08 12:41:26 +01:00
Max Kellermann
981dc0626b
lib/expat/ExpatParser: add constructor overload for XML_ParserCreateNS()
2017-01-07 16:17:53 +01:00
Max Kellermann
8986d14e98
lib/expat/ExpatParser: make constructors "explicit"
2017-01-07 16:15:11 +01:00
Max Kellermann
5163b1a624
lib/curl/Request: require the caller to explicitly register the request
...
This allows constructing an instance in any thread, and register it
inside the IOThread later.
2017-01-07 16:01:58 +01:00
Max Kellermann
860aa9d6d0
lib/expat/ExpatParser: move InputStream overload to separate source file
...
Eliminate one unnecessary dependency for debug programs which don't
need the InputStream API.
2017-01-07 15:46:36 +01:00
Max Kellermann
6cff3214f3
lib/curl/Slist: new wrapper for curl_slist
2017-01-06 19:37:31 +01:00
Max Kellermann
5900253b85
update copyright year
2017-01-03 20:48:59 +01:00
Max Kellermann
06116382ee
input/curl: move code to class CurlRequest
...
The CurlRequest gives us a more low-level API to CURL without the
InputStream interface, integrated into our IOThread.
2017-01-03 12:24:05 +01:00
Max Kellermann
3e8cc2c670
input/curl: move class CurlGlobal to separate source file
2017-01-03 10:50:02 +01:00
Max Kellermann
2e182e84c3
thread/Mutex: remove ScopeLock, use std::lock_guard directly
2017-01-03 07:11:57 +01:00
Max Kellermann
7ec707927d
lib/nfs/Blocking, neighbor/smbclient: pass std::chrono::duration to Cond::timed_wait()
2016-12-29 11:37:18 +01:00
Max Kellermann
a161d404ad
lib/xiph/OggSerial: use std::chrono::steady_clock
2016-12-28 22:17:59 +01:00
Max Kellermann
cd607cb280
lib/upnp/Discovery: use std::chrono::steady_clock
2016-12-28 22:06:06 +01:00
Max Kellermann
4e60ab7f53
lib/upnp/Discovery: use C++11 initializers
2016-12-28 22:05:31 +01:00
Max Kellermann
b042095ac2
event/Loop: use std::chrono
2016-12-28 01:15:08 +01:00
Max Kellermann
fc83d38e67
input/curl: wrap CURLM* in new class CurlMulti
2016-12-19 16:41:12 +01:00
Max Kellermann
36b93993cf
input/curl: wrap CURL* in new class CurlEasy
2016-12-19 14:42:04 +01:00
Max Kellermann
22dcca9832
util/Error: remove obsolete class
2016-11-10 12:58:26 +01:00
Max Kellermann
6ead9750f4
output/pulse: migrate from class Error to C++ exceptions
2016-11-02 11:01:22 +01:00
Max Kellermann
6d409d27ca
lib/icu: migrate from class Error to C++ exceptions
2016-11-02 09:54:13 +01:00
Max Kellermann
e9c2885f34
lib/ffmpeg/Error: remove SetFfmpegError(); it's unused now
2016-10-31 13:18:47 +01:00
Max Kellermann
17ccfec358
lib/expat/Parser: remove unused method SetError()
2016-10-29 11:06:28 +02:00
Max Kellermann
afcff1fa77
lib/sqlite/Error: add missing include
...
https://bugs.musicpd.org/view.php?id=4593
2016-10-28 17:46:34 +02:00