X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Fnet.c;h=78df0becab99e62587bd0f85b0eed155c972d7b4;hb=987518f8933f88fae1987c600890dd75464a54d2;hp=d90146d97e5ce1f58e9108063909d3e6a1e9b925;hpb=9e5f2b29cf819c9f79113bf3ae7edcb484d8ee14;p=doldaconnect.git diff --git a/daemon/net.c b/daemon/net.c index d90146d..78df0be 100644 --- a/daemon/net.c +++ b/daemon/net.c @@ -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))