summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pflocal/socket.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/pflocal/socket.c b/pflocal/socket.c
index a45bb475..10736281 100644
--- a/pflocal/socket.c
+++ b/pflocal/socket.c
@@ -30,9 +30,19 @@
error_t
S_socket_connect2 (struct sock_user *user1, struct sock_user *user2)
{
+ error_t err;
+
if (!user1 || !user2)
return EOPNOTSUPP;
- return sock_connect (user1->sock, user2->sock);
+
+ err = sock_connect (user1->sock, user2->sock);
+
+ /* Since USER2 isn't in the receiver position in the rpc, we get a send
+ right for it (although we only use the receive right with the same
+ name); be sure it's deallocated! */
+ mach_port_deallocate (mach_task_self (), user2->pi.port_right);
+
+ return err;
}
/* Make sure we have a queue to listen on. */