Accepting request 345010 from home:kukuk:NSL
- Add 0002-revert-auth.patch: revert old patch no longer working with libtirpc 1.0.1 (http://sourceforge.net/p/libtirpc/mailman/message/34585439/) - Add 099-poll.patch: use libtirpc with poll() implementation OBS-URL: https://build.opensuse.org/request/show/345010 OBS-URL: https://build.opensuse.org/package/show/network/rpcbind?expand=0&rev=56
This commit is contained in:
parent
6e1ee082e3
commit
91ff6aa42e
35
0002-revert-auth.patch
Normal file
35
0002-revert-auth.patch
Normal file
@ -0,0 +1,35 @@
|
||||
commit 86036582c001e99075f4d74cb3829df39f2a9ddf
|
||||
Author: Frank Hirtz <fhirtz@redhat.com>
|
||||
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 <steved@redhat.com>
|
||||
|
||||
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);
|
76
099-poll.patch
Normal file
76
099-poll.patch
Normal file
@ -0,0 +1,76 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,3 +1,15 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Nov 17 14:20:28 CET 2015 - kukuk@suse.de
|
||||
|
||||
- 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 - kukuk@suse.de
|
||||
|
||||
- Add 099-poll.patch: use libtirpc with poll() implementation
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Apr 30 09:36:21 CEST 2015 - kukuk@suse.de
|
||||
|
||||
|
@ -36,11 +36,13 @@ BuildRequires: pkgconfig(libsystemd-daemon)
|
||||
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 @@ regards to portmap.
|
||||
%setup -q
|
||||
cp %{SOURCE4} .
|
||||
%patch1 -p1
|
||||
%patch2 -p1 -R
|
||||
#%patch8 -p1
|
||||
#%patch9 -p1
|
||||
#%patch10 -p1
|
||||
#%patch11 -p1
|
||||
#%patch14 -p1
|
||||
%patch99 -p1
|
||||
|
||||
%build
|
||||
autoreconf -fiv
|
||||
|
Loading…
Reference in New Issue
Block a user