summaryrefslogtreecommitdiffstats
path: root/src/modules/module-raop-sink.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/module-raop-sink.c')
-rw-r--r--src/modules/module-raop-sink.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/modules/module-raop-sink.c b/src/modules/module-raop-sink.c
index 00f0c63c..d8ddf184 100644
--- a/src/modules/module-raop-sink.c
+++ b/src/modules/module-raop-sink.c
@@ -135,13 +135,22 @@ enum {
/* Forward declaration */
static void sink_set_volume_cb(pa_sink *);
-static void on_connection(PA_GCC_UNUSED int fd, void*userdata) {
+static void on_connection(int fd, void*userdata) {
+ int so_sndbuf = 0;
+ socklen_t sl = sizeof(int);
struct userdata *u = userdata;
pa_assert(u);
pa_assert(u->fd < 0);
u->fd = fd;
+ if (getsockopt(u->fd, SOL_SOCKET, SO_SNDBUF, &so_sndbuf, &sl) < 0)
+ pa_log_warn("getsockopt(SO_SNDBUF) failed: %s", pa_cstrerror(errno));
+ else {
+ pa_log_debug("SO_SNDBUF is %zu.", (size_t) so_sndbuf);
+ pa_sink_set_max_request(u->sink, PA_MAX((size_t) so_sndbuf, u->block_size));
+ }
+
/* Set the initial volume */
sink_set_volume_cb(u->sink);