aboutsummaryrefslogtreecommitdiffstats
path: root/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'v0.16.x'Max Kellermann2011-09-2010-25/+98
|\
| * fd_util: add function close_socket()Max Kellermann2011-09-206-8/+25
| | | | | | | | Wrap close(), use closesocket() on WIN32/WinSock.
| * fd_util: check HAVE_INOTIFY_INIT in headerMax Kellermann2011-09-201-0/+4
| | | | | | | | Don't provide the prototype if inotify_init() was not detected.
| * fd_util: include check.h, verify config.h was includedMax Kellermann2011-09-201-0/+2
| |
| * glib_socket.h: wrap g_io_channel_*_new() calls portablyMax Kellermann2011-09-205-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-outputMax Kellermann2011-09-191-1/+19
| | | | | | | | | | Allow enabling the plugin explicitly without running Solaris, to test the build.
* | Set socket TCP keepalive option on incoming connectionsDan McGee2011-09-193-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 objectMax Kellermann2011-09-1930-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 valuesMax Kellermann2011-09-181-2/+10
| | | | | | | | Fixes gcc warnings.
* | output/roar: unknown volume is -1, not 0Max Kellermann2011-09-181-1/+1
| |
* | output/roar: move code to roar_cancel_locked() and othersMax Kellermann2011-09-181-39/+55
| | | | | | | | Wrap the locking code.
* | output/roar: use GLib memory allocation functionsMax Kellermann2011-09-171-11/+3
| | | | | | | | GLib has a built-in OOM handler.
* | output/roar: use config_get_block_string() for temporaryMax Kellermann2011-09-171-8/+5
| |
* | output/roar: reorder methodsMax Kellermann2011-09-171-14/+14
| |
* | output: rename plugin variablesMax Kellermann2011-09-178-11/+11
| | | | | | | | Consistent naming.
* | Merge branch 'v0.16.x'Max Kellermann2011-09-172-11/+12
|\|
| * decoder/audiofile: include stdio header for SEEK_* definesTim Harder2011-09-171-0/+1
| | | | | | | | The stdio header is no longer pulled in by af_vfs.h in audiofile-0.3.0.
| * output/pulse: improve lockingMax Kellermann2011-09-171-11/+11
| | | | | | | | | | Always lock the main loop when operating on PULSE objects. Document this.
* | output: per-plugin headerMax Kellermann2011-09-1738-28/+432
| | | | | | | | | | Move the "extern" declarations from output_list.c, for more type safety.
* | output/pulse: don't expose internal struct in public headerMax Kellermann2011-09-173-36/+56
| | | | | | | | | | Provide _lock() and _unlock() to wrap all accesses from the mixer plugin.
* | output/raop: don't expose internal structs in public headerMax Kellermann2011-09-172-96/+95
| |
* | output/roar: export volume methodsMax Kellermann2011-09-173-46/+60
| | | | | | | | Use these instead of exposing the internal roar_t struct.
* | output: rename plugin source filesMax Kellermann2011-09-179-0/+0
| |
* | output/pulse: move code to _setup_stream()Max Kellermann2011-09-171-15/+36
| |
* | input/soup: wait some more before resuming the streamMax Kellermann2011-09-161-1/+6
| |
* | input/soup: improve error messagesMax Kellermann2011-09-161-12/+43
| | | | | | | | | | Copy the reason_phrase from the SoupMessage, and check for transport errors in the session callback.
* | input_stream: non-blocking I/OMax Kellermann2011-09-1652-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 Kellermann2011-09-166-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_errorMax Kellermann2011-09-162-0/+8
| | | | | | | | Fix memory leak.
* | input/soup: move libsoup calls to the I/O threadMax Kellermann2011-09-161-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 completeMax Kellermann2011-09-161-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 callerMax Kellermann2011-09-161-3/+31
| | | | | | | | | | Add attribute postponed_error, pass this GError to the caller.
* | input/soup: set the "ready" flag on failureMax Kellermann2011-09-161-0/+2
| | | | | | | | Fix deadlock.
* | input/soup: remove redundant flag "ready"Max Kellermann2011-09-161-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 Kellermann2011-09-161-0/+1
| | | | | | | | To report failures to callers who don't use _buffer().
* | input/soup: unlock before cancelling the soup messageMax Kellermann2011-09-161-3/+5
| | | | | | | | Avoid recursive deadlock in _session_callback().
* | decoder_api: remove the loop from decoder_read()Max Kellermann2011-09-161-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 Kellermann2011-09-161-12/+28
| |
* | input/curl: wait some more before resuming the streamMax Kellermann2011-09-161-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 resumingMax Kellermann2011-09-161-1/+1
| | | | | | | | | | curl_easy_pause(CURLPAUSE_CONT) may have added enough data to go into pause again.
* | input/curl: remove _schedule_update()Max Kellermann2011-09-161-48/+1
| | | | | | | | | | Call _update_fds() directly. This is possible because it's only called from within the I/O thread.
* | input/curl: unlock the mutex for io_thread_call()Max Kellermann2011-09-161-1/+4
| | | | | | | | Fix deadlock.
* | input/soup: fix "unused local variable" warningsMax Kellermann2011-09-161-1/+1
| |
* | Merge branch 'v0.16.x'Max Kellermann2011-09-162-2/+3
|\|
| * input/curl, output/pulse: fix "unused local variable" warningsMax Kellermann2011-09-162-2/+3
| |
* | input_stream: add "nonnull" attributesMax Kellermann2011-09-151-0/+12
| |
* | Merge branch 'v0.16.x'Max Kellermann2011-09-153-11/+35
|\| | | | | | | | | | | Conflicts: NEWS configure.ac
| * decoder/ffmpeg: flush the codec after seekingMax Kellermann2011-09-151-1/+3
| | | | | | | | | | Let the codec start with fresh buffers. This should fix the remaining seeking issues.
| * decoder/ffmpeg: explicitly specify the current stream for seekingMax Kellermann2011-09-151-2/+11
| | | | | | | | | | Use AVStream.time_base to convert the decoder_seek_where() value, and pass the current stream number to av_seek_frame().
| * decoder/ffmpeg: don't require key frame for seekingMax Kellermann2011-09-151-1/+2
| | | | | | | | Use flag AV_TIME_BASE.