BSD signals -> SysV signals, int->socklet_t. Noticed by Bernhard

This commit is contained in:
"Vladimir N. Oleynik" 2005-10-05 14:01:13 +00:00
parent 4a5ce08688
commit f382c0236e

View File

@ -372,13 +372,14 @@ static void register_rpc (servtab_t *sep)
int n; int n;
struct sockaddr_in ir_sin; struct sockaddr_in ir_sin;
struct protoent *pp; struct protoent *pp;
socklen_t size;
if ((pp = getprotobyname (sep->se_proto + 4)) == NULL) { if ((pp = getprotobyname (sep->se_proto + 4)) == NULL) {
syslog (LOG_ERR, "%s: getproto: %m", sep->se_proto); syslog (LOG_ERR, "%s: getproto: %m", sep->se_proto);
return; return;
} }
n = sizeof ir_sin; size = sizeof ir_sin;
if (getsockname (sep->se_fd, (struct sockaddr *) &ir_sin, &n) < 0) { if (getsockname (sep->se_fd, (struct sockaddr *) &ir_sin, &size) < 0) {
syslog (LOG_ERR, "%s/%s: getsockname: %m", syslog (LOG_ERR, "%s/%s: getsockname: %m",
sep->se_service, sep->se_proto); sep->se_service, sep->se_proto);
return; return;
@ -479,7 +480,7 @@ setsockopt(fd, SOL_SOCKET, opt, (char *)&on, sizeof (on))
else { else {
r = bind (sep->se_fd, &sep->se_ctrladdr, sep->se_ctrladdr_size); r = bind (sep->se_fd, &sep->se_ctrladdr, sep->se_ctrladdr_size);
if (r == 0) { if (r == 0) {
int len = sep->se_ctrladdr_size; socklen_t len = sep->se_ctrladdr_size;
int saveerrno = errno; int saveerrno = errno;
/* update se_ctrladdr_in.sin_port */ /* update se_ctrladdr_in.sin_port */
@ -870,10 +871,18 @@ more:
return (sep); return (sep);
} }
#define Block_Using_Signals(m) do { sigemptyset(&m); \
sigaddset(&m, SIGCHLD); \
sigaddset(&m, SIGHUP); \
sigaddset(&m, SIGALRM); \
sigprocmask(SIG_BLOCK, &m, NULL); \
} while(0)
static servtab_t *enter (servtab_t *cp) static servtab_t *enter (servtab_t *cp)
{ {
servtab_t *sep; servtab_t *sep;
int omask; sigset_t omask;
sep = new_servtab(); sep = new_servtab();
*sep = *cp; *sep = *cp;
@ -881,10 +890,10 @@ static servtab_t *enter (servtab_t *cp)
#ifdef CONFIG_FEATURE_INETD_RPC #ifdef CONFIG_FEATURE_INETD_RPC
sep->se_rpcprog = -1; sep->se_rpcprog = -1;
#endif #endif
omask = sigblock (SIGBLOCK); Block_Using_Signals(omask);
sep->se_next = servtab; sep->se_next = servtab;
servtab = sep; servtab = sep;
sigsetmask (omask); sigprocmask(SIG_UNBLOCK, &omask, NULL);
return (sep); return (sep);
} }
@ -925,7 +934,7 @@ static int matchconf (servtab_t *old, servtab_t *new)
static void config (int sig __attribute__((unused))) static void config (int sig __attribute__((unused)))
{ {
servtab_t *sep, *cp, **sepp; servtab_t *sep, *cp, **sepp;
int omask; sigset_t omask;
int add; int add;
size_t n; size_t n;
char protoname[10]; char protoname[10];
@ -947,7 +956,7 @@ static void config (int sig __attribute__((unused)))
#define SWAP(type, a, b) do {type c=(type)a; a=(type)b; b=(type)c;} while (0) #define SWAP(type, a, b) do {type c=(type)a; a=(type)b; b=(type)c;} while (0)
omask = sigblock (SIGBLOCK); Block_Using_Signals(omask);
/* /*
* sep->se_wait may be holding the pid of a daemon * sep->se_wait may be holding the pid of a daemon
* that we're waiting for. If so, don't overwrite * that we're waiting for. If so, don't overwrite
@ -974,7 +983,7 @@ static void config (int sig __attribute__((unused)))
sep->se_rpcversl = cp->se_rpcversl; sep->se_rpcversl = cp->se_rpcversl;
sep->se_rpcversh = cp->se_rpcversh; sep->se_rpcversh = cp->se_rpcversh;
#endif #endif
sigsetmask (omask); sigprocmask(SIG_UNBLOCK, &omask, NULL);
freeconfig (cp); freeconfig (cp);
add = 1; add = 1;
} else { } else {
@ -1117,7 +1126,7 @@ static void config (int sig __attribute__((unused)))
/* /*
* Purge anything not looked at above. * Purge anything not looked at above.
*/ */
omask = sigblock (SIGBLOCK); Block_Using_Signals(omask);
sepp = &servtab; sepp = &servtab;
while ((sep = *sepp)) { while ((sep = *sepp)) {
if (sep->se_checked) { if (sep->se_checked) {
@ -1139,7 +1148,7 @@ static void config (int sig __attribute__((unused)))
freeconfig (sep); freeconfig (sep);
free (sep); free (sep);
} }
(void) sigsetmask (omask); sigprocmask(SIG_UNBLOCK, &omask, NULL);
} }
@ -1231,7 +1240,7 @@ static char *LastArg;
static void static void
inetd_setproctitle (char *a, int s) inetd_setproctitle (char *a, int s)
{ {
int size; socklen_t size;
char *cp; char *cp;
struct sockaddr_in prt_sin; struct sockaddr_in prt_sin;
char buf[80]; char buf[80];
@ -1401,7 +1410,7 @@ inetd_main (int argc, char *argv[])
} }
if (sep->se_family == AF_INET && sep->se_socktype == SOCK_STREAM) { if (sep->se_family == AF_INET && sep->se_socktype == SOCK_STREAM) {
struct sockaddr_in peer; struct sockaddr_in peer;
int plen = sizeof (peer); socklen_t plen = sizeof (peer);
if (getpeername (ctrl, (struct sockaddr *) &peer, &plen) < 0) { if (getpeername (ctrl, (struct sockaddr *) &peer, &plen) < 0) {
syslog (LOG_WARNING, "could not getpeername"); syslog (LOG_WARNING, "could not getpeername");
@ -1578,7 +1587,8 @@ static void
echo_dg (int s, servtab_t *sep __attribute__((unused))) echo_dg (int s, servtab_t *sep __attribute__((unused)))
{ {
char buffer[BUFSIZE]; char buffer[BUFSIZE];
int i, size; int i;
socklen_t size;
/* struct sockaddr_storage ss; */ /* struct sockaddr_storage ss; */
struct sockaddr sa; struct sockaddr sa;
@ -1675,8 +1685,9 @@ chargen_dg (int s, servtab_t *sep __attribute__((unused)))
/* struct sockaddr_storage ss; */ /* struct sockaddr_storage ss; */
struct sockaddr sa; struct sockaddr sa;
static char *rs; static char *rs;
int len, size; int len;
char text[LINESIZ + 2]; char text[LINESIZ + 2];
socklen_t size;
if (endring == 0) { if (endring == 0) {
initring (); initring ();
@ -1742,7 +1753,7 @@ machtime_dg (int s, servtab_t *sep __attribute__((unused)))
/* struct sockaddr_storage ss; */ /* struct sockaddr_storage ss; */
struct sockaddr sa; struct sockaddr sa;
struct sockaddr_in *dg_sin; struct sockaddr_in *dg_sin;
int size; socklen_t size;
size = sizeof (sa); size = sizeof (sa);
if (recvfrom (s, (char *) &result, sizeof (result), 0, &sa, &size) < 0) if (recvfrom (s, (char *) &result, sizeof (result), 0, &sa, &size) < 0)
@ -1781,7 +1792,7 @@ daytime_dg (int s, servtab_t *sep __attribute__((unused)))
time_t t; time_t t;
/* struct sockaddr_storage ss; */ /* struct sockaddr_storage ss; */
struct sockaddr sa; struct sockaddr sa;
int size; socklen_t size;
t = time ((time_t *) 0); t = time ((time_t *) 0);