Index: uspace/lib/hound/include/hound/protocol.h
===================================================================
--- uspace/lib/hound/include/hound/protocol.h	(revision 5a6f36289e791e8c0fba0a195e7803910a67bcfa)
+++ uspace/lib/hound/include/hound/protocol.h	(revision c5b8548cc12fc8a06b0d3e6fd94d3e0219b25d54)
@@ -102,4 +102,5 @@
 	    void **);
 	int (*rem_stream)(void *, void *);
+	int (*drain_stream)(void *);
 	int (*stream_data_write)(void *, const void *, size_t);
 	int (*stream_data_read)(void *, void *, size_t);
Index: uspace/lib/hound/src/protocol.c
===================================================================
--- uspace/lib/hound/src/protocol.c	(revision 5a6f36289e791e8c0fba0a195e7803910a67bcfa)
+++ uspace/lib/hound/src/protocol.c	(revision c5b8548cc12fc8a06b0d3e6fd94d3e0219b25d54)
@@ -511,5 +511,13 @@
 	ipc_call_t call;
 	size_t size = 0;
-	while (async_data_read_receive_call(&callid, &call, &size)) {
+	while (async_data_read_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) {
