> On Apr 10, 2018, at 3:30 PM, Steve Dickson <steved@xxxxxxxxxx> wrote: > > Commit 46e04a73 changed svc_com_create() to avoid using > reserve ports but removed the listen() call which > could break, undocumented expectations, of legacy > server apps. > > Reserve ports are not needed for listening ports, so > the new __binddynport() is used to avoid squatting > on ports that are assigned to other network services, > but it is important to say backwards compatible > with the legacy glibc code so the the listen() > call is added back. svc_tli_create should already perform a call to __binddynport() and to listen(2). That's why those calls were removed from svc_com_create(). 222 if (madefd || !__rpc_sockisbound(fd)) { 223 if (bindaddr == NULL) { 224 if (__binddynport(fd) == -1) { 225 warnx( 226 "svc_tli_create: could not bind to anonymous port"); 227 goto freedata; 228 } 229 listen(fd, SOMAXCONN); 230 } else { 231 if (bind(fd, 232 (struct sockaddr *)bindaddr->addr.buf, 233 (socklen_t)si.si_alen) < 0) { 234 warnx( 235 "svc_tli_create: could not bind to requested address"); 236 goto freedata; 237 } 238 listen(fd, (int)bindaddr->qlen); 239 } 240 241 } I expect that __rpc_sockisbound(fd) should be false if svc_tli_create() is called from svc_com_create(). Can you tell why it isn't? > Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> > --- > src/rpc_soc.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/src/rpc_soc.c b/src/rpc_soc.c > index f32a27c..cf15216 100644 > --- a/src/rpc_soc.c > +++ b/src/rpc_soc.c > @@ -331,6 +331,13 @@ svc_com_create(fd, sendsize, recvsize, netid) > madefd = TRUE; > } > > + if (__binddynport(fd) == -1) { > + if (madefd) > + (void)close(fd); > + (void) syslog(LOG_ERR, > + "svc%s_create: could not bind connection: %m", netid); > + } > + listen(fd, SOMAXCONN); > svc = svc_tli_create(fd, nconf, NULL, sendsize, recvsize); > (void) freenetconfigent(nconf); > if (svc == NULL) { > -- > 2.14.3 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Chuck Lever -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html