Hello community,

here is the log from the commit of package rpcbind for openSUSE:Factory checked 
in at 2015-12-03 13:29:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rpcbind (Old)
 and      /work/SRC/openSUSE:Factory/.rpcbind.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rpcbind"

Changes:
--------
--- /work/SRC/openSUSE:Factory/rpcbind/rpcbind.changes  2015-05-07 
09:20:19.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.rpcbind.new/rpcbind.changes     2015-12-03 
13:29:22.000000000 +0100
@@ -1,0 +2,12 @@
+Tue Nov 17 14:20:28 CET 2015 - [email protected]
+
+- Add 0002-revert-auth.patch: revert old patch no longer working
+  with libtirpc 1.0.1 
+  (http://sourceforge.net/p/libtirpc/mailman/message/34585439/)
+
+-------------------------------------------------------------------
+Tue Jul 14 16:52:03 CEST 2015 - [email protected]
+
+- Add 099-poll.patch: use libtirpc with poll() implementation
+
+-------------------------------------------------------------------

New:
----
  0002-revert-auth.patch
  099-poll.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rpcbind.spec ++++++
--- /var/tmp/diff_new_pack.2Kr09t/_old  2015-12-03 13:29:23.000000000 +0100
+++ /var/tmp/diff_new_pack.2Kr09t/_new  2015-12-03 13:29:23.000000000 +0100
@@ -28,7 +28,7 @@
 Source3:        rpcbind.xml
 Source4:        pmap_set.c
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-BuildRequires:  libtirpc-devel
+BuildRequires:  libtirpc-devel >= 1.0.1
 BuildRequires:  libtool
 BuildRequires:  pkgconfig
 BuildRequires:  tcpd-devel
@@ -36,11 +36,13 @@
 PreReq:         %fillup_prereq
 Requires(pre):  /usr/sbin/useradd
 Patch1:         0001-systemd-unit-files.patch
+Patch2:         0002-revert-auth.patch
 Patch8:         0008-First-part-of-init_transport-refactoring.patch
 Patch9:         0009-init_transport-move-the-registration-code-into-a-sep.patch
 Patch10:        0010-Fix-the-behavior-when-specifying-the-h-option.patch
 Patch11:        0011-Clean-up-the-way-we-handle-the-h-option-in-init_tran.patch
 Patch14:        0014-When-using-systemd-redirect-syslog-calls-to-the-syst.patch
+Patch99:        099-poll.patch
 
 %define statefile /var/lib/portmap.state
 %{?systemd_requires}
@@ -57,11 +59,13 @@
 %setup -q
 cp %{SOURCE4} .
 %patch1 -p1
+%patch2 -p1 -R
 #%patch8 -p1
 #%patch9 -p1
 #%patch10 -p1
 #%patch11 -p1
 #%patch14 -p1
+%patch99 -p1
 
 %build
 autoreconf -fiv

++++++ 0002-revert-auth.patch ++++++
commit 86036582c001e99075f4d74cb3829df39f2a9ddf
Author: Frank Hirtz <[email protected]>
Date:   Tue Oct 23 11:38:20 2012 -0400

    rpcbind is "swallowing" broadcast RPC replies
    
    If xp_auth is NULL, the transport routines will not send
    the reply. This patch fixes that problem.
    
    Signed-off-by: Steve Dickson <[email protected]>

diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c
index 5bb9a44..f6bd6bd 100644
--- a/src/rpcb_svc_com.c
+++ b/src/rpcb_svc_com.c
@@ -1227,6 +1227,8 @@ send_svcsyserr(SVCXPRT *xprt, struct finfo *fi)
        return;
 }
 
+extern SVCAUTH svc_auth_none;
+
 static void
 handle_reply(int fd, SVCXPRT *xprt)
 {
@@ -1293,7 +1295,10 @@ handle_reply(int fd, SVCXPRT *xprt)
        a.rmt_localvers = fi->versnum;
 
        xprt_set_caller(xprt, fi);
+       xprt->xp_auth = &svc_auth_none;
        svc_sendreply(xprt, (xdrproc_t) xdr_rmtcall_result, (char *) &a);
+       SVCAUTH_DESTROY(xprt->xp_auth);
+       xprt->xp_auth = NULL;
 done:
        if (buffer)
                free(buffer);
++++++ 099-poll.patch ++++++
diff --git a/src/rpcb_svc_com.c b/src/rpcb_svc_com.c
index ff9ce6b..d675eda 100644
--- a/src/rpcb_svc_com.c
+++ b/src/rpcb_svc_com.c
@@ -1097,35 +1097,28 @@ netbuffree(struct netbuf *ap)
 }
 
 
-#define        MASKVAL (POLLIN | POLLPRI | POLLRDNORM | POLLRDBAND)
-extern bool_t __svc_clean_idle(fd_set *, int, bool_t);
-
 void
 my_svc_run()
 {
-       size_t nfds;
-       struct pollfd pollfds[FD_SETSIZE];
        int poll_ret, check_ret;
        int n;
-#ifdef SVC_RUN_DEBUG
-       int i;
-#endif
-       register struct pollfd  *p;
-       fd_set cleanfds;
 
        for (;;) {
-               p = pollfds;
-               for (n = 0; n <= svc_maxfd; n++) {
-                       if (FD_ISSET(n, &svc_fdset)) {
-                               p->fd = n;
-                               p->events = MASKVAL;
-                               p++;
-                       }
-               }
-               nfds = p - pollfds;
-               poll_ret = 0;
+               struct pollfd my_pollfd[svc_max_pollfd];
+               int i;
+
+               if (svc_max_pollfd == 0 && svc_pollfd == NULL)
+                 return;
 
-               switch (poll_ret = poll(pollfds, nfds, 30 * 1000)) {
+
+               for (i = 0; i < svc_max_pollfd; ++i)
+                 {
+                   my_pollfd[i].fd = svc_pollfd[i].fd;
+                   my_pollfd[i].events = svc_pollfd[i].events;
+                   my_pollfd[i].revents = 0;
+                 }
+
+               switch (poll_ret = poll(my_pollfd, svc_max_pollfd, 30 * 1000)) {
                case -1:
                        /*
                         * We ignore all errors, continuing with the assumption
@@ -1133,8 +1126,6 @@ my_svc_run()
                         * other outside event) and not caused by poll().
                         */
                case 0:
-                       cleanfds = svc_fdset;
-                       __svc_clean_idle(&cleanfds, 30, FALSE);
                        continue;
                default:
                        /*
@@ -1144,10 +1135,10 @@ my_svc_run()
                         * don't call svc_getreq_poll.  Otherwise, there
                         * must be another so we must call svc_getreq_poll.
                         */
-                       if ((check_ret = check_rmtcalls(pollfds, nfds)) ==
+                       if ((check_ret = check_rmtcalls(my_pollfd, 
svc_max_pollfd)) ==
                            poll_ret)
                                continue;
-                       svc_getreq_poll(pollfds, poll_ret-check_ret);
+                       svc_getreq_poll(my_pollfd, poll_ret-check_ret);
                }
        }
 }


Reply via email to