- 12 Dec, 2017 1 commit
-
-
Max Kellermann authored
Only _WIN32 is defined by the compiler, and WIN32 is not standardized and may be missing. Closes #169
-
- 11 Dec, 2017 1 commit
-
-
Uwe Kleine-König authored
If libupnp is installed in a non-standard location we must rely on the include path provided by $(pkg-config --cflags libupnp). Relative to the path given from that command no prefix must be used to find the respective files.
-
- 02 Dec, 2017 1 commit
-
-
Max Kellermann authored
libupnp 1.6.24 added a few badly designed macros which break the MPD build: https://sourceforge.net/p/pupnp/code/ci/8177a4195a4d4a5d6cb095eaf4ca5b65ac446381/ To work around this, we disable our emulation functions (from 714011c8) on this libupnp version. Closes #163
-
- 16 Nov, 2017 3 commits
-
-
Max Kellermann authored
Closes #155
-
Max Kellermann authored
-
Max Kellermann authored
-
- 20 Sep, 2017 6 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
Our IcuCaseFold() fallback using strxfrm() is not actually case insensitive. This commit fixes the problem by switching to strcasecmp(). That function is not guaranteed to support UTF-8, but it's the best we can do in this sparse situation. Closes #111
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
- 04 Jun, 2017 1 commit
-
-
Max Kellermann authored
-
- 08 May, 2017 2 commits
-
-
Max Kellermann authored
The "pure" and "const" attributes are not so well-defined, and a recent clang version implements an optimization which pushes the definition's boundary beyond what I believed it was. clang now assumes that functions declared "pure" cannot throw exceptions, even if they lack the "noexcept" specification. When compiled with this new clang version, MPD will crash randomly if an exception happens to get thrown by such as "pure" function (https://github.com/MusicPlayerDaemon/MPD/issues/41). This commit removes all such misplaced "pure" and "const" attributes, closing #41.
-
Max Kellermann authored
This eliminates some overhead, because the compiler doesn't need to consider these functions throwing.
-
- 10 Mar, 2017 2 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
-
- 08 Feb, 2017 1 commit
-
-
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
-
- 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
-