Avoid dup'ing file descriptors when not necessary.
Do not send fd to the client if ops->get_fd() fails.
diff --git a/server/sock.c b/server/sock.c
index c5f41e4..ec7a067 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -255,12 +255,8 @@
static int sock_get_fd( struct object *obj )
{
struct sock *sock = (struct sock *)obj;
- int fd;
assert( obj->ops == &sock_ops );
- fd = dup( sock->obj.fd );
- if (fd==-1)
- sock_set_error();
- return fd;
+ return sock->obj.fd;
}
static void sock_destroy( struct object *obj )