X-Git-Url: http://www.dolda2000.com/gitweb/?a=blobdiff_plain;f=lib%2Fproc.c;h=efd276731b32cd9d2381d57e37cb25b4287f004b;hb=83723896cdbe2fb064748e45611e9b9c829c1d72;hp=f7b0d9b454d741b3c88d089576ea6dbc6f2586b9;hpb=0c16b4068d625a9b9b384a9fc2a07ee3c5c762c9;p=ashd.git diff --git a/lib/proc.c b/lib/proc.c index f7b0d9b..efd2767 100644 --- a/lib/proc.c +++ b/lib/proc.c @@ -35,7 +35,7 @@ int stdmkchild(char **argv) pid_t pid; int fd[2]; - if(socketpair(PF_UNIX, SOCK_DGRAM, 0, fd)) + if(socketpair(PF_UNIX, SOCK_SEQPACKET, 0, fd)) return(-1); if((pid = fork()) < 0) return(-1); @@ -98,8 +98,10 @@ int recvfd(int sock, char **data, size_t *datalen) msg.msg_controllen = sizeof(cbuf); ret = recvmsg(sock, &msg, 0); - if(ret < 0) { + if(ret <= 0) { free(buf); + if(ret == 0) + errno = 0; return(-1); }