]> git.pld-linux.org Git - packages/libtirpc.git/blame - libtirpc-svc-rtaddr.patch
- rel 3; find first netid (makes can't contact portmapper: RPC: Unknown host problem...
[packages/libtirpc.git] / libtirpc-svc-rtaddr.patch
CommitLineData
3911f511
JR
1commit f8ff8f0de33606ff544dc87c0a9993fd3a0f5475
2Author: Steve Dickson <steved@redhat.com>
3Date: Mon Jul 30 07:26:45 2007 -0400
4
5 - Make sure remote address (xp_rtaddr) is populated
6 with the correct type of address.
7
8 Signed-off-by: Steve Dickson <steved@redhat.com>
9
10diff --git a/src/svc_vc.c b/src/svc_vc.c
11index 48494e1..3d77aef 100644
12--- a/src/svc_vc.c
13+++ b/src/svc_vc.c
14@@ -239,7 +239,10 @@ svc_fd_create(fd, sendsize, recvsize)
15 warnx("svc_fd_create: no mem for local addr");
16 goto freedata;
17 }
18- memcpy(ret->xp_rtaddr.buf, &sin6, (size_t)sizeof(ss));
19+ if (ss.ss_family == AF_INET)
20+ memcpy(ret->xp_rtaddr.buf, &ss, (size_t)sizeof(ss));
21+ else
22+ memcpy(ret->xp_rtaddr.buf, &sin6, (size_t)sizeof(ss));
23 #ifdef PORTMAP
24 if (sin6.sin6_family == AF_INET6 || sin6.sin6_family == AF_LOCAL) {
25 memcpy(&ret->xp_raddr, ret->xp_rtaddr.buf,
26@@ -343,20 +346,23 @@ again:
27 newxprt = makefd_xprt(sock, r->sendsize, r->recvsize);
28 if (addr.ss_family == AF_INET) {
29 map_ipv4_to_ipv6((struct sockaddr_in *)&addr, &sin6);
30- len = sizeof(struct sockaddr_in6);
31 } else {
32 memcpy(&sin6, &addr, len);
33 }
34 newxprt->xp_rtaddr.buf = mem_alloc(len);
35 if (newxprt->xp_rtaddr.buf == NULL)
36 return (FALSE);
37- memcpy(newxprt->xp_rtaddr.buf, &sin6, len);
38+
39+ if (addr.ss_family == AF_INET)
40+ memcpy(newxprt->xp_rtaddr.buf, &addr, len);
41+ else
42+ memcpy(newxprt->xp_rtaddr.buf, &sin6, len);
43 newxprt->xp_rtaddr.maxlen = newxprt->xp_rtaddr.len = len;
44 #ifdef PORTMAP
45 if (sin6.sin6_family == AF_INET6 || sin6.sin6_family == AF_LOCAL) {
46 memcpy(&newxprt->xp_raddr, newxprt->xp_rtaddr.buf,
47 sizeof(struct sockaddr_in6));
48- newxprt->xp_addrlen = len;
49+ newxprt->xp_addrlen = sizeof(struct sockaddr_in6);
50 }
51 #endif /* PORTMAP */
52 if (__rpc_fd2sockinfo(sock, &si) && si.si_proto == IPPROTO_TCP) {
This page took 0.027456 seconds and 4 git commands to generate.