Index: uspace/srv/audio/hound/audio_data.c
===================================================================
--- uspace/srv/audio/hound/audio_data.c	(revision d9f089421921ac6f8e9b8ea91b9ffbc304e9a82d)
+++ uspace/srv/audio/hound/audio_data.c	(revision 541eb6711e702163c081ab4953f767caeb2cbe9a)
@@ -260,7 +260,7 @@
  * @param size Target buffer size.
  * @param format Target data format.
- * @return Size of the target buffer used, Error code on failure.
- */
-ssize_t audio_pipe_mix_data(audio_pipe_t *pipe, void *data,
+ * @return Size of the target buffer used.
+ */
+size_t audio_pipe_mix_data(audio_pipe_t *pipe, void *data,
     size_t size, const pcm_format_t *f)
 {
Index: uspace/srv/audio/hound/audio_data.h
===================================================================
--- uspace/srv/audio/hound/audio_data.h	(revision d9f089421921ac6f8e9b8ea91b9ffbc304e9a82d)
+++ uspace/srv/audio/hound/audio_data.h	(revision 541eb6711e702163c081ab4953f767caeb2cbe9a)
@@ -78,5 +78,5 @@
 audio_data_t *audio_pipe_pop(audio_pipe_t *pipe);
 
-ssize_t audio_pipe_mix_data(audio_pipe_t *pipe, void *buffer, size_t size,
+size_t audio_pipe_mix_data(audio_pipe_t *pipe, void *buffer, size_t size,
     const pcm_format_t *f);
 
Index: uspace/srv/audio/hound/connection.c
===================================================================
--- uspace/srv/audio/hound/connection.c	(revision d9f089421921ac6f8e9b8ea91b9ffbc304e9a82d)
+++ uspace/srv/audio/hound/connection.c	(revision 541eb6711e702163c081ab4953f767caeb2cbe9a)
@@ -101,5 +101,5 @@
  * @param format format of the destination audio buffer.
  */
-ssize_t connection_add_source_data(connection_t *connection, void *data,
+int connection_add_source_data(connection_t *connection, void *data,
     size_t size, pcm_format_t format)
 {
@@ -116,10 +116,10 @@
 	log_verbose("Data available after update: %zu",
 	    audio_pipe_bytes(&connection->fifo));
-	ssize_t ret =
+	size_t ret =
 	    audio_pipe_mix_data(&connection->fifo, data, size, &format);
-	if (ret != (ssize_t)size)
+	if (ret != size)
 		log_warning("Connection failed to provide enough data %zd/%zu",
 		    ret, size);
-	return ret > 0 ? EOK : ret;
+	return EOK;
 }
 /**
Index: uspace/srv/audio/hound/connection.h
===================================================================
--- uspace/srv/audio/hound/connection.h	(revision d9f089421921ac6f8e9b8ea91b9ffbc304e9a82d)
+++ uspace/srv/audio/hound/connection.h	(revision 541eb6711e702163c081ab4953f767caeb2cbe9a)
@@ -84,5 +84,5 @@
 void connection_destroy(connection_t *connection);
 
-ssize_t connection_add_source_data(connection_t *connection, void *data,
+int connection_add_source_data(connection_t *connection, void *data,
     size_t size, pcm_format_t format);
 
Index: uspace/srv/audio/hound/hound_ctx.c
===================================================================
--- uspace/srv/audio/hound/hound_ctx.c	(revision d9f089421921ac6f8e9b8ea91b9ffbc304e9a82d)
+++ uspace/srv/audio/hound/hound_ctx.c	(revision 541eb6711e702163c081ab4953f767caeb2cbe9a)
@@ -340,10 +340,12 @@
 
 	pcm_format_silence(data, size, &stream->format);
-	const int ret =
+	const size_t ret =
 	    audio_pipe_mix_data(&stream->fifo, data, size, &stream->format);
 	fibril_mutex_unlock(&stream->guard);
-	if (ret == EOK)
+	if (ret > 0) {
 		fibril_condvar_signal(&stream->change);
-	return ret;
+		return EOK;
+	}
+	return EEMPTY;
 }
 
@@ -354,13 +356,12 @@
  * @param size Size of the @p data buffer.
  * @param format Destination data format.
- * @return Size of the destination buffer touch with stream's data,
- *         error code on failure.
- */
-ssize_t hound_ctx_stream_add_self(hound_ctx_stream_t *stream, void *data,
+ * @return Size of the destination buffer touch with stream's data.
+ */
+size_t hound_ctx_stream_add_self(hound_ctx_stream_t *stream, void *data,
     size_t size, const pcm_format_t *f)
 {
 	assert(stream);
 	fibril_mutex_lock(&stream->guard);
-	const int ret = audio_pipe_mix_data(&stream->fifo, data, size, f);
+	const size_t ret = audio_pipe_mix_data(&stream->fifo, data, size, f);
 	fibril_condvar_signal(&stream->change);
 	fibril_mutex_unlock(&stream->guard);
@@ -457,9 +458,6 @@
 	list_foreach(sink->connections, source_link, connection_t, conn) {
 		/* This should not trigger data update on the source */
-		const size_t copied = connection_add_source_data(
+		connection_add_source_data(
 		    conn, buffer, bsize, sink->format);
-		if (copied != bsize)
-			log_error("Copied less than advertised data, "
-			    "something is wrong");
 	}
 	/* push to all streams */
Index: uspace/srv/audio/hound/hound_ctx.h
===================================================================
--- uspace/srv/audio/hound/hound_ctx.h	(revision d9f089421921ac6f8e9b8ea91b9ffbc304e9a82d)
+++ uspace/srv/audio/hound/hound_ctx.h	(revision 541eb6711e702163c081ab4953f767caeb2cbe9a)
@@ -75,5 +75,5 @@
     size_t size);
 int hound_ctx_stream_read(hound_ctx_stream_t *stream, void *buffer, size_t size);
-ssize_t hound_ctx_stream_add_self(hound_ctx_stream_t *stream, void *data,
+size_t hound_ctx_stream_add_self(hound_ctx_stream_t *stream, void *data,
     size_t size, const pcm_format_t *f);
 void hound_ctx_stream_drain(hound_ctx_stream_t *stream);
