diff options
author | "Vladimir N. Oleynik" <dzo@simtreas.ru> | 2005-10-05 14:01:13 +0000 |
---|---|---|
committer | "Vladimir N. Oleynik" <dzo@simtreas.ru> | 2005-10-05 14:01:13 +0000 |
commit | f382c0236e986c4982da3ff2a85f446395f9ff06 (patch) | |
tree | 331d9238b3a1353d9ac7f3df3cb0dde2f2f0a0b4 /networking/inetd.c | |
parent | 4a5ce08688bc22d5b66363bfad4628b0b57d60f4 (diff) | |
download | busybox-w32-f382c0236e986c4982da3ff2a85f446395f9ff06.tar.gz busybox-w32-f382c0236e986c4982da3ff2a85f446395f9ff06.tar.bz2 busybox-w32-f382c0236e986c4982da3ff2a85f446395f9ff06.zip |
BSD signals -> SysV signals, int->socklet_t. Noticed by Bernhard
Diffstat (limited to 'networking/inetd.c')
-rw-r--r-- | networking/inetd.c | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/networking/inetd.c b/networking/inetd.c index f9f380fa1..0924c5bbc 100644 --- a/networking/inetd.c +++ b/networking/inetd.c | |||
@@ -372,13 +372,14 @@ static void register_rpc (servtab_t *sep) | |||
372 | int n; | 372 | int n; |
373 | struct sockaddr_in ir_sin; | 373 | struct sockaddr_in ir_sin; |
374 | struct protoent *pp; | 374 | struct protoent *pp; |
375 | socklen_t size; | ||
375 | 376 | ||
376 | if ((pp = getprotobyname (sep->se_proto + 4)) == NULL) { | 377 | if ((pp = getprotobyname (sep->se_proto + 4)) == NULL) { |
377 | syslog (LOG_ERR, "%s: getproto: %m", sep->se_proto); | 378 | syslog (LOG_ERR, "%s: getproto: %m", sep->se_proto); |
378 | return; | 379 | return; |
379 | } | 380 | } |
380 | n = sizeof ir_sin; | 381 | size = sizeof ir_sin; |
381 | if (getsockname (sep->se_fd, (struct sockaddr *) &ir_sin, &n) < 0) { | 382 | if (getsockname (sep->se_fd, (struct sockaddr *) &ir_sin, &size) < 0) { |
382 | syslog (LOG_ERR, "%s/%s: getsockname: %m", | 383 | syslog (LOG_ERR, "%s/%s: getsockname: %m", |
383 | sep->se_service, sep->se_proto); | 384 | sep->se_service, sep->se_proto); |
384 | return; | 385 | return; |
@@ -479,7 +480,7 @@ setsockopt(fd, SOL_SOCKET, opt, (char *)&on, sizeof (on)) | |||
479 | else { | 480 | else { |
480 | r = bind (sep->se_fd, &sep->se_ctrladdr, sep->se_ctrladdr_size); | 481 | r = bind (sep->se_fd, &sep->se_ctrladdr, sep->se_ctrladdr_size); |
481 | if (r == 0) { | 482 | if (r == 0) { |
482 | int len = sep->se_ctrladdr_size; | 483 | socklen_t len = sep->se_ctrladdr_size; |
483 | int saveerrno = errno; | 484 | int saveerrno = errno; |
484 | 485 | ||
485 | /* update se_ctrladdr_in.sin_port */ | 486 | /* update se_ctrladdr_in.sin_port */ |
@@ -870,10 +871,18 @@ more: | |||
870 | return (sep); | 871 | return (sep); |
871 | } | 872 | } |
872 | 873 | ||
874 | #define Block_Using_Signals(m) do { sigemptyset(&m); \ | ||
875 | sigaddset(&m, SIGCHLD); \ | ||
876 | sigaddset(&m, SIGHUP); \ | ||
877 | sigaddset(&m, SIGALRM); \ | ||
878 | sigprocmask(SIG_BLOCK, &m, NULL); \ | ||
879 | } while(0) | ||
880 | |||
881 | |||
873 | static servtab_t *enter (servtab_t *cp) | 882 | static servtab_t *enter (servtab_t *cp) |
874 | { | 883 | { |
875 | servtab_t *sep; | 884 | servtab_t *sep; |
876 | int omask; | 885 | sigset_t omask; |
877 | 886 | ||
878 | sep = new_servtab(); | 887 | sep = new_servtab(); |
879 | *sep = *cp; | 888 | *sep = *cp; |
@@ -881,10 +890,10 @@ static servtab_t *enter (servtab_t *cp) | |||
881 | #ifdef CONFIG_FEATURE_INETD_RPC | 890 | #ifdef CONFIG_FEATURE_INETD_RPC |
882 | sep->se_rpcprog = -1; | 891 | sep->se_rpcprog = -1; |
883 | #endif | 892 | #endif |
884 | omask = sigblock (SIGBLOCK); | 893 | Block_Using_Signals(omask); |
885 | sep->se_next = servtab; | 894 | sep->se_next = servtab; |
886 | servtab = sep; | 895 | servtab = sep; |
887 | sigsetmask (omask); | 896 | sigprocmask(SIG_UNBLOCK, &omask, NULL); |
888 | return (sep); | 897 | return (sep); |
889 | } | 898 | } |
890 | 899 | ||
@@ -925,7 +934,7 @@ static int matchconf (servtab_t *old, servtab_t *new) | |||
925 | static void config (int sig __attribute__((unused))) | 934 | static void config (int sig __attribute__((unused))) |
926 | { | 935 | { |
927 | servtab_t *sep, *cp, **sepp; | 936 | servtab_t *sep, *cp, **sepp; |
928 | int omask; | 937 | sigset_t omask; |
929 | int add; | 938 | int add; |
930 | size_t n; | 939 | size_t n; |
931 | char protoname[10]; | 940 | char protoname[10]; |
@@ -947,7 +956,7 @@ static void config (int sig __attribute__((unused))) | |||
947 | 956 | ||
948 | #define SWAP(type, a, b) do {type c=(type)a; a=(type)b; b=(type)c;} while (0) | 957 | #define SWAP(type, a, b) do {type c=(type)a; a=(type)b; b=(type)c;} while (0) |
949 | 958 | ||
950 | omask = sigblock (SIGBLOCK); | 959 | Block_Using_Signals(omask); |
951 | /* | 960 | /* |
952 | * sep->se_wait may be holding the pid of a daemon | 961 | * sep->se_wait may be holding the pid of a daemon |
953 | * that we're waiting for. If so, don't overwrite | 962 | * that we're waiting for. If so, don't overwrite |
@@ -974,7 +983,7 @@ static void config (int sig __attribute__((unused))) | |||
974 | sep->se_rpcversl = cp->se_rpcversl; | 983 | sep->se_rpcversl = cp->se_rpcversl; |
975 | sep->se_rpcversh = cp->se_rpcversh; | 984 | sep->se_rpcversh = cp->se_rpcversh; |
976 | #endif | 985 | #endif |
977 | sigsetmask (omask); | 986 | sigprocmask(SIG_UNBLOCK, &omask, NULL); |
978 | freeconfig (cp); | 987 | freeconfig (cp); |
979 | add = 1; | 988 | add = 1; |
980 | } else { | 989 | } else { |
@@ -1117,7 +1126,7 @@ static void config (int sig __attribute__((unused))) | |||
1117 | /* | 1126 | /* |
1118 | * Purge anything not looked at above. | 1127 | * Purge anything not looked at above. |
1119 | */ | 1128 | */ |
1120 | omask = sigblock (SIGBLOCK); | 1129 | Block_Using_Signals(omask); |
1121 | sepp = &servtab; | 1130 | sepp = &servtab; |
1122 | while ((sep = *sepp)) { | 1131 | while ((sep = *sepp)) { |
1123 | if (sep->se_checked) { | 1132 | if (sep->se_checked) { |
@@ -1139,7 +1148,7 @@ static void config (int sig __attribute__((unused))) | |||
1139 | freeconfig (sep); | 1148 | freeconfig (sep); |
1140 | free (sep); | 1149 | free (sep); |
1141 | } | 1150 | } |
1142 | (void) sigsetmask (omask); | 1151 | sigprocmask(SIG_UNBLOCK, &omask, NULL); |
1143 | } | 1152 | } |
1144 | 1153 | ||
1145 | 1154 | ||
@@ -1231,7 +1240,7 @@ static char *LastArg; | |||
1231 | static void | 1240 | static void |
1232 | inetd_setproctitle (char *a, int s) | 1241 | inetd_setproctitle (char *a, int s) |
1233 | { | 1242 | { |
1234 | int size; | 1243 | socklen_t size; |
1235 | char *cp; | 1244 | char *cp; |
1236 | struct sockaddr_in prt_sin; | 1245 | struct sockaddr_in prt_sin; |
1237 | char buf[80]; | 1246 | char buf[80]; |
@@ -1401,7 +1410,7 @@ inetd_main (int argc, char *argv[]) | |||
1401 | } | 1410 | } |
1402 | if (sep->se_family == AF_INET && sep->se_socktype == SOCK_STREAM) { | 1411 | if (sep->se_family == AF_INET && sep->se_socktype == SOCK_STREAM) { |
1403 | struct sockaddr_in peer; | 1412 | struct sockaddr_in peer; |
1404 | int plen = sizeof (peer); | 1413 | socklen_t plen = sizeof (peer); |
1405 | 1414 | ||
1406 | if (getpeername (ctrl, (struct sockaddr *) &peer, &plen) < 0) { | 1415 | if (getpeername (ctrl, (struct sockaddr *) &peer, &plen) < 0) { |
1407 | syslog (LOG_WARNING, "could not getpeername"); | 1416 | syslog (LOG_WARNING, "could not getpeername"); |
@@ -1578,7 +1587,8 @@ static void | |||
1578 | echo_dg (int s, servtab_t *sep __attribute__((unused))) | 1587 | echo_dg (int s, servtab_t *sep __attribute__((unused))) |
1579 | { | 1588 | { |
1580 | char buffer[BUFSIZE]; | 1589 | char buffer[BUFSIZE]; |
1581 | int i, size; | 1590 | int i; |
1591 | socklen_t size; | ||
1582 | /* struct sockaddr_storage ss; */ | 1592 | /* struct sockaddr_storage ss; */ |
1583 | struct sockaddr sa; | 1593 | struct sockaddr sa; |
1584 | 1594 | ||
@@ -1675,8 +1685,9 @@ chargen_dg (int s, servtab_t *sep __attribute__((unused))) | |||
1675 | /* struct sockaddr_storage ss; */ | 1685 | /* struct sockaddr_storage ss; */ |
1676 | struct sockaddr sa; | 1686 | struct sockaddr sa; |
1677 | static char *rs; | 1687 | static char *rs; |
1678 | int len, size; | 1688 | int len; |
1679 | char text[LINESIZ + 2]; | 1689 | char text[LINESIZ + 2]; |
1690 | socklen_t size; | ||
1680 | 1691 | ||
1681 | if (endring == 0) { | 1692 | if (endring == 0) { |
1682 | initring (); | 1693 | initring (); |
@@ -1742,7 +1753,7 @@ machtime_dg (int s, servtab_t *sep __attribute__((unused))) | |||
1742 | /* struct sockaddr_storage ss; */ | 1753 | /* struct sockaddr_storage ss; */ |
1743 | struct sockaddr sa; | 1754 | struct sockaddr sa; |
1744 | struct sockaddr_in *dg_sin; | 1755 | struct sockaddr_in *dg_sin; |
1745 | int size; | 1756 | socklen_t size; |
1746 | 1757 | ||
1747 | size = sizeof (sa); | 1758 | size = sizeof (sa); |
1748 | if (recvfrom (s, (char *) &result, sizeof (result), 0, &sa, &size) < 0) | 1759 | if (recvfrom (s, (char *) &result, sizeof (result), 0, &sa, &size) < 0) |
@@ -1781,7 +1792,7 @@ daytime_dg (int s, servtab_t *sep __attribute__((unused))) | |||
1781 | time_t t; | 1792 | time_t t; |
1782 | /* struct sockaddr_storage ss; */ | 1793 | /* struct sockaddr_storage ss; */ |
1783 | struct sockaddr sa; | 1794 | struct sockaddr sa; |
1784 | int size; | 1795 | socklen_t size; |
1785 | 1796 | ||
1786 | t = time ((time_t *) 0); | 1797 | t = time ((time_t *) 0); |
1787 | 1798 | ||