Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | utils: mark sockaddr_to_string() as G_GNUC_MALLOC | Jonathan Neuschäfer | 2011-09-21 | 1 | -0/+1 |
| | |||||
* | Simplify setsockopt() casting workaround | Dan McGee | 2011-09-21 | 2 | -20/+6 |
| | | | | | | | | | 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> | ||||
* | tcp_connect: generic library for establishing TCP connections | Max Kellermann | 2011-09-20 | 2 | -0/+348 |
| | |||||
* | io_thread: add function _timeout_add() | Max Kellermann | 2011-09-20 | 2 | -0/+13 |
| | | | | | Same as _timeout_add_seconds(), but this one has millisecond resolution. | ||||
* | io_thread: _timeout_add_seconds() returns GSource* | Max Kellermann | 2011-09-20 | 2 | -5/+5 |
| | | | | The numeric ID isn't so useful. | ||||
* | server_socket: use resolve_host_port() instead of getaddrinfo() | Max Kellermann | 2011-09-20 | 1 | -17/+4 |
| | | | | Allow port specification in "bind_to_address" settings. | ||||
* | resolver: add function resolve_host_port() | Max Kellermann | 2011-09-20 | 2 | -2/+84 |
| | |||||
* | socket_util: move sockaddr_to_string() to resolver.c | Max Kellermann | 2011-09-20 | 7 | -65/+126 |
| | |||||
* | rtsp_client, output/raop: use close_socket() instead of close() | Max Kellermann | 2011-09-20 | 2 | -5/+7 |
| | |||||
* | tcp_socket, udp_server: use g_io_channel_new_socket() | Max Kellermann | 2011-09-20 | 2 | -10/+4 |
| | |||||
* | Merge branch 'v0.16.x' | Max Kellermann | 2011-09-20 | 10 | -25/+98 |
|\ | |||||
| * | fd_util: add function close_socket() | Max Kellermann | 2011-09-20 | 6 | -8/+25 |
| | | | | | | | | Wrap close(), use closesocket() on WIN32/WinSock. | ||||
| * | fd_util: check HAVE_INOTIFY_INIT in header | Max Kellermann | 2011-09-20 | 1 | -0/+4 |
| | | | | | | | | Don't provide the prototype if inotify_init() was not detected. | ||||
| * | fd_util: include check.h, verify config.h was included | Max Kellermann | 2011-09-20 | 1 | -0/+2 |
| | | |||||
| * | glib_socket.h: wrap g_io_channel_*_new() calls portably | Max Kellermann | 2011-09-20 | 5 | -16/+48 |
| | | | | | | | | | | The server_socket library (used by the httpd output plugin) didn't check for WIN32, that's fixed now. | ||||
| * | configure.ac: add option --enable-solaris-output | Max Kellermann | 2011-09-19 | 1 | -1/+19 |
| | | | | | | | | | | Allow enabling the plugin explicitly without running Solaris, to test the build. | ||||
* | | Set socket TCP keepalive option on incoming connections | Dan McGee | 2011-09-19 | 3 | -2/+24 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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> | ||||
* | | output_plugin: the plugin allocates the audio_output object | Max Kellermann | 2011-09-19 | 30 | -537/+814 |
| | | | | | | | | | | | | 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. | ||||
* | | output/roar: check return values | Max Kellermann | 2011-09-18 | 1 | -2/+10 |
| | | | | | | | | Fixes gcc warnings. | ||||
* | | output/roar: unknown volume is -1, not 0 | Max Kellermann | 2011-09-18 | 1 | -1/+1 |
| | | |||||
* | | output/roar: move code to roar_cancel_locked() and others | Max Kellermann | 2011-09-18 | 1 | -39/+55 |
| | | | | | | | | Wrap the locking code. | ||||
* | | output/roar: use GLib memory allocation functions | Max Kellermann | 2011-09-17 | 1 | -11/+3 |
| | | | | | | | | GLib has a built-in OOM handler. | ||||
* | | output/roar: use config_get_block_string() for temporary | Max Kellermann | 2011-09-17 | 1 | -8/+5 |
| | | |||||
* | | output/roar: reorder methods | Max Kellermann | 2011-09-17 | 1 | -14/+14 |
| | | |||||
* | | output: rename plugin variables | Max Kellermann | 2011-09-17 | 8 | -11/+11 |
| | | | | | | | | Consistent naming. | ||||
* | | Merge branch 'v0.16.x' | Max Kellermann | 2011-09-17 | 2 | -11/+12 |
|\| | |||||
| * | decoder/audiofile: include stdio header for SEEK_* defines | Tim Harder | 2011-09-17 | 1 | -0/+1 |
| | | | | | | | | The stdio header is no longer pulled in by af_vfs.h in audiofile-0.3.0. | ||||
| * | output/pulse: improve locking | Max Kellermann | 2011-09-17 | 1 | -11/+11 |
| | | | | | | | | | | Always lock the main loop when operating on PULSE objects. Document this. | ||||
* | | output: per-plugin header | Max Kellermann | 2011-09-17 | 38 | -28/+432 |
| | | | | | | | | | | Move the "extern" declarations from output_list.c, for more type safety. | ||||
* | | output/pulse: don't expose internal struct in public header | Max Kellermann | 2011-09-17 | 3 | -36/+56 |
| | | | | | | | | | | Provide _lock() and _unlock() to wrap all accesses from the mixer plugin. | ||||
* | | output/raop: don't expose internal structs in public header | Max Kellermann | 2011-09-17 | 2 | -96/+95 |
| | | |||||
* | | output/roar: export volume methods | Max Kellermann | 2011-09-17 | 3 | -46/+60 |
| | | | | | | | | Use these instead of exposing the internal roar_t struct. | ||||
* | | output: rename plugin source files | Max Kellermann | 2011-09-17 | 9 | -0/+0 |
| | | |||||
* | | output/pulse: move code to _setup_stream() | Max Kellermann | 2011-09-17 | 1 | -15/+36 |
| | | |||||
* | | input/soup: wait some more before resuming the stream | Max Kellermann | 2011-09-16 | 1 | -1/+6 |
| | | |||||
* | | input/soup: improve error messages | Max Kellermann | 2011-09-16 | 1 | -12/+43 |
| | | | | | | | | | | Copy the reason_phrase from the SoupMessage, and check for transport errors in the session callback. | ||||
* | | input_stream: non-blocking I/O | Max Kellermann | 2011-09-16 | 52 | -346/+607 |
| | | | | | | | | | | | | | | | | | | 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. | ||||
* | | input_plugin: add method check() | Max Kellermann | 2011-09-16 | 6 | -0/+72 |
| | | | | | | | | | | To check for errors without reading. The decoder thread wants to do that, before it passes the input stream to the plugin. | ||||
* | | input/{soup,curl}: free unused postponed_error | Max Kellermann | 2011-09-16 | 2 | -0/+8 |
| | | | | | | | | Fix memory leak. | ||||
* | | input/soup: move libsoup calls to the I/O thread | Max Kellermann | 2011-09-16 | 1 | -4/+25 |
| | | | | | | | | | | libsoup's asynchronous API is not thread safe. By moving the calls into the I/O thread, several crash bugs will be fixed. | ||||
* | | input/soup: wait for _cancel_message() to complete | Max Kellermann | 2011-09-16 | 1 | -5/+21 |
| | | | | | | | | | | Add the "complete" attribute, and set it in _session_callback(). _close() waits for it to become true. | ||||
* | | input/soup: return real GErrors to the caller | Max Kellermann | 2011-09-16 | 1 | -3/+31 |
| | | | | | | | | | | Add attribute postponed_error, pass this GError to the caller. | ||||
* | | input/soup: set the "ready" flag on failure | Max Kellermann | 2011-09-16 | 1 | -0/+2 |
| | | | | | | | | Fix deadlock. | ||||
* | | input/soup: remove redundant flag "ready" | Max Kellermann | 2011-09-16 | 1 | -6/+2 |
| | | | | | | | | | | We'll add proper locking now, and there's no need to carry this duplicate flag. | ||||
* | | input/soup: report failure in _read() | Max Kellermann | 2011-09-16 | 1 | -0/+1 |
| | | | | | | | | To report failures to callers who don't use _buffer(). | ||||
* | | input/soup: unlock before cancelling the soup message | Max Kellermann | 2011-09-16 | 1 | -3/+5 |
| | | | | | | | | Avoid recursive deadlock in _session_callback(). | ||||
* | | decoder_api: remove the loop from decoder_read() | Max Kellermann | 2011-09-16 | 1 | -16/+10 |
| | | | | | | | | | | This was useless, because input_stream_read() blocks until data is available. Calling it in a loop doesn't make sense. | ||||
* | | decoder_api: move code to decoder_check_cancel_read() | Max Kellermann | 2011-09-16 | 1 | -12/+28 |
| | | |||||
* | | input/curl: wait some more before resuming the stream | Max Kellermann | 2011-09-16 | 1 | -1/+6 |
| | | | | | | | | | | Pausing and resuming after every little chunk adds lots of overhead. Add a lower level for resuming the stream. | ||||
* | | input/curl: clear the "paused" flag before resuming | Max Kellermann | 2011-09-16 | 1 | -1/+1 |
| | | | | | | | | | | curl_easy_pause(CURLPAUSE_CONT) may have added enough data to go into pause again. |