Index: uspace/lib/c/generic/async.c
===================================================================
--- uspace/lib/c/generic/async.c	(revision 071a1ddbcc6bb2b9c6f3c1a3acc865f1f23b5fe0)
+++ uspace/lib/c/generic/async.c	(revision 569a51acd0cd10a573e65d239ca788a66e80c2db)
@@ -2398,7 +2398,8 @@
 	}
 	
-	int phone = ipc_connect_kbox(id);
-	if (phone < 0) {
-		errno = phone;
+	cap_handle_t phone;
+	int rc = ipc_connect_kbox(id, &phone);
+	if (rc != EOK) {
+		errno = rc;
 		free(sess);
 		return NULL;
Index: uspace/lib/c/generic/ipc.c
===================================================================
--- uspace/lib/c/generic/ipc.c	(revision 071a1ddbcc6bb2b9c6f3c1a3acc865f1f23b5fe0)
+++ uspace/lib/c/generic/ipc.c	(revision 569a51acd0cd10a573e65d239ca788a66e80c2db)
@@ -377,13 +377,12 @@
  *
  */
-int ipc_connect_kbox(task_id_t id)
+int ipc_connect_kbox(task_id_t id, cap_handle_t *phone)
 {
 #ifdef __32_BITS__
 	sysarg64_t arg = (sysarg64_t) id;
-	return __SYSCALL1(SYS_IPC_CONNECT_KBOX, (sysarg_t) &arg);
+	return __SYSCALL2(SYS_IPC_CONNECT_KBOX, (sysarg_t) &arg, (sysarg_t) phone);
 #endif
-	
 #ifdef __64_BITS__
-	return __SYSCALL1(SYS_IPC_CONNECT_KBOX, (sysarg_t) id);
+	return __SYSCALL2(SYS_IPC_CONNECT_KBOX, (sysarg_t) id, (sysarg_t) phone);
 #endif
 }
Index: uspace/lib/c/include/ipc/ipc.h
===================================================================
--- uspace/lib/c/include/ipc/ipc.h	(revision 071a1ddbcc6bb2b9c6f3c1a3acc865f1f23b5fe0)
+++ uspace/lib/c/include/ipc/ipc.h	(revision 569a51acd0cd10a573e65d239ca788a66e80c2db)
@@ -122,5 +122,5 @@
     sysarg_t, sysarg_t, sysarg_t, sysarg_t, unsigned int);
 
-extern int ipc_connect_kbox(task_id_t);
+extern int ipc_connect_kbox(task_id_t, cap_handle_t *);
 
 #endif
