- 09 Feb, 2017 1 commit
-
-
Max Kellermann authored
-
- 08 Feb, 2017 2 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
-
- 06 Feb, 2017 1 commit
-
-
Max Kellermann authored
-
- 01 Feb, 2017 2 commits
-
-
Max Kellermann authored
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.
-
Max Kellermann authored
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
-
- 26 Jan, 2017 3 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
Make sure we're using the same EventLoop as the NfsManager.
-
Max Kellermann authored
-
- 25 Jan, 2017 1 commit
-
-
Max Kellermann authored
Eliminate dependency on io_thread_get().
-
- 23 Jan, 2017 7 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
With "ok==false", newly created threads may quit instantly.
-
Max Kellermann authored
libupnp provides seconds, not whatever time unit is used by std::chrono::steady_clock.
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
- 17 Jan, 2017 1 commit
-
-
Max Kellermann authored
-
- 14 Jan, 2017 1 commit
-
-
Max Kellermann authored
-
- 08 Jan, 2017 10 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
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.
-
Max Kellermann authored
Let the caller decide what to do with the exception.
-
Max Kellermann authored
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.
-
Max Kellermann authored
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.
-
Max Kellermann authored
Fixes a crash that can occur due to recursion from InvalidateSockets() to ReadInfo() to CurlRequest callbacks.
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
- 07 Jan, 2017 4 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
This allows constructing an instance in any thread, and register it inside the IOThread later.
-
Max Kellermann authored
Eliminate one unnecessary dependency for debug programs which don't need the InputStream API.
-
- 06 Jan, 2017 1 commit
-
-
Max Kellermann authored
-
- 03 Jan, 2017 4 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
The CurlRequest gives us a more low-level API to CURL without the InputStream interface, integrated into our IOThread.
-
Max Kellermann authored
-
Max Kellermann authored
-
- 29 Dec, 2016 1 commit
-
-
Max Kellermann authored
-
- 28 Dec, 2016 1 commit
-
-
Max Kellermann authored
-