Cathey, Jim schrieb:
> We've been using BB, and found that when we had an /etc/inetd.conf
> file with only one service in it, said service being commented in
> and out as it was enabled/disabled by the system (along with a HUP
> to inetd), that the lone service could not re-enable. I tracked it
> down to a bug where the maxsock variable wasn't being used correctly.
> (As I recall, we also had some variable typing problems, so I changed
> two casts as well. This was with MIPS32.) Enclosed are the patches.
> The same problem was in 1.10.2, and 1.11.1 that we're using now.
>
> -- Jim Cathey
>
> diff -Naur obusybox-1.10.2/networking/inetd.c
> busybox-1.10.2/networking/inetd.c
> --- obusybox-1.10.2/networking/inetd.c 2008-04-18 23:50:27.000000000
> -0400
> +++ busybox-1.10.2/networking/inetd.c 2008-10-16 11:00:25.000000000
> -0400
> @@ -341,6 +341,7 @@
> #define INIT_G() do { \
> rlim_ofile_cur = OPEN_MAX; \
> global_queuelen = 128; \
> + maxsock = prev_maxsock = -1; \
> config_filename = "/etc/inetd.conf"; \
> } while (0)
>
> @@ -459,9 +460,9 @@
> {
> if (fd >= 0) {
> FD_SET(fd, &allsock);
> - if (maxsock >= 0 && fd > maxsock) {
> + if (fd > maxsock) {
> prev_maxsock = maxsock = fd;
> - if ((rlim_t)maxsock > rlim_ofile_cur -
> FD_MARGIN)
> + if (maxsock > (int)rlim_ofile_cur - FD_MARGIN)
> bump_nofile();
> }
> }
> @@ -476,7 +477,7 @@
> fd++;
> }
> prev_maxsock = maxsock;
> - if ((rlim_t)maxsock > rlim_ofile_cur - FD_MARGIN)
> + if (maxsock > (int)rlim_ofile_cur - FD_MARGIN)
> bump_nofile();
> }
>
you changed (rlim_t) -> (int) this seems dangerous since rlim_t can be 64bit.
what problem does it solve ?
re,
wh
_______________________________________________
busybox mailing list
[email protected]
http://busybox.net/cgi-bin/mailman/listinfo/busybox