Can only run recvmsg on real sockets, apparently.
authorfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Wed, 11 Apr 2007 18:28:34 +0000 (18:28 +0000)
committerfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Wed, 11 Apr 2007 18:28:34 +0000 (18:28 +0000)
git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@904 959494ce-11ee-0310-bf91-de5d638817bd

daemon/net.c

index d90146d..78df0be 100644 (file)
@@ -398,12 +398,16 @@ static void sockrecv(struct socket *sk)
        if(inq > 65536)
            inq = 65536;
        sizebuf(&sk->inbuf.s.buf, &sk->inbuf.s.bufsize, sk->inbuf.s.datasize + inq, 1, 1);
-       /*
-       ret = read(sk->fd, sk->inbuf.s.buf + sk->inbuf.s.datasize, inq);
-       */
-       bufvec.iov_base = sk->inbuf.s.buf + sk->inbuf.s.datasize;
-       bufvec.iov_len = inq;
-       ret = recvmsg(sk->fd, &msg, 0);
+       if(sk->isrealsocket)
+       {
+           bufvec.iov_base = sk->inbuf.s.buf + sk->inbuf.s.datasize;
+           bufvec.iov_len = inq;
+           ret = recvmsg(sk->fd, &msg, 0);
+       } else {
+           ret = read(sk->fd, sk->inbuf.s.buf + sk->inbuf.s.datasize, inq);
+           msg.msg_controllen = 0;
+           msg.msg_flags = 0;
+       }
        if(ret < 0)
        {
            if((errno == EINTR) || (errno == EAGAIN))