[.....] > @@ -832,15 +833,21 @@ > if (!sep->se_rpc) { > sp = getservbyname(sep->se_service, sep->se_proto); > if (sp == 0) { > + if ((p = strtol(sep->se_service, > + (char **NULL), 10))) { > + sep->se_ctrladdr.sin_port = htons(p); > + goto numeric_override; > + } > syslog(LOG_ERR, "%s/%s: unknown service", > sep->se_service, sep->se_proto); > sep->se_checked = 0; > continue; > } > if (sp->s_port != sep->se_ctrladdr.sin_port) { > + sep->se_ctrladdr.sin_port = sp->s_port; > +numeric_override: > sep->se_ctrladdr.sin_family = AF_INET; > sep->se_ctrladdr.sin_addr = bind_address; > - sep->se_ctrladdr.sin_port = sp->s_port; > if (sep->se_fd >= 0) > close_sep(sep); > } [.....]
Yes, but do it the other way 'round - strtol first, if it's not all numeric, getservbyname(). -- Brian <br...@awfulhak.org> <br...@freebsd.org> <http://www.Awfulhak.org> <br...@openbsd.org> Don't _EVER_ lose your sense of humour ! <br...@freebsd.org.uk> To Unsubscribe: send mail to majord...@freebsd.org with "unsubscribe freebsd-hackers" in the body of the message