From: fredrik Date: Wed, 11 Apr 2007 18:28:34 +0000 (+0000) Subject: Can only run recvmsg on real sockets, apparently. X-Git-Tag: 0.3~33 X-Git-Url: http://git.dolda2000.com/gitweb/?p=doldaconnect.git;a=commitdiff_plain;h=987518f8933f88fae1987c600890dd75464a54d2 Can only run recvmsg on real sockets, apparently. git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@904 959494ce-11ee-0310-bf91-de5d638817bd --- 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))