| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The Naim Uniti does not appear to support icecast-style streaming of FLAC
music but does support the codec from a DLNA server. This change looks for
"transferMode.dlna.org: Streaming" in the HTTP request header and responds
with something the Uniti (and hopefully other DLNA clients) accepts.
The only difference in the DLNA streaming mode is the reponse header and
that icecast metadata is disabled. If a client request indicates both modes
are supported, the DLNA mode is preferred (as the Uniti says it supports
both but then rejects a FLAC ICY stream).
Note: This change may be specific to Naim equipment (the only device it was
tested on). E.g. the hardcoding of Content-Length which works but is not a
logically correct value. The change should be backwards-compatible, so
only those clients requesting a DLNA stream will see any difference.
|
|\|
| |
| |
| |
| | |
Conflicts:
src/player_thread.c
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When playing a CUE track, the player thread waited for the decoder to
become ready, and then sent a SEEK command to the beginning of the CUE
track. If that is near the start of the song file, and the track is
short enough, the decoder could have finished decoding already at that
point, and seeking fails.
This commit makes this initial seek more robust: instead of letting
the player thread deal with the difficult timings, let the decoder API
emulate a SEEK command, and return it to the decoder plugin, as soon
as the plugin finishes its initialization.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
On Win32, the third setsockopt parameter has type (char *) while on POSIX
systems it is (void *). However, given that it is a no-op cast to go from a
char pointer to a void pointer, we can cast to a char pointer (with a
possible const modifier) on all platforms and satisfy the compiler.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
| | |
|
| |
| |
| |
| |
| | |
Same as _timeout_add_seconds(), but this one has millisecond
resolution.
|
| |
| |
| |
| | |
The numeric ID isn't so useful.
|
| |
| |
| |
| | |
Allow port specification in "bind_to_address" settings.
|
| | |
|
| | |
|
| | |
|
| | |
|
|\| |
|
| |
| |
| |
| | |
Wrap close(), use closesocket() on WIN32/WinSock.
|
| |
| |
| |
| | |
Don't provide the prototype if inotify_init() was not detected.
|
| | |
|
| |
| |
| |
| |
| | |
The server_socket library (used by the httpd output plugin) didn't
check for WIN32, that's fixed now.
|
| |
| |
| |
| |
| | |
Allow enabling the plugin explicitly without running Solaris, to test
the build.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If a connected host disappears without our knowledge, as can happen over
wireless or a hibernating machine, we continue to hold the port open waiting
for messages. Because we never try to send anything down this now-broken
pipe, the connection will sit idle taking up a slot in our allowed incoming
connections list.
If enough of these happen, an unintended Denial of Service takes place,
where all connection slots are filled with now-broken, never ending
connections. Setting the TCP keepalive option at least allows these to time
out after the default two hours, which is sufficient in the non-malicious
case.
Signed-off-by: Dan McGee <dan@archlinux.org>
|
| |
| |
| |
| |
| |
| | |
Pass audio_output objects around instead of void pointers. This will
give some more control to the plugin, and prepares for non-blocking
audio outputs.
|
| |
| |
| |
| | |
Fixes gcc warnings.
|
| | |
|
| |
| |
| |
| | |
Wrap the locking code.
|
| |
| |
| |
| | |
GLib has a built-in OOM handler.
|
| | |
|
| | |
|
| |
| |
| |
| | |
Consistent naming.
|
|\| |
|
| |
| |
| |
| | |
The stdio header is no longer pulled in by af_vfs.h in audiofile-0.3.0.
|
| |
| |
| |
| |
| | |
Always lock the main loop when operating on PULSE objects. Document
this.
|
| |
| |
| |
| |
| | |
Move the "extern" declarations from output_list.c, for more type
safety.
|
| |
| |
| |
| |
| | |
Provide _lock() and _unlock() to wrap all accesses from the mixer
plugin.
|
| | |
|
| |
| |
| |
| | |
Use these instead of exposing the internal roar_t struct.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Copy the reason_phrase from the SoupMessage, and check for transport
errors in the session callback.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| | |
To check for errors without reading. The decoder thread wants to do
that, before it passes the input stream to the plugin.
|
| |
| |
| |
| | |
Fix memory leak.
|
| |
| |
| |
| |
| | |
libsoup's asynchronous API is not thread safe. By moving the calls
into the I/O thread, several crash bugs will be fixed.
|
| |
| |
| |
| |
| | |
Add the "complete" attribute, and set it in _session_callback().
_close() waits for it to become true.
|
| |
| |
| |
| |
| | |
Add attribute postponed_error, pass this GError to the caller.
|
| |
| |
| |
| | |
Fix deadlock.
|
| |
| |
| |
| |
| | |
We'll add proper locking now, and there's no need to carry this
duplicate flag.
|