Index: uspace/lib/c/generic/async/server.c
===================================================================
--- uspace/lib/c/generic/async/server.c	(revision beb83c14fc69926ddb40d44bb96dc734b5d21545)
+++ uspace/lib/c/generic/async/server.c	(revision 4a8d0dd1629a42ad3c6e78f6c3807e0c3a00b6b0)
@@ -1025,16 +1025,24 @@
 errno_t async_accept_0(ipc_call_t *call)
 {
-	return ipc_answer_5(call->cap_handle, EOK, 0, 0, 0, 0,
-	    async_get_label());
+	cap_call_handle_t chandle = call->cap_handle;
+	assert(chandle != CAP_NIL);
+	call->cap_handle = CAP_NIL;
+	return ipc_answer_5(chandle, EOK, 0, 0, 0, 0, async_get_label());
 }
 
 errno_t async_answer_0(ipc_call_t *call, errno_t retval)
 {
-	return ipc_answer_0(call->cap_handle, retval);
+	cap_call_handle_t chandle = call->cap_handle;
+	assert(chandle != CAP_NIL);
+	call->cap_handle = CAP_NIL;
+	return ipc_answer_0(chandle, retval);
 }
 
 errno_t async_answer_1(ipc_call_t *call, errno_t retval, sysarg_t arg1)
 {
-	return ipc_answer_1(call->cap_handle, retval, arg1);
+	cap_call_handle_t chandle = call->cap_handle;
+	assert(chandle != CAP_NIL);
+	call->cap_handle = CAP_NIL;
+	return ipc_answer_1(chandle, retval, arg1);
 }
 
@@ -1042,5 +1050,8 @@
     sysarg_t arg2)
 {
-	return ipc_answer_2(call->cap_handle, retval, arg1, arg2);
+	cap_call_handle_t chandle = call->cap_handle;
+	assert(chandle != CAP_NIL);
+	call->cap_handle = CAP_NIL;
+	return ipc_answer_2(chandle, retval, arg1, arg2);
 }
 
@@ -1048,5 +1059,8 @@
     sysarg_t arg2, sysarg_t arg3)
 {
-	return ipc_answer_3(call->cap_handle, retval, arg1, arg2, arg3);
+	cap_call_handle_t chandle = call->cap_handle;
+	assert(chandle != CAP_NIL);
+	call->cap_handle = CAP_NIL;
+	return ipc_answer_3(chandle, retval, arg1, arg2, arg3);
 }
 
@@ -1054,5 +1068,8 @@
     sysarg_t arg2, sysarg_t arg3, sysarg_t arg4)
 {
-	return ipc_answer_4(call->cap_handle, retval, arg1, arg2, arg3, arg4);
+	cap_call_handle_t chandle = call->cap_handle;
+	assert(chandle != CAP_NIL);
+	call->cap_handle = CAP_NIL;
+	return ipc_answer_4(chandle, retval, arg1, arg2, arg3, arg4);
 }
 
@@ -1060,6 +1077,8 @@
     sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t arg5)
 {
-	return ipc_answer_5(call->cap_handle, retval, arg1, arg2, arg3, arg4,
-	    arg5);
+	cap_call_handle_t chandle = call->cap_handle;
+	assert(chandle != CAP_NIL);
+	call->cap_handle = CAP_NIL;
+	return ipc_answer_5(chandle, retval, arg1, arg2, arg3, arg4, arg5);
 }
 
@@ -1069,9 +1088,13 @@
 	assert(call);
 
+	cap_call_handle_t chandle = call->cap_handle;
+	assert(chandle != CAP_NIL);
+	call->cap_handle = CAP_NIL;
+
 	if (exch == NULL)
 		return ENOENT;
 
-	return ipc_forward_fast(call->cap_handle, exch->phone, imethod, arg1,
-	    arg2, mode);
+	return ipc_forward_fast(chandle, exch->phone, imethod, arg1, arg2,
+	    mode);
 }
 
@@ -1082,9 +1105,13 @@
 	assert(call);
 
+	cap_call_handle_t chandle = call->cap_handle;
+	assert(chandle != CAP_NIL);
+	call->cap_handle = CAP_NIL;
+
 	if (exch == NULL)
 		return ENOENT;
 
-	return ipc_forward_slow(call->cap_handle, exch->phone, imethod, arg1,
-	    arg2, arg3, arg4, arg5, mode);
+	return ipc_forward_slow(chandle, exch->phone, imethod, arg1, arg2, arg3,
+	    arg4, arg5, mode);
 }
 
@@ -1159,5 +1186,9 @@
 	assert(call);
 
-	return ipc_answer_2(call->cap_handle, EOK, (sysarg_t) src, (sysarg_t) flags);
+	cap_call_handle_t chandle = call->cap_handle;
+	assert(chandle != CAP_NIL);
+	call->cap_handle = CAP_NIL;
+
+	return ipc_answer_2(chandle, EOK, (sysarg_t) src, (sysarg_t) flags);
 }
 
@@ -1211,5 +1242,9 @@
 	assert(call);
 
-	return ipc_answer_2(call->cap_handle, EOK, (sysarg_t) __progsymbols.end,
+	cap_call_handle_t chandle = call->cap_handle;
+	assert(chandle != CAP_NIL);
+	call->cap_handle = CAP_NIL;
+
+	return ipc_answer_2(chandle, EOK, (sysarg_t) __progsymbols.end,
 	    (sysarg_t) dst);
 }
@@ -1262,6 +1297,9 @@
 	assert(call);
 
-	return ipc_answer_2(call->cap_handle, EOK, (sysarg_t) src,
-	    (sysarg_t) size);
+	cap_call_handle_t chandle = call->cap_handle;
+	assert(chandle != CAP_NIL);
+	call->cap_handle = CAP_NIL;
+
+	return ipc_answer_2(chandle, EOK, (sysarg_t) src, (sysarg_t) size);
 }
 
