Index: uspace/lib/hound/src/protocol.c
===================================================================
--- uspace/lib/hound/src/protocol.c	(revision 9e40d4433621da8fe77285b99b8d000cba072e24)
+++ uspace/lib/hound/src/protocol.c	(revision 704baed8c91e9fa86ea0209e4cfaa9438b08bce4)
@@ -486,5 +486,13 @@
 	ipc_call_t call;
 	size_t size = 0;
-	while (async_data_write_receive_call(&callid, &call, &size)) {
+	while (async_data_write_receive_call(&callid, &call, &size)
+	    || (IPC_GET_IMETHOD(call) == IPC_M_HOUND_STREAM_DRAIN)) {
+		if (IPC_GET_IMETHOD(call) == IPC_M_HOUND_STREAM_DRAIN) {
+			int ret = ENOTSUP;
+			if (server_iface->drain_stream)
+				ret = server_iface->drain_stream(stream);
+			async_answer_0(callid, ret);
+			continue;
+		}
 		char *buffer = malloc(size);
 		if (!buffer) {
@@ -494,9 +502,9 @@
 		int ret = async_data_write_finalize(callid, buffer, size);
 		if (ret == EOK) {
-			ret = server_iface->stream_data_write(stream, buffer, size);
+			ret = server_iface->stream_data_write(
+			    stream, buffer, size);
 		}
 		async_answer_0(callid, ret);
 	}
-	//TODO drain?
 	const int ret = IPC_GET_IMETHOD(call) == IPC_M_HOUND_STREAM_EXIT
 	    ? EOK : EINVAL;
