Index: /opt/KERNEL/SVN/libnfnetlink/libnfnetlink.c =================================================================== --- /opt/KERNEL/SVN/libnfnetlink/libnfnetlink.c (revision 3897) +++ /opt/KERNEL/SVN/libnfnetlink/libnfnetlink.c (working copy) @@ -184,6 +193,7 @@ int remain; struct nlmsghdr *h; struct nlmsgerr *msgerr; + int quit=0; struct msghdr msg = { (void *)&nladdr, sizeof(nladdr), @@ -197,7 +207,7 @@ iov.iov_base = buf; iov.iov_len = sizeof(buf); - while (1) { + while (! quit) { remain = recvmsg(nfnlh->fd, &msg, 0); if (remain < 0) { if (errno == EINTR) @@ -243,6 +253,7 @@ err = handler(&nladdr, h, jarg); if (err < 0) return err; + quit |= err; /* FIXME: why not _NEXT macros, etc.? */ //h = NLMSG_NEXT(h, remain); @@ -259,7 +270,7 @@ } } - return 0; + return quit; } int nfnl_talk(struct nfnl_handle *nfnlh, struct nlmsghdr *n, pid_t peer,