diff --git a/.gitignore b/.gitignore deleted file mode 100644 index bb93fed..0000000 --- a/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -xinetd-2.3.14.tar.gz -/xinetd-2.3.15.tar.gz diff --git a/README.md b/README.md new file mode 100644 index 0000000..24b9ea2 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# Package Not Available +This package is not available on CentOS Stream 10. +It may be available on another branch. \ No newline at end of file diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..08877d0 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +xinetd package is retired on branch c10s for CS-2551 \ No newline at end of file diff --git a/gating.yaml b/gating.yaml deleted file mode 100644 index eb7c84f..0000000 --- a/gating.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- !Policy -product_versions: - - rhel-8 -decision_context: osci_compose_gate -rules: - - !PassingTestCaseRule {test_case_name: baseos-ci.brew-build.tier1.functional} diff --git a/sources b/sources deleted file mode 100644 index 7a2c7a3..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -SHA512 (xinetd-2.3.15.tar.gz) = 9d6fee1fbc90329629d84086ae7de5cd51c25af7b68e52aa704d6f74bee5f0e3d54ca1bcf780f90f74ddc8d336ae0abb5e5e368d43c426a26b8dd2c4676d26aa diff --git a/xinetd-2.3.14-autoconf.patch b/xinetd-2.3.14-autoconf.patch deleted file mode 100644 index 7ce2276..0000000 --- a/xinetd-2.3.14-autoconf.patch +++ /dev/null @@ -1,251 +0,0 @@ ---- xinetd-2.3.14/configure.in 2009-07-27 13:27:59.000000000 +0200 -+++ xinetd-2.3.14-mod/configure.in 2009-07-29 10:05:44.000000000 +0200 -@@ -20,34 +20,34 @@ AC_CHECK_FUNCS(ecvt, , - AC_CHECK_FUNCS(gcvt, , - AC_CHECK_LIB(m, gcvt)) - --AC_CHECK_FUNC(strerror, [AC_DEFINE(HAVE_STRERROR)]) --AC_CHECK_FUNC(strcasecmp, [AC_DEFINE(HAVE_STRCASECMP)]) -+AC_CHECK_FUNC(strerror, [AC_DEFINE(HAVE_STRERROR, 1, "")]) -+AC_CHECK_FUNC(strcasecmp, [AC_DEFINE(HAVE_STRCASECMP, 1, "")]) - AC_CHECK_FUNC(socket, , - AC_CHECK_LIB(socket, socket, , - AC_CHECK_LIB(nsl, socket))) - AC_CHECK_FUNC(inet_aton, , - AC_CHECK_LIB(nsl, inet_aton, , - AC_CHECK_LIB(socket, inet_aton, , -- AC_CHECK_LIB(resolv, inet_aton, ,[AC_DEFINE(NO_INET_ATON)])))) --AC_CHECK_FUNC(setenv,[AC_DEFINE(HAVE_SETENV)]) --AC_CHECK_FUNC(strsignal, [AC_DEFINE(HAVE_STRSIGNAL)]) --AC_CHECK_LIB(c, sys_siglist, [AC_DEFINE(HAVE_SYS_SIGLIST)]) --AC_CHECK_FUNC(gai_strerror,[AC_DEFINE(HAVE_GAI_STRERROR)]) --AC_CHECK_FUNC(freeaddrinfo,[AC_DEFINE(HAVE_FREEADDRINFO)]) --AC_CHECK_FUNC(getaddrinfo,[AC_DEFINE(HAVE_GETADDRINFO)]) -+ AC_CHECK_LIB(resolv, inet_aton, ,[AC_DEFINE(NO_INET_ATON, 1, "")])))) -+AC_CHECK_FUNC(setenv,[AC_DEFINE(HAVE_SETENV, 1, "")]) -+AC_CHECK_FUNC(strsignal, [AC_DEFINE(HAVE_STRSIGNAL, 1, "")]) -+AC_CHECK_LIB(c, sys_siglist, [AC_DEFINE(HAVE_SYS_SIGLIST, 1, "")]) -+AC_CHECK_FUNC(gai_strerror,[AC_DEFINE(HAVE_GAI_STRERROR, 1, "")]) -+AC_CHECK_FUNC(freeaddrinfo,[AC_DEFINE(HAVE_FREEADDRINFO, 1, "")]) -+AC_CHECK_FUNC(getaddrinfo,[AC_DEFINE(HAVE_GETADDRINFO, 1, "")]) - - AC_CHECK_HEADERS(sys/types.h sys/termios.h termios.h sys/ioctl.h sys/select.h rpc/rpc.h rpc/rpcent.h sys/file.h ftw.h machine/reg.h netdb.h) --AC_CHECK_HEADER(sys/resource.h, [AC_DEFINE(HAVE_SYS_RESOURCE_H)]) --AC_CHECK_HEADER(arpa/inet.h, [AC_DEFINE(HAVE_ARPA_INET_H)]) --AC_CHECK_HEADER(grp.h, [AC_DEFINE(HAVE_GRP_H)]) --AC_CHECK_HEADER(rpc/pmap_clnt.h, [AC_DEFINE(HAVE_RPC_PMAP_CLNT_H)]) --AC_CHECK_HEADER(sys/socket.h, [AC_DEFINE(HAVE_SYS_SOCKET_H)]) --AC_CHECK_HEADER(sys/signal.h, [AC_DEFINE(HAVE_SYS_SIGNAL_H)]) --AC_CHECK_HEADER(crypt.h, [AC_DEFINE(HAVE_CRYPT_H)]) --AC_CHECK_HEADER(stdint.h, [AC_DEFINE(HAVE_STDINT_H)]) --AC_CHECK_HEADER(stdbool.h, [AC_DEFINE(HAVE_STDBOOL_H)]) --AC_CHECK_HEADER(sys/filio.h, [AC_DEFINE(HAVE_SYS_FILIO_H)]) --AC_CHECK_HEADER(DNSServiceDiscovery/DNSServiceDiscovery.h, [AC_DEFINE(HAVE_DNSREGISTRATION) AC_DEFINE(HAVE_MDNS)]) -+AC_CHECK_HEADER(sys/resource.h, [AC_DEFINE(HAVE_SYS_RESOURCE_H, 1, "")]) -+AC_CHECK_HEADER(arpa/inet.h, [AC_DEFINE(HAVE_ARPA_INET_H, 1, "")]) -+AC_CHECK_HEADER(grp.h, [AC_DEFINE(HAVE_GRP_H, 1, "")]) -+AC_CHECK_HEADER(rpc/pmap_clnt.h, [AC_DEFINE(HAVE_RPC_PMAP_CLNT_H, 1, "")]) -+AC_CHECK_HEADER(sys/socket.h, [AC_DEFINE(HAVE_SYS_SOCKET_H, 1, "")]) -+AC_CHECK_HEADER(sys/signal.h, [AC_DEFINE(HAVE_SYS_SIGNAL_H, 1, "")]) -+AC_CHECK_HEADER(crypt.h, [AC_DEFINE(HAVE_CRYPT_H, 1, "")]) -+AC_CHECK_HEADER(stdint.h, [AC_DEFINE(HAVE_STDINT_H, 1, "")]) -+AC_CHECK_HEADER(stdbool.h, [AC_DEFINE(HAVE_STDBOOL_H, 1, "")]) -+AC_CHECK_HEADER(sys/filio.h, [AC_DEFINE(HAVE_SYS_FILIO_H, 1, "")]) -+AC_CHECK_HEADER(DNSServiceDiscovery/DNSServiceDiscovery.h, [AC_DEFINE(HAVE_DNSREGISTRATION, 1, "") AC_DEFINE(HAVE_MDNS, 1, "")]) - - AC_ARG_WITH(howl, [ --with-howl=PATH Compile in howl support. - PATH is the prefix where howl is installed, -@@ -56,7 +56,7 @@ AC_ARG_WITH(howl, [ --with-howl=PATH - OLDLDFLAGS=$LDFLAGS; LDFLAGS="-L$withval/lib/ $LDFLAGS"; - OLDCPPFLAGS=$CPPFLAGS; CPPFLAGS="-I$withval/include/howl/ $CPPFLAGS"; - AC_CHECK_HEADER($withval/include/howl/howl.h, -- [AC_DEFINE(HAVE_HOWL) AC_DEFINE(HAVE_MDNS)], -+ [AC_DEFINE(HAVE_HOWL, 1, "") AC_DEFINE(HAVE_MDNS, 1, "")], - [CFLAGS=$OLDCFLAGS; LDFLAGS=$OLDLDFLAGS; CPPFLAGS=$OLDCPPFLAGS;]) - AC_CHECK_LIB(howl, sw_discovery_publish, [LIBS="-lhowl $LIBS"], [ - OLDLIBS=$LIBS; LIBS="-lpthread $LIBS"; -@@ -88,7 +88,7 @@ AC_CACHE_CHECK([for struct addrinfo], ac - ) - ]) - if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then -- AC_DEFINE(HAVE_STRUCT_ADDRINFO) -+ AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1, "") - fi - - AC_CACHE_CHECK([for struct in6_addr], ac_cv_have_struct_in6_addr, [ -@@ -103,7 +103,7 @@ AC_CACHE_CHECK([for struct in6_addr], ac - ) - ]) - if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then -- AC_DEFINE(HAVE_STRUCT_IN6_ADDR) -+ AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, "") - fi - - AC_CACHE_CHECK([for struct sockaddr_in6], ac_cv_have_struct_sockaddr_in6, [ -@@ -118,7 +118,7 @@ AC_CACHE_CHECK([for struct sockaddr_in6] - ) - ]) - if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then -- AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6) -+ AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1, "") - fi - - AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_have_struct_sockaddr_storage, [ -@@ -133,15 +133,15 @@ AC_CACHE_CHECK([for struct sockaddr_stor - ) - ]) - if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then -- AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE) -+ AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, "") - fi - - - case "$target_os" in - - solaris*) -- AC_DEFINE(N0_SIGLIST) -- AC_DEFINE(solaris) -+ AC_DEFINE(N0_SIGLIST, 1, "") -+ AC_DEFINE(solaris, 1, "") - - AC_MSG_CHECKING(whether to compile in loadavg) - AC_ARG_WITH(loadavg, -@@ -153,12 +153,12 @@ solaris*) - yes) - AC_MSG_RESULT(yes) - AC_CHECK_LIB(kstat, main) -- AC_CHECK_HEADER(kstat.h, [AC_DEFINE(HAVE_KSTAT_H)]) -- AC_DEFINE(HAVE_LOADAVG) -+ AC_CHECK_HEADER(kstat.h, [AC_DEFINE(HAVE_KSTAT_H, 1, "")]) -+ AC_DEFINE(HAVE_LOADAVG, 1, "") - ;; - *) - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_LOADAVG) -+ AC_DEFINE(HAVE_LOADAVG, 1, "") - ;; - esac ], AC_MSG_RESULT(no) ) - ;; -@@ -172,11 +172,11 @@ osf*) - ;; - yes) - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_LOADAVG) -+ AC_DEFINE(HAVE_LOADAVG, 1, "") - ;; - *) - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_LOADAVG) -+ AC_DEFINE(HAVE_LOADAVG, 1, "") - ;; - esac ], AC_MSG_RESULT(no)) - ;; -@@ -191,18 +191,18 @@ linux*|freebsd*) - ;; - yes) - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_LOADAVG) -+ AC_DEFINE(HAVE_LOADAVG, 1, "") - ;; - *) - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_LOADAVG) -+ AC_DEFINE(HAVE_LOADAVG, 1, "") - ;; - esac ], AC_MSG_RESULT(no)) - ;; - darwin* | "Mac OS"*) - ac_cv_prog_RANLIB="ranlib" - # AC_CHECK_FUNCS doesn't look in the proper header file... -- AC_DEFINE(HAVE_ISATTY) -+ AC_DEFINE(HAVE_ISATTY, 1, "") - CFLAGS="$CFLAGS -no-cpp-precomp" - AC_MSG_CHECKING(whether to compile in loadavg) - AC_ARG_WITH(loadavg,, -@@ -212,11 +212,11 @@ darwin* | "Mac OS"*) - ;; - yes) - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_LOADAVG) -+ AC_DEFINE(HAVE_LOADAVG, 1, "") - ;; - *) - AC_MSG_RESULT(yes) -- AC_DEFINE(HAVE_LOADAVG) -+ AC_DEFINE(HAVE_LOADAVG, 1, "") - ;; - esac ], AC_MSG_RESULT(no)) - ;; -@@ -229,13 +229,13 @@ darwin* | "Mac OS"*) - ;; - yes) - AC_MSG_RESULT(yes) -- AC_DEFINE(bsdi) -- AC_DEFINE(HAVE_LOADAVG) -+ AC_DEFINE(bsdi, 1, "") -+ AC_DEFINE(HAVE_LOADAVG, 1, "") - ;; - *) - AC_MSG_RESULT(yes) -- AC_DEFINE(bsdi) -- AC_DEFINE(HAVE_LOADAVG) -+ AC_DEFINE(bsdi, 1, "") -+ AC_DEFINE(HAVE_LOADAVG, 1, "") - ;; - esac ], AC_MSG_RESULT(no)) - ;; -@@ -245,7 +245,7 @@ esac - AC_CHECK_LIB(c, crypt, [:], [ - AC_CHECK_LIB(crypt, crypt, [ - LIBS="-lcrypt $LIBS" -- AC_DEFINE(HAVE_LIBCRYPT) ], []) ]) -+ AC_DEFINE(HAVE_LIBCRYPT, 1, "") ], []) ]) - - AC_CHECK_LIB(m, log10, [ LIBS="-lm $LIBS" ], []) - -@@ -263,16 +263,16 @@ AC_ARG_WITH(libwrap, - yes) - AC_MSG_RESULT(yes) - AC_CHECK_LIB(wrap, request_init, [ -- AC_DEFINE(LIBWRAP) -+ AC_DEFINE(LIBWRAP, 1, "") - WRAPLIBS="-lwrap" -- AC_DEFINE(HAVE_LIBWRAP) ]) -+ AC_DEFINE(HAVE_LIBWRAP, 1, "") ]) - AC_CHECK_LIB(nsl, yp_get_default_domain, [ - WRAPLIBS="$WRAPLIBS -lnsl" ]) - LIBS="$WRAPLIBS $LIBS" - ;; - *) - AC_MSG_RESULT(yes) -- AC_DEFINE(LIBWRAP) -+ AC_DEFINE(LIBWRAP, 1, "") - if test -d "$withval"; then - WRAPLIBS="-L$withval -lwrap" - else -@@ -299,13 +299,13 @@ AC_ARG_WITH(labeled-networking, - yes) - AC_MSG_RESULT(yes) - AC_CHECK_LIB(selinux, setexeccon, [ -- AC_DEFINE(LABELED_NET) -+ AC_DEFINE(LABELED_NET, 1, "") - LABELLIBS="-lselinux" ]) - LIBS="$LABELLIBS $LIBS" - ;; - *) - AC_MSG_RESULT(yes) -- AC_DEFINE(LABELED_NET) -+ AC_DEFINE(LABELED_NET, 1, "") - if test -d "$withval"; then - LABELLIBS="-L$withval -lselinux" - else ---- xinetd-2.3.14/aclocal.m4 2003-02-19 18:29:27.000000000 +0100 -+++ xinetd-2.3.14-mod/aclocal.m4 2009-07-29 10:10:03.000000000 +0200 -@@ -22,6 +22,6 @@ AC_CACHE_VAL(xinetd_cv_type_$1, - #endif], xinetd_cv_type_$1=yes, xinetd_cv_type_$1=no)])dnl - AC_MSG_RESULT($xinetd_cv_type_$1) - if test $xinetd_cv_type_$1 = no; then -- AC_DEFINE($1, $2) -+ AC_DEFINE($1, $2, "") - fi - ]) diff --git a/xinetd-2.3.14-bind-ipv6.patch b/xinetd-2.3.14-bind-ipv6.patch deleted file mode 100644 index 4bce76f..0000000 --- a/xinetd-2.3.14-bind-ipv6.patch +++ /dev/null @@ -1,29 +0,0 @@ ---- xinetd-2.3.14/xinetd/service.c.old 2007-05-16 15:33:41.000000000 +0200 -+++ xinetd-2.3.14/xinetd/service.c 2007-05-16 15:29:53.000000000 +0200 -@@ -335,6 +335,15 @@ - - if ( SVC_FD(sp) == -1 ) - { -+ if (SC_BIND_ADDR(scp) == NULL && SC_IPV6( scp )) -+ { -+ /* there was no bind address configured and IPv6 fails. Try IPv4 */ -+ msg( LOG_NOTICE, func, "IPv6 socket creation failed for service %s, trying IPv4", SC_ID( scp ) ) ; -+ M_CLEAR(SC_XFLAGS(scp), SF_IPV6); -+ M_SET(SC_XFLAGS(scp), SF_IPV4); -+ return svc_activate(sp); -+ } -+ - msg( LOG_ERR, func, - "socket creation failed (%m). service = %s", SC_ID( scp ) ) ; - return( FAILED ) ; ---- xinetd-2.3.14/xinetd/confparse.c.old 2007-05-16 15:33:26.000000000 +0200 -+++ xinetd-2.3.14/xinetd/confparse.c 2007-05-16 15:15:22.000000000 +0200 -@@ -245,7 +245,7 @@ - M_SET(SC_XFLAGS(scp), SF_IPV6); - } - else -- M_SET(SC_XFLAGS(scp), SF_IPV4); -+ M_SET(SC_XFLAGS(scp), SF_IPV6); /*try bind IPv6 by default*/ - } - - if (SC_ORIG_BIND_ADDR(scp)) diff --git a/xinetd-2.3.14-clean-pfd.patch b/xinetd-2.3.14-clean-pfd.patch deleted file mode 100644 index 2509848..0000000 --- a/xinetd-2.3.14-clean-pfd.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- xinetd-2.3.14/xinetd/service.c.orig 2010-03-18 17:09:20.000000000 +0100 -+++ xinetd-2.3.14/xinetd/service.c 2010-03-18 17:09:37.000000000 +0100 -@@ -470,6 +470,7 @@ void svc_deactivate( struct service *sp - { - #ifdef HAVE_POLL - SVC_EVENTS( sp ) = 0; -+ SVC_FD( sp ) = 0; - #else - FD_CLR( SVC_FD( sp ), &ps.rws.socket_mask ) ; - #endif /* HAVE_POLL */ diff --git a/xinetd-2.3.14-file-limit.patch b/xinetd-2.3.14-file-limit.patch deleted file mode 100644 index b5a8e3a..0000000 --- a/xinetd-2.3.14-file-limit.patch +++ /dev/null @@ -1,126 +0,0 @@ -diff -Nurp xinetd-2.3.14-orig/xinetd/attr.h xinetd-2.3.14-files/xinetd/attr.h ---- xinetd-2.3.14-orig/xinetd/attr.h 2005-10-05 19:15:33.000000000 +0200 -+++ xinetd-2.3.14-files/xinetd/attr.h 2009-10-20 13:08:45.000000000 +0200 -@@ -61,12 +61,13 @@ - #define A_DISABLED 43 - #define A_MDNS 44 - #define A_LIBWRAP 45 -+#define A_RLIMIT_FILES 46 - - /* - * SERVICE_ATTRIBUTES is the number of service attributes and also - * the number from which defaults-only attributes start. - */ --#define SERVICE_ATTRIBUTES ( A_MDNS + 1 ) -+#define SERVICE_ATTRIBUTES ( A_MDNS + 2 ) - - /* - * Mask of attributes that must be specified. -diff -Nurp xinetd-2.3.14-orig/xinetd/child.c xinetd-2.3.14-files/xinetd/child.c ---- xinetd-2.3.14-orig/xinetd/child.c 2009-10-20 13:07:34.000000000 +0200 -+++ xinetd-2.3.14-files/xinetd/child.c 2009-10-20 13:10:16.000000000 +0200 -@@ -109,6 +109,10 @@ void exec_server( const struct server *s - - - #ifdef RLIMIT_NOFILE -+ if ( SC_RLIM_FILES( scp )) -+ { -+ ps.ros.max_descriptors = SC_RLIM_FILES( scp ); -+ } - rl.rlim_max = rl.rlim_cur = ps.ros.max_descriptors ; - (void) setrlimit( RLIMIT_NOFILE, &rl ) ; - #endif -diff -Nurp xinetd-2.3.14-orig/xinetd/parse.c xinetd-2.3.14-files/xinetd/parse.c ---- xinetd-2.3.14-orig/xinetd/parse.c 2005-10-05 19:15:33.000000000 +0200 -+++ xinetd-2.3.14-files/xinetd/parse.c 2009-10-20 13:08:45.000000000 +0200 -@@ -92,6 +92,9 @@ static const struct attribute service_at - #ifdef RLIMIT_DATA - { "rlimit_data", A_RLIMIT_DATA, 1, rlim_data_parser }, - #endif -+#ifdef RLIMIT_NOFILE -+ { "rlimit_files", A_RLIMIT_FILES, 1, rlim_files_parser }, -+#endif - #ifdef RLIMIT_RSS - { "rlimit_rss", A_RLIMIT_RSS, 1, rlim_rss_parser }, - #endif -diff -Nurp xinetd-2.3.14-orig/xinetd/parsers.c xinetd-2.3.14-files/xinetd/parsers.c ---- xinetd-2.3.14-orig/xinetd/parsers.c 2005-10-05 23:45:41.000000000 +0200 -+++ xinetd-2.3.14-files/xinetd/parsers.c 2009-10-20 13:08:45.000000000 +0200 -@@ -1415,6 +1415,29 @@ status_e rlim_data_parser( pset_h values - } - #endif - -+#ifdef RLIMIT_NOFILE -+status_e rlim_files_parser( pset_h values, -+ struct service_config *scp, -+ enum assign_op op ) -+{ -+ char *mem = (char *) pset_pointer( values, 0 ) ; -+ const char *func = "rlim_files_parser" ; -+ -+ if ( EQ( mem, "UNLIMITED" ) ) -+ SC_RLIM_FILES(scp) = (rlim_t)RLIM_INFINITY ; -+ else -+ { -+ if ( get_limit ( mem, &SC_RLIM_FILES(scp)) ) -+ { -+ parsemsg( LOG_ERR, func, -+ "Max files limit is invalid: %s", mem ) ; -+ return( FAILED ) ; -+ } -+ } -+ return( OK ) ; -+} -+#endif -+ - #ifdef RLIMIT_RSS - status_e rlim_rss_parser( pset_h values, - struct service_config *scp, -diff -Nurp xinetd-2.3.14-orig/xinetd/parsers.h xinetd-2.3.14-files/xinetd/parsers.h ---- xinetd-2.3.14-orig/xinetd/parsers.h 2005-10-05 19:15:33.000000000 +0200 -+++ xinetd-2.3.14-files/xinetd/parsers.h 2009-10-20 13:08:45.000000000 +0200 -@@ -57,6 +57,9 @@ status_e rlim_cpu_parser(pset_h, struct - #ifdef RLIMIT_DATA - status_e rlim_data_parser(pset_h, struct service_config *, enum assign_op) ; - #endif -+#ifdef RLIMIT_NOFILE -+status_e rlim_files_parser(pset_h, struct service_config *, enum assign_op) ; -+#endif - #ifdef RLIMIT_RSS - status_e rlim_rss_parser(pset_h, struct service_config *, enum assign_op) ; - #endif -diff -Nurp xinetd-2.3.14-orig/xinetd/sconf.h xinetd-2.3.14-files/xinetd/sconf.h ---- xinetd-2.3.14-orig/xinetd/sconf.h 2009-10-20 13:07:34.000000000 +0200 -+++ xinetd-2.3.14-files/xinetd/sconf.h 2009-10-20 13:08:45.000000000 +0200 -@@ -143,6 +143,7 @@ struct service_config - rlim_t sc_rlim_as; - rlim_t sc_rlim_cpu; - rlim_t sc_rlim_data; -+ rlim_t sc_rlim_files; - rlim_t sc_rlim_rss; - rlim_t sc_rlim_stack; - mode_t sc_umask; -@@ -191,6 +192,7 @@ struct service_config - #define SC_RLIM_AS( scp ) (scp)->sc_rlim_as - #define SC_RLIM_CPU( scp ) (scp)->sc_rlim_cpu - #define SC_RLIM_DATA( scp ) (scp)->sc_rlim_data -+#define SC_RLIM_FILES( scp ) (scp)->sc_rlim_files - #define SC_RLIM_RSS( scp ) (scp)->sc_rlim_rss - #define SC_RLIM_STACK( scp ) (scp)->sc_rlim_stack - #define SC_TYPE( scp ) (scp)->sc_type -diff -Nurp xinetd-2.3.14-orig/xinetd/xinetd.conf.man xinetd-2.3.14-files/xinetd/xinetd.conf.man ---- xinetd-2.3.14-orig/xinetd/xinetd.conf.man 2009-10-20 13:07:34.000000000 +0200 -+++ xinetd-2.3.14-files/xinetd/xinetd.conf.man 2009-10-20 13:08:45.000000000 +0200 -@@ -569,6 +569,12 @@ is implemented, it is more useful to set - rlimit_rss and rlimit_stack. This resource limit is only implemented on - Linux systems. - .TP -+.B rlimit_files -+Sets the maximum number of open files that the service may use. -+One parameter is required, which is a positive integer representing -+the number of open file descriptors. Practical limit of this number -+is around 1024000. -+.TP - .B rlimit_cpu - Sets the maximum number of CPU seconds that the service may use. - One parameter is required, which is either a positive integer representing diff --git a/xinetd-2.3.14-fix-type-punned-ptr.patch b/xinetd-2.3.14-fix-type-punned-ptr.patch deleted file mode 100644 index 993169f..0000000 --- a/xinetd-2.3.14-fix-type-punned-ptr.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/sensor.c b/sensor.c -index 09d0877..e65018c 100644 ---- a/xinetd/sensor.c -+++ b/xinetd/sensor.c -@@ -100,14 +100,15 @@ void process_sensor( const struct service *sp, const union xsockaddr *addr) - { - /* Here again, eh?...update time stamp. */ - char *exp_time; -- time_t stored_time; -+ int stored_time; - - item_matched--; /* Is # plus 1, to even get here must be >= 1 */ - exp_time = pset_pointer( global_no_access_time, item_matched ) ; - if (exp_time == NULL) - return ; - -- if ( parse_base10(exp_time, (int *)&stored_time) ) -+ /* FIXME: Parse (long int) instead of (int) prior to possible Y2K38 bug. */ -+ if ( parse_base10(exp_time, &stored_time ) ) - { /* if never let them off, bypass */ - if (stored_time != -1) - { diff --git a/xinetd-2.3.14-ident-bind.patch b/xinetd-2.3.14-ident-bind.patch deleted file mode 100644 index 2df97ea..0000000 --- a/xinetd-2.3.14-ident-bind.patch +++ /dev/null @@ -1,42 +0,0 @@ -448069: xinetd: socket bind: Invalid argument (errno = 22) when using USERID on ipv6 - -Use right size of addresses in bind() call. Also use getpeername addresses when -connecting to ident service to prevent address family mismatch between socket(), -bind() and connect() calls. - -Author: Jan Safranek -Reviewed-By: Adam Tkac - -diff -up xinetd-2.3.14/xinetd/ident.c.orig xinetd-2.3.14/xinetd/ident.c ---- xinetd-2.3.14/xinetd/ident.c.orig 2008-05-29 16:30:19.000000000 +0200 -+++ xinetd-2.3.14/xinetd/ident.c 2008-05-29 16:29:57.000000000 +0200 -@@ -97,7 +98,13 @@ idresult_e log_remote_user( const struct - } - - CLEAR( sin_contact ); -- sin_remote = *CONN_XADDRESS( SERVER_CONNECTION( serp ) ) ; -+ -+ sin_len = sizeof( sin_remote ); -+ if ( getpeername( SERVER_FD( serp ), &sin_remote.sa, &sin_len ) == -1 ) -+ { -+ msg( LOG_ERR, func, "(%d) getpeername: %m", getpid() ) ; -+ return( IDR_ERROR ) ; -+ } - sin_contact = sin_remote; - memcpy( &sin_bind, &sin_local, sizeof(sin_bind) ) ; - local_port = 0; -@@ -121,7 +128,13 @@ idresult_e log_remote_user( const struct - msg( LOG_ERR, func, "socket creation: %m" ) ; - return( IDR_ERROR ) ; - } -- if ( bind(sd, &sin_bind.sa, sizeof(sin_bind.sa)) == -1 ) -+ -+ if ( sin_bind.sa.sa_family == AF_INET ) -+ sin_len = sizeof( sin_bind.sa_in ) ; -+ else -+ sin_len = sizeof( sin_bind.sa_in6 ) ; -+ -+ if ( bind(sd, &sin_bind.sa, sin_len) == -1 ) - { - msg( LOG_ERR, func, "socket bind: %m" ) ; - (void) Sclose( sd ) ; diff --git a/xinetd-2.3.14-instances.patch b/xinetd-2.3.14-instances.patch deleted file mode 100644 index 6def242..0000000 --- a/xinetd-2.3.14-instances.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- xinetd-2.3.14/xinetd/access.c 2005-10-05 19:15:33.000000000 +0200 -+++ xinetd-2.3.14-mod/xinetd/access.c 2012-03-05 14:54:30.935416926 +0100 -@@ -73,6 +73,7 @@ static void cps_service_restart(void) - unsigned int i; - time_t nowtime; - const char *func = "cps_service_restart"; -+ int rs; - - nowtime = time(NULL); - for( i=0; i < pset_count( SERVICES(ps) ); i++ ) { -@@ -84,8 +85,11 @@ static void cps_service_restart(void) - if( SVC_STATE(sp) == SVC_DISABLED ) { - scp = SVC_CONF( sp ); - if ( SC_TIME_REENABLE(scp) <= nowtime ) { -+ rs = SVC_RUNNING_SERVERS(sp); - /* re-enable the service */ - if( svc_activate(sp) == OK ) { -+ /* remember running servers after restart */ -+ SVC_RUNNING_SERVERS(sp) = rs; - msg(LOG_ERR, func, - "Activating service %s", SC_NAME(scp)); - } else { diff --git a/xinetd-2.3.14-ipv6confusion.patch b/xinetd-2.3.14-ipv6confusion.patch deleted file mode 100644 index 5f0b431..0000000 --- a/xinetd-2.3.14-ipv6confusion.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- xinetd-2.3.14/xinetd/ident.c.jw 2010-03-10 17:49:53.000000000 +1100 -+++ xinetd-2.3.14/xinetd/ident.c 2010-03-10 17:50:30.000000000 +1100 -@@ -108,12 +108,12 @@ - memcpy( &sin_bind, &sin_local, sizeof(sin_bind) ) ; - local_port = 0; - remote_port = 0; -- if( sin_remote.sa.sa_family == AF_INET ) { -+ if( sin_remote.sa.sa_family == AF_INET6 ) { - local_port = ntohs( sin_local.sa_in6.sin6_port ) ; - remote_port = ntohs( sin_remote.sa_in6.sin6_port ) ; - sin_contact.sa_in6.sin6_port = htons( IDENTITY_SERVICE_PORT ) ; - sin_bind.sa_in.sin_port = 0 ; -- } else if( sin_remote.sa.sa_family == AF_INET6 ) { -+ } else if( sin_remote.sa.sa_family == AF_INET ) { - local_port = ntohs( sin_local.sa_in.sin_port ) ; - remote_port = ntohs( sin_remote.sa_in.sin_port ) ; - sin_contact.sa_in.sin_port = htons( IDENTITY_SERVICE_PORT ) ; diff --git a/xinetd-2.3.14-leaking-fds-2a.patch b/xinetd-2.3.14-leaking-fds-2a.patch deleted file mode 100644 index 90901e5..0000000 --- a/xinetd-2.3.14-leaking-fds-2a.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff -Naur xinetd-2.3.14-dist/xinetd/service.c xinetd-2.3.14/xinetd/service.c ---- xinetd-2.3.14-dist/xinetd/service.c 2012-04-03 08:59:19.000000000 +0200 -+++ xinetd-2.3.14/xinetd/service.c 2012-04-03 09:02:34.588160317 +0200 -@@ -366,12 +366,24 @@ - - msg( LOG_ERR, func, - "socket creation failed (%m). service = %s", SC_ID( scp ) ) ; -+#ifdef HAVE_POLL -+ SVC_EVENTS( sp ) = 0; -+ SVC_FD( sp ) = 0; -+#else -+ FD_CLR( SVC_FD( sp ), &ps.rws.socket_mask ) ; -+#endif /* HAVE_POLL */ - return( FAILED ) ; - } - - if ( set_fd_modes( sp ) == FAILED ) - { - (void) Sclose( SVC_FD(sp) ) ; -+#ifdef HAVE_POLL -+ SVC_EVENTS( sp ) = 0; -+ SVC_FD( sp ) = 0; -+#else -+ FD_CLR( SVC_FD( sp ), &ps.rws.socket_mask ) ; -+#endif /* HAVE_POLL */ - return( FAILED ) ; - } - -@@ -385,6 +397,12 @@ - if ( status == FAILED ) - { - (void) Sclose( SVC_FD(sp) ) ; -+#ifdef HAVE_POLL -+ SVC_EVENTS( sp ) = 0; -+ SVC_FD( sp ) = 0; -+#else -+ FD_CLR( SVC_FD( sp ), &ps.rws.socket_mask ) ; -+#endif /* HAVE_POLL */ - return( FAILED ) ; - } - diff --git a/xinetd-2.3.14-leaking-fds.patch b/xinetd-2.3.14-leaking-fds.patch deleted file mode 100644 index bc1b919..0000000 --- a/xinetd-2.3.14-leaking-fds.patch +++ /dev/null @@ -1,52 +0,0 @@ -diff -up xinetd-2.3.14-dist/xinetd/service.c xinetd-2.3.14/xinetd/service.c ---- xinetd-2.3.14-dist/xinetd/service.c 2012-01-11 11:50:43.438650900 +0100 -+++ xinetd-2.3.14/xinetd/service.c 2012-01-16 08:18:09.462620084 +0100 -@@ -88,6 +88,7 @@ struct service *svc_new( struct service_ - CLEAR( *sp ) ; - - SVC_CONF(sp) = scp ; -+ sp->svc_pfd_index = -1; - return( sp ) ; - } - -@@ -346,7 +347,16 @@ status_e svc_activate( struct service *s - ps.rws.pfds_last)*sizeof(struct pollfd)); - ps.rws.pfd_array = tmp; - } -- SVC_POLLFD( sp ) = &ps.rws.pfd_array[ps.rws.pfds_last++] ; -+ if ( sp->svc_pfd_index >= 0 ) -+ { -+ SVC_POLLFD( sp ) = &ps.rws.pfd_array[sp->svc_pfd_index] ; -+ } -+ else -+ { -+ sp->svc_pfd_index = ps.rws.pfds_last ; -+ SVC_POLLFD( sp ) = &ps.rws.pfd_array[ps.rws.pfds_last++] ; -+ } -+ - #endif /* HAVE_POLL */ - - if( SC_IPV4( scp ) ) { -@@ -433,6 +443,11 @@ status_e svc_activate( struct service *s - static void deactivate( const struct service *sp ) - { - (void) Sclose( SVC_FD( sp ) ) ; -+#ifdef HAVE_POLL -+ SVC_FD( sp ) = 0; -+#else -+ FD_CLR( SVC_FD( sp ), &ps.rws.socket_mask ) ; -+#endif - - #ifdef HAVE_MDNS - xinetd_mdns_deregister(SVC_CONF(sp)); -diff -up xinetd-2.3.14-dist/xinetd/service.h xinetd-2.3.14/xinetd/service.h ---- xinetd-2.3.14-dist/xinetd/service.h 2012-01-11 11:50:43.418650925 +0100 -+++ xinetd-2.3.14/xinetd/service.h 2012-01-16 08:02:59.667553008 +0100 -@@ -47,6 +47,7 @@ struct service - { - state_e svc_state ; - int svc_ref_count ; /* # of pters to this struct */ -+ int svc_pfd_index; /* index of pfd in pfd_array */ - struct service_config *svc_conf ; /* service configuration */ - - #ifdef HAVE_POLL diff --git a/xinetd-2.3.14-man-section.patch b/xinetd-2.3.14-man-section.patch deleted file mode 100644 index 03f1914..0000000 --- a/xinetd-2.3.14-man-section.patch +++ /dev/null @@ -1,16 +0,0 @@ -117746: xinetd.log man page in wrong section - -Put xinetd.log to the right man section. - -diff -up xinetd-2.3.13/Makefile.in.orig xinetd-2.3.13/Makefile.in ---- xinetd-2.3.13/Makefile.in.orig 2007-12-06 10:58:32.000000000 +0100 -+++ xinetd-2.3.13/Makefile.in 2008-01-15 13:39:38.000000000 +0100 -@@ -80,7 +80,7 @@ install: build - $(INSTALL_CMD) -m 755 xinetd/itox $(DAEMONDIR) - $(INSTALL_CMD) -m 755 $(SRCDIR)/xinetd/xconv.pl $(DAEMONDIR) - $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.conf.man $(MANDIR)/man5/xinetd.conf.5 -- $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.log.man $(MANDIR)/man8/xinetd.log.8 -+ $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.log.man $(MANDIR)/man5/xinetd.log.5 - $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xinetd.man $(MANDIR)/man8/xinetd.8 - $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/itox.8 $(MANDIR)/man8/itox.8 - $(INSTALL_CMD) -m 644 $(SRCDIR)/xinetd/xconv.pl.8 $(MANDIR)/man8/xconv.pl.8 diff --git a/xinetd-2.3.14-many-services.patch b/xinetd-2.3.14-many-services.patch deleted file mode 100644 index 8459b6c..0000000 --- a/xinetd-2.3.14-many-services.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- xinetd-2.3.14-dist/xinetd/defs.h 2012-01-16 12:20:54.739041678 +0100 -+++ xinetd-2.3.14/xinetd/defs.h 2012-01-17 08:06:56.800762230 +0100 -@@ -115,8 +115,9 @@ union xsockaddr { - */ - - #ifdef HAVE_POLL --#define INIT_POLLFDS 1024 --#define MAX_POLLFDS 8192 -+#define INIT_POLLFDS 4096 -+/* FIXME: not used */ -+#define MAX_POLLFDS 16384 - #endif - - /* ---- xinetd-2.3.14-dist/xinetd/service.c 2012-01-16 12:20:54.741041678 +0100 -+++ xinetd-2.3.14/xinetd/service.c 2012-01-17 08:07:28.872746991 +0100 -@@ -343,9 +343,9 @@ status_e svc_activate( struct service *s - out_of_memory( func ); - return( FAILED ); - } -+ ps.rws.pfd_array = tmp; - memset(&ps.rws.pfd_array[ps.rws.pfds_last], 0, (ps.rws.pfds_allocated- - ps.rws.pfds_last)*sizeof(struct pollfd)); -- ps.rws.pfd_array = tmp; - } - if ( sp->svc_pfd_index >= 0 ) - { diff --git a/xinetd-2.3.14-poll.patch b/xinetd-2.3.14-poll.patch deleted file mode 100644 index bd87ae5..0000000 --- a/xinetd-2.3.14-poll.patch +++ /dev/null @@ -1,1202 +0,0 @@ -diff -Nurp xinetd-2.3.14-orig/config.h.in xinetd-2.3.14-poll/config.h.in ---- xinetd-2.3.14-orig/config.h.in 2009-07-27 13:27:59.000000000 +0200 -+++ xinetd-2.3.14-poll/config.h.in 2009-09-02 11:30:27.000000000 +0200 -@@ -106,6 +106,8 @@ - - #undef HAVE_HOWL - -+#undef HAVE_POLL -+ - /* OS specific */ - #undef solaris - -diff -Nurp xinetd-2.3.14-orig/configure.in xinetd-2.3.14-poll/configure.in ---- xinetd-2.3.14-orig/configure.in 2009-09-02 11:32:54.000000000 +0200 -+++ xinetd-2.3.14-poll/configure.in 2009-09-02 11:30:27.000000000 +0200 -@@ -35,6 +35,7 @@ AC_CHECK_LIB(c, sys_siglist, [AC_DEFINE( - AC_CHECK_FUNC(gai_strerror,[AC_DEFINE(HAVE_GAI_STRERROR, 1, "")]) - AC_CHECK_FUNC(freeaddrinfo,[AC_DEFINE(HAVE_FREEADDRINFO, 1, "")]) - AC_CHECK_FUNC(getaddrinfo,[AC_DEFINE(HAVE_GETADDRINFO, 1, "")]) -+AC_CHECK_FUNC(poll, [AC_DEFINE(HAVE_POLL, 1, "")]) - - AC_CHECK_HEADERS(sys/types.h sys/termios.h termios.h sys/ioctl.h sys/select.h rpc/rpc.h rpc/rpcent.h sys/file.h ftw.h machine/reg.h netdb.h) - AC_CHECK_HEADER(sys/resource.h, [AC_DEFINE(HAVE_SYS_RESOURCE_H, 1, "")]) -diff -Nurp xinetd-2.3.14-orig/xinetd/conf.c xinetd-2.3.14-poll/xinetd/conf.c ---- xinetd-2.3.14-orig/xinetd/conf.c 2003-12-30 14:44:09.000000000 +0100 -+++ xinetd-2.3.14-poll/xinetd/conf.c 2009-09-02 11:30:27.000000000 +0200 -@@ -209,8 +209,13 @@ unsigned cnf_start_services( struct conf - pset_clear( sconfs ) ; - - if ( debug.on ) -+#ifdef HAVE_POLL -+ msg( LOG_DEBUG, func, "pfds_last = %d, services_started = %d", -+ ps.rws.pfds_last, services_started ) ; -+#else - msg( LOG_DEBUG, func, "mask_max = %d, services_started = %d", - ps.rws.mask_max, services_started ) ; -+#endif - - return( services_started ) ; - } -diff -Nurp xinetd-2.3.14-orig/xinetd/defs.h xinetd-2.3.14-poll/xinetd/defs.h ---- xinetd-2.3.14-orig/xinetd/defs.h 2005-03-29 17:50:34.000000000 +0200 -+++ xinetd-2.3.14-poll/xinetd/defs.h 2009-09-02 11:30:27.000000000 +0200 -@@ -111,6 +111,15 @@ union xsockaddr { - #define LISTEN_BACKLOG 64 - - /* -+ * constants for limiting ps.rws.fd_list -+ */ -+ -+#ifdef HAVE_POLL -+#define INIT_POLLFDS 1024 -+#define MAX_POLLFDS 8192 -+#endif -+ -+/* - * When explicit values are given for enum's, that is because the structures - * that the enum's are in may be initialized by a memory clear operation. - */ -diff -Nurp xinetd-2.3.14-orig/xinetd/child.c xinetd-2.3.14-poll/xinetd/child.c ---- xinetd-2.3.14-orig/xinetd/child.c 2003-09-06 16:41:59.000000000 +0200 -+++ xinetd-2.3.14-poll/xinetd/child.c 2009-09-02 11:30:27.000000000 +0200 -@@ -109,8 +109,7 @@ void exec_server( const struct server *s - - - #ifdef RLIMIT_NOFILE -- rl.rlim_max = ps.ros.orig_max_descriptors ; -- rl.rlim_cur = ps.ros.max_descriptors ; -+ rl.rlim_max = rl.rlim_cur = ps.ros.max_descriptors ; - (void) setrlimit( RLIMIT_NOFILE, &rl ) ; - #endif - #ifdef RLIMIT_AS -diff -Nurp xinetd-2.3.14-orig/xinetd/init.c xinetd-2.3.14-poll/xinetd/init.c ---- xinetd-2.3.14-orig/xinetd/init.c 2003-09-06 16:41:59.000000000 +0200 -+++ xinetd-2.3.14-poll/xinetd/init.c 2009-09-02 11:30:27.000000000 +0200 -@@ -17,7 +17,7 @@ - #include - #include - #include -- -+#include - #include "sio.h" - #include "init.h" - #include "defs.h" -@@ -140,7 +140,6 @@ static void set_fd_limit(void) - { - #ifdef RLIMIT_NOFILE - struct rlimit rl ; -- rlim_t maxfd ; - - /* - * Set the soft file descriptor limit to the hard limit. -@@ -151,25 +150,9 @@ static void set_fd_limit(void) - exit( 1 ) ; - } - -- maxfd = rl.rlim_max; - if ( rl.rlim_max == RLIM_INFINITY ) - rl.rlim_max = FD_SETSIZE; - -- /* XXX: a dumb way to prevent fd_set overflow possibilities; the rest -- * of xinetd should be changed to use an OpenBSD inetd-like fd_grow(). */ -- if ( rl.rlim_max > FD_SETSIZE ) -- rl.rlim_max = FD_SETSIZE; -- -- rl.rlim_cur = rl.rlim_max ; -- if ( setrlimit( RLIMIT_NOFILE, &rl ) == -1 ) -- { -- syscall_failed("setrlimit(RLIMIT_NOFILE)"); -- ps.ros.max_descriptors = FD_SETSIZE; -- ps.ros.orig_max_descriptors = FD_SETSIZE; -- return ; -- } -- -- ps.ros.orig_max_descriptors = maxfd ; - ps.ros.max_descriptors = rl.rlim_max ; - #else /* ! RLIMIT_NOFILE */ - ps.ros.max_descriptors = getdtablesize() ; -@@ -292,15 +275,27 @@ static pset_h new_table( unsigned size ) - */ - static void init_rw_state( void ) - { -+ const char *func = "init_rw_state" ; - SERVERS( ps ) = new_table( 0 ) ; - RETRIES( ps ) = new_table( 0 ) ; - SERVICES( ps ) = new_table( 0 ) ; - - ps.rws.descriptors_free = ps.ros.max_descriptors - DESCRIPTORS_RESERVED ; - -+#ifdef HAVE_POLL -+ ps.rws.pfds_allocated = INIT_POLLFDS ; -+ ps.rws.pfd_array = (struct pollfd *) -+ malloc( sizeof( struct pollfd ) * ps.rws.pfds_allocated ) ; -+ if ( ps.rws.pfd_array == NULL ) -+ { -+ out_of_memory(func); -+ exit( 1 ) ; -+ } -+ ps.rws.pfds_last = 0 ; -+#else - FD_ZERO( &ps.rws.socket_mask ) ; - ps.rws.mask_max = 0 ; -- -+#endif /* HAVE_POLL */ - } - - -diff -Nurp xinetd-2.3.14-orig/xinetd/intcommon.c xinetd-2.3.14-poll/xinetd/intcommon.c ---- xinetd-2.3.14-orig/xinetd/intcommon.c 2003-08-06 08:12:10.000000000 +0200 -+++ xinetd-2.3.14-poll/xinetd/intcommon.c 2009-09-03 16:15:49.000000000 +0200 -@@ -14,6 +14,9 @@ - #include - #include - #include -+#ifdef HAVE_POLL -+#include -+#endif - - #include "intcommon.h" - #include "msg.h" -@@ -36,27 +39,38 @@ void int_fail( const struct intercept_s - /* - * Returns either a positive number or -1 - */ -+#ifdef HAVE_POLL -+int int_poll( int pfds_last, struct pollfd *pfd_array ) -+{ -+ const char *func = "int_poll" ; -+#else - int int_select( int max, fd_set *read_mask ) - { - const char *func = "int_select" ; -+#endif - - for ( ;; ) - { - int n_ready ; - -- n_ready = select( max+1, read_mask, -- FD_SET_NULL, FD_SET_NULL, TIMEVAL_NULL ) ; -+ do { -+#ifdef HAVE_POLL -+ n_ready = poll( pfd_array, pfds_last, -1 ); -+#else -+ n_ready = select( max+1, read_mask, -+ FD_SET_NULL, FD_SET_NULL, TIMEVAL_NULL ) ; -+#endif -+ } while (n_ready == -1 && errno == EINTR); -+ -+ - if ( n_ready > 0 ) - return( n_ready ) ; -- else if ( n_ready == -1 ) { -- if ( errno == EINTR ) -- continue ; -- else -- { -- msg( LOG_ERR, func, "select: %m" ) ; -- return( -1 ) ; -- } -- } -+#ifdef HAVE_POLL -+ msg( LOG_ERR, func, "poll: %m" ) ; -+#else -+ msg( LOG_ERR, func, "select: %m" ) ; -+#endif -+ return( -1 ) ; - } - } - -diff -Nurp xinetd-2.3.14-orig/xinetd/internals.c xinetd-2.3.14-poll/xinetd/internals.c ---- xinetd-2.3.14-orig/xinetd/internals.c 2003-09-06 16:41:59.000000000 +0200 -+++ xinetd-2.3.14-poll/xinetd/internals.c 2009-09-03 10:38:29.000000000 +0200 -@@ -53,6 +53,9 @@ void dump_internal_state(void) - const char *dump_file = DUMP_FILE ; - time_t current_time ; - int fd ; -+#ifdef HAVE_POLL -+ int *listed_fds; -+#endif - unsigned u ; - const char *func = "dump_internal_state" ; - -@@ -104,6 +107,41 @@ void dump_internal_state(void) - server_dump( SERP( pset_pointer( RETRIES( ps ), u ) ), dump_fd ) ; - Sputchar( dump_fd, '\n' ) ; - -+#ifdef HAVE_POLL -+ /* -+ * Dump the socket mask -+ */ -+ listed_fds = (int *)calloc(sizeof(int),ps.ros.max_descriptors); -+ if (listed_fds != NULL) -+ { -+ Sprint( dump_fd, "Socket mask:" ) ; -+ for ( fd = 0 ; fd < ps.rws.pfds_last ; fd++ ) -+ { -+ listed_fds[ps.rws.pfd_array[fd].fd] = 1; -+ Sprint( dump_fd, " %d", ps.rws.pfd_array[fd].fd ) ; -+ } -+ Sputchar( dump_fd, '\n' ) ; -+ Sprint( dump_fd, "pfds_last = %d\n", ps.rws.pfds_last ) ; -+ -+ /* -+ * Dump the descriptors that are open and are *not* in the socket list -+ */ -+ Sprint( dump_fd, "Open descriptors (not in socket mask):" ) ; -+ for ( fd = 0 ; (unsigned)fd < ps.ros.max_descriptors ; fd++ ) -+ { -+ struct stat st ; -+ -+ if ( !listed_fds[fd] && fstat( fd, &st ) != -1 ) -+ Sprint( dump_fd, " %d", fd ) ; -+ } -+ -+ Sputchar( dump_fd, '\n' ) ; -+ Sputchar( dump_fd, '\n' ) ; -+ free(listed_fds); -+ } -+ else -+ Sprint( dump_fd, "Could not dump open descriptors, not enough memory!\n" ); -+#else /* !HAVE_POLL */ - /* - * Dump the socket mask - */ -@@ -114,6 +152,7 @@ void dump_internal_state(void) - Sputchar( dump_fd, '\n' ) ; - Sprint( dump_fd, "mask_max = %d\n", ps.rws.mask_max ) ; - -+ - /* - * Dump the descriptors that are open and are *not* in the socket mask - */ -@@ -130,6 +169,7 @@ void dump_internal_state(void) - } - Sputchar( dump_fd, '\n' ) ; - Sputchar( dump_fd, '\n' ) ; -+#endif /* !HAVE_POLL */ - - Sprint( dump_fd, "active_services = %d\n", ps.rws.active_services ) ; - Sprint( dump_fd, "available_services = %d\n", ps.rws.available_services ) ; -@@ -162,7 +202,6 @@ enum check_type { PERIODIC, USER_REQUEST - static void consistency_check( enum check_type type ) - { - int fd ; -- fd_set socket_mask_copy ; - unsigned u ; - int errors ; - unsigned total_running_servers = 0 ; -@@ -171,7 +210,19 @@ static void consistency_check( enum chec - bool_int service_count_check_failed = FALSE ; - const char *func = "consistency_check" ; - -+ -+#ifdef HAVE_POLL -+ struct pollfd *pfd_array_copy = calloc(sizeof(struct pollfd), ps.rws.pfds_last); -+ if (pfd_array_copy == NULL) -+ { -+ msg( LOG_ERR, func, "Could not run consistency check! Not enough memory!\n" ) ; -+ return; -+ } -+ memcpy(pfd_array_copy, ps.rws.pfd_array, ps.rws.pfds_last*sizeof(struct pollfd)); -+#else /* !HAVE_POLL */ -+ fd_set socket_mask_copy ; - socket_mask_copy = ps.rws.socket_mask ; -+#endif /* HAVE_POLL */ - - for ( u = 0 ; u < pset_count( SERVICES( ps ) ) ; u++ ) - { -@@ -184,9 +235,22 @@ static void consistency_check( enum chec - - if ( SVC_IS_AVAILABLE( sp ) || SVC_IS_DISABLED ( sp ) ) - { -+ - /* - * In this case, there may be some servers running - */ -+#ifdef HAVE_POLL -+ if ( pfd_array_copy[ SVC_POLLFD_OFF( sp ) ].events ) -+ { -+ if ( SVC_IS_DISABLED( sp ) ) -+ { -+ msg( LOG_ERR, func, -+ "fd of disabled service %s still in socket mask", sid ) ; -+ error_count++ ; -+ } -+ pfd_array_copy[ SVC_POLLFD_OFF( sp ) ].events = 0; -+ } -+#else /* !HAVE_POLL */ - if ( FD_ISSET( SVC_FD( sp ), &socket_mask_copy ) ) - { - if ( SVC_IS_DISABLED( sp ) ) -@@ -197,8 +261,9 @@ static void consistency_check( enum chec - } - FD_CLR( SVC_FD( sp ), &socket_mask_copy ) ; - } -- error_count += thread_check( sp, running_servers, retry_servers ) ; -+#endif /* HAVE_POLL */ - -+ error_count += thread_check( sp, running_servers, retry_servers ) ; - errors = service_count_check( sp, running_servers, retry_servers ) ; - if ( ! errors && ! service_count_check_failed ) - { -@@ -248,6 +313,18 @@ static void consistency_check( enum chec - /* - * Check if there are any descriptors set in socket_mask_copy - */ -+#ifdef HAVE_POLL -+ for ( fd = 0 ; fd < ps.rws.pfds_last ; fd++) -+ if ( pfd_array_copy[fd].events && pfd_array_copy[fd].fd != signals_pending[0] && -+ pfd_array_copy[fd].fd != signals_pending[1] ) -+ { -+ msg( LOG_ERR, func, -+ "descriptor %d set in socket mask but there is no service for it", -+ fd ) ; -+ error_count++ ; -+ } -+ free(pfd_array_copy); -+#else /* !HAVE_POLL */ - for ( fd = 0 ; (unsigned)fd < ps.ros.max_descriptors ; fd++ ) - if ( FD_ISSET( fd, &socket_mask_copy ) && ((fd != signals_pending[0]) && fd != signals_pending[1])) - { -@@ -256,6 +333,7 @@ static void consistency_check( enum chec - fd ) ; - error_count++ ; - } -+#endif /* !HAVE_POLL */ - - if ( error_count != 0 ) - msg( LOG_WARNING, func, -@@ -304,7 +382,6 @@ static unsigned service_count_check( str - } - - -- - /* - * If the service is single-threaded: - * if the descriptor is set in the socket mask, there must -@@ -317,7 +394,11 @@ static unsigned thread_check( struct ser - unsigned retry_servers ) - { - unsigned error_count = 0 ; -+#ifdef HAVE_POLL -+ struct pollfd *pfd= SVC_POLLFD( sp ) ; -+#else - int sd = SVC_FD( sp ) ; -+#endif - char *sid = SVC_ID( sp ) ; - const char *func = "thread_check" ; - -@@ -325,13 +406,21 @@ static unsigned thread_check( struct ser - { - bool_int has_servers = ( running_servers + retry_servers != 0 ) ; - -+#ifdef HAVE_POLL -+ if ( has_servers && pfd->events ) -+#else - if ( has_servers && FD_ISSET( sd, &ps.rws.socket_mask ) ) -+#endif - { - msg( LOG_ERR, func, - "Active single-threaded service %s: server running, descriptor set", sid ) ; - error_count++ ; - } -+#ifdef HAVE_POLL -+ if ( !has_servers && !pfd->events ) -+#else - if ( !has_servers && !FD_ISSET( sd, &ps.rws.socket_mask ) ) -+#endif - { - msg( LOG_ERR, func, - "Active single-threaded service %s: no server running, descriptor not set", -@@ -340,7 +429,11 @@ static unsigned thread_check( struct ser - } - } - else -+#ifdef HAVE_POLL -+ if ( ! pfd->events ) -+#else - if ( ! FD_ISSET( sd, &ps.rws.socket_mask ) ) -+#endif - { - msg( LOG_ERR, func, - "Active multi-threaded service %s: descriptor not set", sid ) ; -diff -Nurp xinetd-2.3.14-orig/xinetd/main.c xinetd-2.3.14-poll/xinetd/main.c ---- xinetd-2.3.14-orig/xinetd/main.c 2009-07-27 13:27:59.000000000 +0200 -+++ xinetd-2.3.14-poll/xinetd/main.c 2009-09-03 16:23:11.000000000 +0200 -@@ -25,6 +25,9 @@ - #include "xtimer.h" - #include "sensor.h" - #include "xmdns.h" -+#ifdef HAVE_POLL -+#include "xpoll.h" -+#endif - - #ifdef __GNUC__ - __attribute__ ((noreturn)) -@@ -119,16 +122,24 @@ static void main_loop(void) - { - const char *func = "main_loop" ; - struct timeval tv, *tvptr = NULL; -+#ifdef HAVE_POLL -+ struct pollfd *signal_pfd; - -- FD_SET(signals_pending[0], &ps.rws.socket_mask); -+ ps.rws.pfd_array[ps.rws.pfds_last].fd = signals_pending[0] ; -+ ps.rws.pfd_array[ps.rws.pfds_last].events = POLLIN ; -+ signal_pfd = &ps.rws.pfd_array[ps.rws.pfds_last] ; -+ ps.rws.pfds_last++; -+#else -+ FD_SET(signals_pending[0], &ps.rws.socket_mask) ; - if ( signals_pending[0] > ps.rws.mask_max ) - ps.rws.mask_max = signals_pending[0] ; -- if ( signals_pending[1] > ps.rws.mask_max ) -- ps.rws.mask_max = signals_pending[1] ; -+#endif /* HAVE_POLL */ - - for ( ;; ) - { -+#ifndef HAVE_POLL - fd_set read_mask ; -+#endif - int n_active ; - unsigned u ; - -@@ -144,9 +155,14 @@ static void main_loop(void) - tvptr = NULL; - } - -+#ifdef HAVE_POLL -+ n_active = poll( ps.rws.pfd_array, ps.rws.pfds_last, -+ tvptr == NULL ? -1 : tvptr->tv_sec*1000 ) ; -+#else - read_mask = ps.rws.socket_mask ; - n_active = select( ps.rws.mask_max+1, &read_mask, - FD_SET_NULL, FD_SET_NULL, tvptr ) ; -+#endif - if ( n_active == -1 ) - { - if ( errno == EINTR ) { -@@ -165,11 +181,27 @@ static void main_loop(void) - - xtimer_poll(); - -- if( FD_ISSET(signals_pending[0], &read_mask) ) { -+#ifdef HAVE_POLL -+ if ( POLLFD_REVENTS( signal_pfd ) ) -+ { -+ if ( POLLFD_REVENTS( signal_pfd ) & (POLLERR | POLLHUP | -+ POLLNVAL) ) -+ find_bad_fd(); -+ else -+ { -+ check_pipe(); -+ if ( --n_active == 0 ) -+ continue ; -+ } -+ } -+#else -+ if( FD_ISSET(signals_pending[0], &read_mask) ) -+ { - check_pipe(); - if ( --n_active == 0 ) - continue ; - } -+#endif - - #ifdef HAVE_MDNS - if( xinetd_mdns_poll() == 0 ) -@@ -186,19 +218,33 @@ static void main_loop(void) - if ( ! SVC_IS_ACTIVE( sp ) ) - continue ; - -+#ifdef HAVE_POLL -+ if ( SVC_REVENTS( sp ) ) -+ { -+ if ( SVC_REVENTS( sp ) & (POLLERR | POLLHUP | -+ POLLNVAL) ) -+ find_bad_fd(); -+ else -+ { -+ svc_request( sp ) ; -+ if ( --n_active == 0 ) -+ break ; -+ } -+ } -+#else - if ( FD_ISSET( SVC_FD( sp ), &read_mask ) ) - { - svc_request( sp ) ; - if ( --n_active == 0 ) - break ; - } -+#endif - } - if ( n_active > 0 ) - msg( LOG_ERR, func, "%d descriptors still set", n_active ) ; - } - } - -- - /* - * This function identifies if any of the fd's in the socket mask - * is bad. We use it in case select(2) returns EBADF -@@ -208,13 +254,29 @@ static void main_loop(void) - static void find_bad_fd(void) - { - int fd ; -+#ifdef HAVE_POLL -+ const char *reason; -+#else - struct stat st ; -+#endif - unsigned bad_fd_count = 0 ; - const char *func = "find_bad_fd" ; - -+#ifdef HAVE_POLL -+ for ( fd = 0 ; (unsigned)fd < ps.rws.pfds_last ; fd++ ) -+ if ( ps.rws.pfd_array[fd].revents & ( POLLHUP|POLLNVAL|POLLERR ) ) -+ { -+ if ( ps.rws.pfd_array[fd].revents & POLLHUP ) -+ reason = "hung up"; -+ else if ( ps.rws.pfd_array[fd].revents & POLLNVAL ) -+ reason = "been closed"; -+ else if ( ps.rws.pfd_array[fd].revents & POLLERR ) -+ reason = "reported error condition"; -+#else - for ( fd = 0 ; (unsigned)fd < ps.ros.max_descriptors ; fd++ ) - if ( FD_ISSET( fd, &ps.rws.socket_mask ) && fstat( fd, &st ) == -1 ) - { -+#endif - int found = FALSE ; - unsigned u ; - -@@ -239,7 +301,11 @@ static void find_bad_fd(void) - } - if ( ! found ) - { -+#ifdef HAVE_POLL -+ ps.rws.pfd_array[fd].events = 0; -+#else - FD_CLR( fd, &ps.rws.socket_mask ) ; -+#endif - msg( LOG_ERR, func, - "No active service for file descriptor %d\n", fd ) ; - bad_fd_count++ ; -diff -Nurp xinetd-2.3.14-orig/xinetd/redirect.c xinetd-2.3.14-poll/xinetd/redirect.c ---- xinetd-2.3.14-orig/xinetd/redirect.c 2009-07-27 13:27:59.000000000 +0200 -+++ xinetd-2.3.14-poll/xinetd/redirect.c 2009-09-02 16:00:34.000000000 +0200 -@@ -58,14 +58,19 @@ void redir_handler( struct server *serp - struct service *sp = SERVER_SERVICE( serp ); - struct service_config *scp = SVC_CONF( sp ); - int RedirDescrip = SERVER_FD( serp ); -- int maxfd; - ssize_t num_read, num_wrote=0, ret=0; - unsigned int sin_len = 0; - unsigned long bytes_in = 0, bytes_out = 0; - int no_to_nagle = 1; - int on = 1, v6on; - char buff[NET_BUFFER]; -+#ifdef HAVE_POLL -+ struct pollfd *pfd_array; -+ int pfds_last = 0; -+#else - fd_set rdfd, msfd; -+ int maxfd; -+#endif - struct timeval *timep = NULL; - const char *func = "redir_handler"; - union xsockaddr serveraddr ; -@@ -141,19 +146,43 @@ void redir_handler( struct server *serp - msg(LOG_ERR, func, "setsockopt RedirDescrip failed: %m"); - } - -+#ifdef HAVE_POLL -+#define REDIR_DESCRIP_INDEX 0 -+#define REDIR_SERVER_INDEX 1 -+ pfd_array = (struct pollfd *)calloc(sizeof(struct pollfd),INIT_POLLFDS); -+ if (pfd_array == NULL) -+ { -+ msg( LOG_ERR, func, "Cannot allocate memory for file descriptors!\n"); -+ exit( 1 ); -+ } -+ pfd_array[ REDIR_DESCRIP_INDEX ].fd = RedirDescrip; -+ pfd_array[ REDIR_DESCRIP_INDEX ].events = POLLIN; -+ pfd_array[ REDIR_SERVER_INDEX ].fd = RedirServerFd; -+ pfd_array[ REDIR_SERVER_INDEX ].events = POLLIN; -+ pfds_last += 2; -+#else - maxfd = (RedirServerFd > RedirDescrip)?RedirServerFd:RedirDescrip; - FD_ZERO(&msfd); - FD_SET(RedirDescrip, &msfd); - FD_SET(RedirServerFd, &msfd); -+#endif - - while(1) { -+#ifdef HAVE_POLL -+ if ( poll( pfd_array, pfds_last, -1 ) <= 0 ) { -+#else - memcpy(&rdfd, &msfd, sizeof(rdfd)); - if (select(maxfd + 1, &rdfd, (fd_set *)0, (fd_set *)0, timep) <= 0) { -+#endif - /* place for timeout code, currently does not time out */ - break; - } - -+#ifdef HAVE_POLL -+ if ( pfd_array[REDIR_DESCRIP_INDEX].revents ) { -+#else - if (FD_ISSET(RedirDescrip, &rdfd)) { -+#endif - do { - num_read = read(RedirDescrip, - buff, sizeof(buff)); -@@ -179,7 +208,11 @@ void redir_handler( struct server *serp - } - } - -+#ifdef HAVE_POLL -+ if ( pfd_array[REDIR_SERVER_INDEX].revents ) { -+#else - if (FD_ISSET(RedirServerFd, &rdfd)) { -+#endif - do { - num_read = read(RedirServerFd, - buff, sizeof(buff)); -diff -Nurp xinetd-2.3.14-orig/xinetd/server.c xinetd-2.3.14-poll/xinetd/server.c ---- xinetd-2.3.14-orig/xinetd/server.c 2005-03-29 17:50:34.000000000 +0200 -+++ xinetd-2.3.14-poll/xinetd/server.c 2009-09-02 11:30:27.000000000 +0200 -@@ -298,7 +298,11 @@ void server_end( struct server *serp ) - - /* Added this for when accepting wait=yes services */ - if( SVC_WAITS( sp ) ) -+#ifdef HAVE_POLL -+ SVC_EVENTS( sp ) = POLLIN ; -+#else - FD_SET( SVC_FD( sp ), &ps.rws.socket_mask ) ; -+#endif /* HAVE_POLL */ - - svc_postmortem( sp, serp ) ; - server_release( serp ) ; -diff -Nurp xinetd-2.3.14-orig/xinetd/service.c xinetd-2.3.14-poll/xinetd/service.c ---- xinetd-2.3.14-orig/xinetd/service.c 2009-07-27 13:27:59.000000000 +0200 -+++ xinetd-2.3.14-poll/xinetd/service.c 2009-09-02 17:03:49.000000000 +0200 -@@ -71,8 +71,6 @@ static const struct name_value service_s - { "BAD STATE", 0 } - } ; - -- -- - /* - * Allocate a new struct service and initialize it from scp - */ -@@ -115,6 +113,10 @@ struct service *svc_make_special( struct - - void svc_free( struct service *sp ) - { -+#ifdef HAVE_POLL -+ *SVC_POLLFD( sp ) = ps.rws.pfd_array[--ps.rws.pfds_last] ; -+#endif /* HAVE_POLL */ -+ - sc_free( SVC_CONF(sp) ) ; - CLEAR( *sp ) ; - FREE_SVC( sp ) ; -@@ -325,6 +327,25 @@ status_e svc_activate( struct service *s - return( OK ); - } - -+#ifdef HAVE_POLL -+ if ( ps.rws.pfds_last >= ps.rws.pfds_allocated ) -+ { -+ int pos; -+ ps.rws.pfds_allocated += INIT_POLLFDS; -+ struct pollfd *tmp = (struct pollfd *)realloc( ps.rws.pfd_array, -+ ps.rws.pfds_allocated*sizeof(struct pollfd)); -+ if ( tmp == NULL ) -+ { -+ out_of_memory( func ); -+ return( FAILED ); -+ } -+ memset(&ps.rws.pfd_array[ps.rws.pfds_last], 0, (ps.rws.pfds_allocated- -+ ps.rws.pfds_last)*sizeof(struct pollfd)); -+ ps.rws.pfd_array = tmp; -+ } -+ SVC_POLLFD( sp ) = &ps.rws.pfd_array[ps.rws.pfds_last++] ; -+#endif /* HAVE_POLL */ -+ - if( SC_IPV4( scp ) ) { - SVC_FD(sp) = socket( AF_INET, - SC_SOCKET_TYPE( scp ), SC_PROTOVAL( scp ) ) ; -@@ -390,9 +411,14 @@ status_e svc_activate( struct service *s - - SVC_STATE(sp) = SVC_ACTIVE ; - -+#ifdef HAVE_POLL -+ SVC_EVENTS( sp ) = POLLIN ; -+#else - FD_SET( SVC_FD(sp), &ps.rws.socket_mask ) ; -+ - if ( SVC_FD(sp) > ps.rws.mask_max ) - ps.rws.mask_max = SVC_FD(sp) ; -+#endif /* HAVE_POLL */ - - ps.rws.active_services++ ; - ps.rws.available_services++ ; -@@ -442,7 +468,11 @@ void svc_deactivate( struct service *sp - - if ( SVC_IS_ACTIVE( sp ) ) - { -+#ifdef HAVE_POLL -+ SVC_EVENTS( sp ) = 0; -+#else - FD_CLR( SVC_FD( sp ), &ps.rws.socket_mask ) ; -+#endif /* HAVE_POLL */ - ps.rws.active_services-- ; - } - -@@ -465,7 +495,15 @@ void svc_suspend( struct service *sp ) - return ; - } - -+#ifdef HAVE_POLL -+ /* -+ * don't reap the pfd from pfd_array, since we must have it allocated for -+ * SVC_FD( sp ) -+ */ -+ SVC_EVENTS( sp ) = 0; -+#else - FD_CLR( SVC_FD( sp ), &ps.rws.socket_mask ) ; -+#endif - ps.rws.active_services-- ; - if ( debug.on ) - msg( LOG_DEBUG, func, "Suspended service %s", SVC_ID( sp ) ) ; -@@ -481,7 +519,12 @@ void svc_resume( struct service *sp ) - { - const char *func = "svc_resume" ; - -+#ifdef HAVE_POLL -+ SVC_EVENTS( sp ) = POLLIN ; -+#else - FD_SET( SVC_FD( sp ), &ps.rws.socket_mask ) ; -+#endif -+ - ps.rws.active_services++ ; - if ( debug.on ) - msg( LOG_DEBUG, func, "Resumed service %s", SVC_ID( sp ) ) ; -diff -Nurp xinetd-2.3.14-orig/xinetd/service.h xinetd-2.3.14-poll/xinetd/service.h ---- xinetd-2.3.14-orig/xinetd/service.h 2005-03-29 17:50:34.000000000 +0200 -+++ xinetd-2.3.14-poll/xinetd/service.h 2009-09-03 16:24:16.000000000 +0200 -@@ -17,6 +17,9 @@ - #include "pset.h" - #include "xlog.h" - #include "server.h" -+#ifdef HAVE_POLL -+#include "xpoll.h" -+#endif - - /* - * $Id: service.h,v 1.6 2012-05-09 15:40:29 bbraun Exp $ -@@ -45,7 +48,13 @@ struct service - state_e svc_state ; - int svc_ref_count ; /* # of pters to this struct */ - struct service_config *svc_conf ; /* service configuration */ -+ -+#ifdef HAVE_POLL -+ struct pollfd *svc_pfd ; /* pointer to the pollfd */ -+#else - int svc_fd ; /* The Listening FD for the service */ -+#endif /* HAVE_POLL */ -+ - unsigned svc_running_servers ; - unsigned svc_retry_servers ; - unsigned svc_attempts ; /* # of attempts to start server */ -@@ -70,7 +79,17 @@ struct service - * Field access macros - */ - #define SVC_CONF( sp ) ( (sp)->svc_conf ) -+ -+#ifdef HAVE_POLL -+#define SVC_POLLFD( sp ) ( (sp)->svc_pfd ) -+#define SVC_POLLFD_OFF( sp ) ( SVC_POLLFD( sp )-ps.rws.pfd_array ) -+#define SVC_EVENTS( sp ) ( POLLFD_EVENTS( SVC_POLLFD( sp ) ) ) -+#define SVC_REVENTS( sp ) ( POLLFD_REVENTS( SVC_POLLFD( sp ) ) ) -+#define SVC_FD( sp ) ( POLLFD_FD( SVC_POLLFD( sp ) ) ) -+#else - #define SVC_FD( sp ) ( (sp)->svc_fd ) -+#endif /* HAVE_POLL */ -+ - #define SVC_RUNNING_SERVERS( sp ) (sp)->svc_running_servers - #define SVC_RETRIES( sp ) (sp)->svc_retry_servers - #define SVC_LOG( sp ) (sp)->svc_log -diff -Nurp xinetd-2.3.14-orig/xinetd/state.h xinetd-2.3.14-poll/xinetd/state.h ---- xinetd-2.3.14-orig/xinetd/state.h 2005-03-31 01:15:28.000000000 +0200 -+++ xinetd-2.3.14-poll/xinetd/state.h 2009-09-02 11:30:27.000000000 +0200 -@@ -21,7 +21,10 @@ - #endif - #include "libportable.h" - --#ifdef HAVE_SYS_SELECT_H -+#ifdef HAVE_POLL -+#include -+#endif -+#if HAVE_SYS_SELECT_H - #include - #endif - -@@ -32,7 +35,6 @@ - - struct read_only_state - { -- rlim_t orig_max_descriptors ; /* original soft rlimit */ - rlim_t max_descriptors ; /* original hard rlimit or OPEN_MAX */ - rlim_t process_limit ; /* if 0, there is no limit */ - int cc_interval ; /* # of seconds the cc gets invoked. */ -@@ -58,8 +60,15 @@ struct read_write_state - int available_services ; /* # of available services */ - int active_services ; /* services with descriptors set */ - /* in socket mask */ -+#ifdef HAVE_POLL -+ struct pollfd *pfd_array; /* array passed to poll(2) */ -+ int pfds_last; /* index of last fd in the array */ -+ int pfds_allocated; /* size of the array */ -+#else - fd_set socket_mask ; - int mask_max ; -+#endif /* HAVE_POLL */ -+ - pset_h servers ; /* table of running servers */ - pset_h retries ; /* table of servers to retry */ - pset_h services ; /* table of services */ -diff -Nurp xinetd-2.3.14-orig/xinetd/tcpint.c xinetd-2.3.14-poll/xinetd/tcpint.c ---- xinetd-2.3.14-orig/xinetd/tcpint.c 2009-07-27 13:27:59.000000000 +0200 -+++ xinetd-2.3.14-poll/xinetd/tcpint.c 2009-09-02 16:49:32.000000000 +0200 -@@ -63,7 +63,15 @@ struct intercept_s *si_init( struct serv - return( ip ) ; - } - -+#ifdef HAVE_POLL -+static status_e handle_io( psi_h iter, channel_s *chp, -+ struct pollfd *pfd_handled, -+ struct pollfd *pfd_array, -+ int *pfds_last, -+ stream_status_e (*iofunc)() ); -+#else - static status_e handle_io( psi_h iter, channel_s *chp, fd_set *maskp, stream_status_e (*iofunc)() ); -+#endif - static stream_status_e tcp_local_to_remote( channel_s *chp ); - static stream_status_e tcp_remote_to_local( channel_s *chp ); - static void connection_request( struct intercept_s *ip, channel_s **chpp ); -@@ -82,14 +90,26 @@ void si_exit(void) - static void si_mux(void) - { - struct intercept_s *ip = &stream_intercept_state ; -+#ifdef HAVE_POLL -+ struct pollfd *pfd_array; -+ int pfds_last = 0; -+ int pfds_allocated = INIT_POLLFDS; -+#else - fd_set socket_mask ; - int mask_max ; -+#endif - psi_h iter ; - const char *func = "si_mux" ; - -+#ifdef HAVE_POLL -+ pfd_array = calloc(sizeof(struct pollfd),INIT_POLLFDS); -+ pfd_array[ pfds_last ].fd = INT_REMOTE( ip ) ; -+ pfd_array[ pfds_last++ ].events = POLLIN | POLLOUT; -+#else - FD_ZERO( &socket_mask ) ; - FD_SET( INT_REMOTE( ip ), &socket_mask ) ; - mask_max = INT_REMOTE( ip ) ; -+#endif - - iter = psi_create( INT_CONNECTIONS( ip ) ) ; - if ( iter == NULL ) -@@ -101,26 +121,43 @@ static void si_mux(void) - for ( ;; ) - { - channel_s *chp ; -+#ifndef HAVE_POLL - fd_set read_mask ; -+#endif - int n_ready ; - -+#ifdef HAVE_POLL -+ n_ready = int_poll( pfds_last, pfd_array ) ; -+#else - read_mask = socket_mask ; - n_ready = int_select( mask_max+1, &read_mask ) ; -+#endif - - if ( n_ready == -1 ) - return ; - -+#ifdef HAVE_POLL -+ if ( pfd_array[0].revents & ( POLLIN | POLLOUT ) ) -+#else - if ( FD_ISSET( INT_REMOTE( ip ), &read_mask ) ) -+#endif - { - connection_request( ip, &chp ) ; - if ( chp != NULL ) - { -+#ifdef HAVE_POLL -+ pfd_array[ pfds_last ].fd = chp->ch_local_socket ; -+ pfd_array[ pfds_last++ ].events = POLLIN | POLLOUT ; -+ pfd_array[ pfds_last ].fd = chp->ch_remote_socket ; -+ pfd_array[ pfds_last++ ].events = POLLIN | POLLOUT ; -+#else - FD_SET( chp->ch_local_socket, &socket_mask ) ; - if ( chp->ch_local_socket > mask_max ) - mask_max = chp->ch_local_socket ; - FD_SET( chp->ch_remote_socket, &socket_mask ) ; - if ( chp->ch_remote_socket > mask_max ) - mask_max = chp->ch_remote_socket ; -+#endif - } - if ( --n_ready == 0 ) - continue ; -@@ -128,27 +165,57 @@ static void si_mux(void) - - for ( chp = CHP( psi_start(iter) ) ; chp ; chp = CHP( psi_next(iter) ) ) - { -+#ifdef HAVE_POLL -+ int i; -+ struct pollfd *local_pfd = NULL, *remote_pfd = NULL; -+ -+ /* TODO: detection with O(n)=1 */ -+ for (i = 0 ; i < pfds_last ; i++ ) -+ if (pfd_array[i].fd == chp->ch_local_socket) -+ local_pfd = &pfd_array[i]; -+ else if (pfd_array[i] .fd== chp->ch_remote_socket) -+ remote_pfd = &pfd_array[i]; -+ -+ if ( local_pfd != NULL && -+ local_pfd->revents & ( POLLIN | POLLOUT) ) -+#else - if ( FD_ISSET( chp->ch_local_socket, &read_mask ) ) -+#endif - { - #ifdef DEBUG_TCPINT - if ( debug.on ) - msg( LOG_DEBUG, func, "Input available on local socket %d", - chp->ch_local_socket ) ; - #endif -+#ifdef HAVE_POLL -+ if ( handle_io( iter, chp, local_pfd, pfd_array, -+ &pfds_last, tcp_local_to_remote ) == FAILED ) -+#else - if ( handle_io( iter, chp, &socket_mask, tcp_local_to_remote ) == FAILED ) -+#endif - return ; - if ( --n_ready == 0 ) - break ; - } - -+#ifdef HAVE_POLL -+ if ( remote_pfd != NULL && -+ remote_pfd->revents & ( POLLIN | POLLOUT) ) -+#else - if ( FD_ISSET( chp->ch_remote_socket, &read_mask ) ) -+#endif - { - #ifdef DEBUG_TCPINT - msg( LOG_DEBUG, func, "Input available on remote socket %d", - chp->ch_remote_socket ) ; - #endif -+#ifdef HAVE_POLL -+ if ( handle_io( iter, chp, remote_pfd, pfd_array, -+ &pfds_last, tcp_local_to_remote ) == FAILED ) -+#else - if ( handle_io( iter, chp, - &socket_mask, tcp_remote_to_local ) == FAILED ) -+#endif - return ; - if ( --n_ready == 0 ) - break ; -@@ -158,10 +225,19 @@ static void si_mux(void) - } - - -+#ifdef HAVE_POLL -+static status_e handle_io( psi_h iter, -+ channel_s *chp, -+ struct pollfd *pfd_handled, -+ struct pollfd *pfd_array, -+ int *pfds_last, -+ stream_status_e (*iofunc)() ) -+#else - static status_e handle_io( psi_h iter, - channel_s *chp, - fd_set *maskp, - stream_status_e (*iofunc)() ) -+#endif - { - const char *func = "handle_io" ; - -@@ -178,8 +254,13 @@ static status_e handle_io( psi_h iter, - xaddrname( &chp->ch_from ), ntohs(xaddrport( &chp->ch_from )), - chp->ch_local_socket, chp->ch_remote_socket ) ; - -+#ifdef HAVE_POLL -+ if ( pfd_handled != NULL) -+ *pfd_handled = pfd_array[ --( *pfds_last ) ]; -+#else - FD_CLR( chp->ch_local_socket, maskp ) ; - FD_CLR( chp->ch_remote_socket, maskp ) ; -+#endif - (void) Sclose( chp->ch_remote_socket ) ; - (void) Sclose( chp->ch_local_socket ) ; - psi_remove( iter ) ; -diff -Nurp xinetd-2.3.14-orig/xinetd/udpint.c xinetd-2.3.14-poll/xinetd/udpint.c ---- xinetd-2.3.14-orig/xinetd/udpint.c 2009-07-27 13:27:59.000000000 +0200 -+++ xinetd-2.3.14-poll/xinetd/udpint.c 2009-09-02 16:59:33.000000000 +0200 -@@ -15,6 +15,9 @@ - #include - #include - -+#ifdef HAVE_POLL -+#include -+#endif - #ifdef HAVE_SYS_SELECT_H - #include - #endif -@@ -97,34 +100,61 @@ void di_exit(void) - static void di_mux(void) - { - struct intercept_s *ip = &dgram_intercept_state ; -+#ifdef HAVE_POLL -+ struct pollfd *pfd_array; -+ int pfds_last = 0; -+ int pfds_allocated = INIT_POLLFDS; -+#else - fd_set socket_mask ; - int mask_max ; -+#endif - -+#ifdef HAVE_POLL -+ pfd_array = (struct pollfd *)calloc(sizeof(struct pollfd),INIT_POLLFDS); -+ pfd_array[ pfds_last ].fd = INT_REMOTE( ip ); -+ pfd_array[ pfds_last++ ].events = POLLIN | POLLOUT; -+#else - FD_ZERO( &socket_mask ) ; - FD_SET( INT_REMOTE( ip ), &socket_mask ) ; - mask_max = INT_REMOTE( ip ) ; -+#endif - - for ( ;; ) - { - unsigned u ; - channel_s *chp ; -+#ifndef HAVE_POLL - fd_set read_mask ; -+#endif - int n_ready ; - -+#ifdef HAVE_POLL -+ n_ready = int_poll( pfds_last, pfd_array ) ; -+#else - read_mask = socket_mask ; - n_ready = int_select( mask_max+1, &read_mask ) ; -+#endif - - if ( n_ready == -1 ) - return ; - -+#ifdef HAVE_POLL -+ if ( pfd_array[0].revents & ( POLLIN | POLLOUT ) ) -+#else - if ( FD_ISSET( INT_REMOTE( ip ), &read_mask ) ) -+#endif - { - udp_remote_to_local( ip, &chp ) ; - if ( chp != NULL ) - { -+#ifdef HAVE_POLL -+ pfd_array[ pfds_last ].fd = chp->ch_local_socket ; -+ pfd_array[ pfds_last++ ].events = POLLIN | POLLOUT ; -+#else - FD_SET( chp->ch_local_socket, &socket_mask ) ; - if ( chp->ch_local_socket > mask_max ) - mask_max = chp->ch_local_socket ; -+#endif - } - if ( --n_ready == 0 ) - continue ; -@@ -134,7 +164,17 @@ static void di_mux(void) - { - chp = CHP( pset_pointer( INT_CONNECTIONS( ip ), u ) ) ; - -+#ifdef HAVE_POLL -+ int i; -+ /* TODO: detection with O(n)=1 */ -+ for (i = 0 ; i < pfds_last ; i++) -+ if (pfd_array[i].fd == chp->ch_local_socket) -+ break; -+ if (pfd_array[i].fd == chp->ch_local_socket && -+ (pfd_array[i].revents & ( POLLIN | POLLOUT ))) -+#else - if ( FD_ISSET( chp->ch_local_socket, &read_mask ) ) -+#endif - { - if ( udp_local_to_remote( chp ) == FAILED ) - return ; -diff -Nurp xinetd-2.3.14-orig/xinetd/xmdns.c xinetd-2.3.14-poll/xinetd/xmdns.c ---- xinetd-2.3.14-orig/xinetd/xmdns.c 2005-04-08 23:23:07.000000000 +0200 -+++ xinetd-2.3.14-poll/xinetd/xmdns.c 2009-09-02 17:01:54.000000000 +0200 -@@ -109,7 +109,26 @@ int xinetd_mdns_init(void) { - ps.rws.mdns_state = NULL; - return -1; - } -+#ifdef HAVE_POLL -+ if ( ps.rws.pfds_last >= ps.rws.pfds_allocated ) -+ { -+ ps.rws.pfds_allocated += INIT_POLLFDS; -+ struct pollfd *tmp = (struct pollfd *)realloc( ps.rws.pfd_array, -+ ps.rws.pfds_allocated*sizeof(struct pollfd)); -+ if ( tmp == NULL ) -+ { -+ out_of_memory( func ); -+ return -1; -+ } -+ memset(&ps.rws.pfd_array[ps.rws.pfds_last], 0, (ps.rws.pfds_allocated- -+ ps.rws.pfds_last)*sizeof(struct pollfd)); -+ ps.rws.pfd_array = tmp; -+ } -+ ps.rws.pfd_array[ ps.rws.pfds_last ].fd = sw_discovery_socket(*(sw_discovery *)ps.rws.mdns_state); -+ ps.rws.pfd_array[ ps.rws.pfds_last++ ].events = POLLIN; -+#else - FD_SET( sw_discovery_socket(*(sw_discovery *)ps.rws.mdns_state), &ps.rws.socket_mask ) ; -+#endif - return 0; - #endif - } -diff -Nurp xinetd-2.3.14-orig/xinetd/xpoll.h xinetd-2.3.14-poll/xinetd/xpoll.h ---- xinetd-2.3.14-orig/xinetd/xpoll.h 1970-01-01 01:00:00.000000000 +0100 -+++ xinetd-2.3.14-poll/xinetd/xpoll.h 2009-09-02 11:30:27.000000000 +0200 -@@ -0,0 +1,23 @@ -+/* -+ * (c) Copyright 2009 by Red Hat Inc. -+ * All rights reserved. The file named COPYRIGHT specifies the terms -+ * and conditions for redistribution. -+ */ -+#include "config.h" -+#ifdef HAVE_POLL -+#ifndef _X_POLL_H -+#define _X_POLL_H -+ -+#include -+#include "defs.h" -+ -+ -+/* Field accessor methods for pollfd in defined in poll.h */ -+#define POLLFD_FD( pfd ) ( (pfd)->fd ) -+#define POLLFD_EVENTS( pfd ) ( (pfd)->events ) -+#define POLLFD_REVENTS( pfd ) ( (pfd)->revents ) -+ -+/* TODO: write memory management stuff in xpoll.c if needed */ -+ -+#endif /* _X_POLL_H */ -+#endif /* HAVE_POLL */ diff --git a/xinetd-2.3.14-readable-debuginfo.patch b/xinetd-2.3.14-readable-debuginfo.patch deleted file mode 100644 index 174791b..0000000 --- a/xinetd-2.3.14-readable-debuginfo.patch +++ /dev/null @@ -1,77 +0,0 @@ -Generate debuginfo package with all include files readable. - -The support libraries would install their header files with 640 permissions, -which is not what we want. - -diff -up xinetd-2.3.14/libs/src/misc/Makefile.in.orig xinetd-2.3.14/libs/src/misc/Makefile.in ---- xinetd-2.3.14/libs/src/misc/Makefile.in.orig 2003-02-19 18:29:27.000000000 +0100 -+++ xinetd-2.3.14/libs/src/misc/Makefile.in 2008-09-18 10:18:59.000000000 +0200 -@@ -49,7 +49,7 @@ CC_FLAGS = $(DEBUG) - CFLAGS = @CFLAGS@ $(CPP_FLAGS) $(CC_FLAGS) -I$(INCLUDEDIR) - - INSTALL = @INSTALL@ --FMODE = -m 640 # used by install -+FMODE = -m 644 # used by install - RANLIB = @RANLIB@ - - LIBNAME = lib$(NAME).a -diff -up xinetd-2.3.14/libs/src/portable/Makefile.in.orig xinetd-2.3.14/libs/src/portable/Makefile.in ---- xinetd-2.3.14/libs/src/portable/Makefile.in.orig 2003-02-19 18:29:27.000000000 +0100 -+++ xinetd-2.3.14/libs/src/portable/Makefile.in 2008-09-18 10:19:09.000000000 +0200 -@@ -44,7 +44,7 @@ CC_FLAGS = $(DEBUG) - CFLAGS = @CFLAGS@ $(CPP_FLAGS) $(CC_FLAGS) -I$(INCLUDEDIR) - - INSTALL = @INSTALL@ --FMODE = -m 640 # used by install -+FMODE = -m 644 # used by install - RANLIB = @RANLIB@ - - LIBNAME = lib$(NAME).a -diff -up xinetd-2.3.14/libs/src/pset/Makefile.in.orig xinetd-2.3.14/libs/src/pset/Makefile.in ---- xinetd-2.3.14/libs/src/pset/Makefile.in.orig 2003-02-19 18:29:27.000000000 +0100 -+++ xinetd-2.3.14/libs/src/pset/Makefile.in 2008-09-18 10:19:17.000000000 +0200 -@@ -41,7 +41,7 @@ CC_FLAGS = $(DEBUG) - CFLAGS = @CFLAGS@ $(CPP_FLAGS) $(CC_FLAGS) - - INSTALL = @INSTALL@ --FMODE = -m 640 # used by install -+FMODE = -m 644 # used by install - RANLIB = @RANLIB@ - - LIBNAME = lib$(NAME).a -diff -up xinetd-2.3.14/libs/src/sio/Makefile.in.orig xinetd-2.3.14/libs/src/sio/Makefile.in ---- xinetd-2.3.14/libs/src/sio/Makefile.in.orig 2003-02-19 18:29:27.000000000 +0100 -+++ xinetd-2.3.14/libs/src/sio/Makefile.in 2008-09-18 10:19:25.000000000 +0200 -@@ -40,7 +40,7 @@ CC_FLAGS = $(DEBUG) - CFLAGS = @CFLAGS@ $(CPP_FLAGS) $(CC_FLAGS) -I$(INCLUDEDIR) - - INSTALL = @INSTALL@ --FMODE = -m 640 # used by install -+FMODE = -m 644 # used by install - RANLIB = @RANLIB@ - - LIBNAME = lib$(NAME).a -diff -up xinetd-2.3.14/libs/src/str/Makefile.in.orig xinetd-2.3.14/libs/src/str/Makefile.in ---- xinetd-2.3.14/libs/src/str/Makefile.in.orig 2003-02-19 18:29:27.000000000 +0100 -+++ xinetd-2.3.14/libs/src/str/Makefile.in 2008-09-18 10:19:33.000000000 +0200 -@@ -51,7 +51,7 @@ CC_FLAGS = $(DEBUG) - CFLAGS = @CFLAGS@ $(CPP_FLAGS) $(CC_FLAGS) - - INSTALL = @INSTALL@ --FMODE = -m 640 # used by install -+FMODE = -m 644 # used by install - RANLIB = @RANLIB@ - - LIBNAME = lib$(NAME).a -diff -up xinetd-2.3.14/libs/src/xlog/Makefile.in.orig xinetd-2.3.14/libs/src/xlog/Makefile.in ---- xinetd-2.3.14/libs/src/xlog/Makefile.in.orig 2003-02-19 18:29:27.000000000 +0100 -+++ xinetd-2.3.14/libs/src/xlog/Makefile.in 2008-09-18 10:19:41.000000000 +0200 -@@ -46,7 +46,7 @@ CC_FLAGS = $(DEBUG) - CFLAGS = @CFLAGS@ $(CPP_FLAGS) $(CC_FLAGS) - - INSTALL = @INSTALL@ --FMODE = -m 640 # used by install -+FMODE = -m 644 # used by install - RANLIB = @RANLIB@ - - LIBNAME = lib$(NAME).a diff --git a/xinetd-2.3.14-realloc-remove.patch b/xinetd-2.3.14-realloc-remove.patch deleted file mode 100644 index 6fd1902..0000000 --- a/xinetd-2.3.14-realloc-remove.patch +++ /dev/null @@ -1,134 +0,0 @@ -diff -rup xinetd-2.3.14/xinetd/defs.h xinetd-2.3.14-mod/xinetd/defs.h ---- xinetd-2.3.14/xinetd/defs.h 2012-01-18 14:22:20.811100158 +0100 -+++ xinetd-2.3.14-mod/xinetd/defs.h 2012-01-18 13:32:46.000000000 +0100 -@@ -114,11 +114,7 @@ union xsockaddr { - * constants for limiting ps.rws.fd_list - */ - --#ifdef HAVE_POLL --#define INIT_POLLFDS 4096 --/* FIXME: not used */ --#define MAX_POLLFDS 16384 --#endif -+#define MAX_FDS 4096 - - /* - * When explicit values are given for enum's, that is because the structures -diff -rup xinetd-2.3.14/xinetd/init.c xinetd-2.3.14-mod/xinetd/init.c ---- xinetd-2.3.14/xinetd/init.c 2012-01-18 14:22:20.779100171 +0100 -+++ xinetd-2.3.14-mod/xinetd/init.c 2012-01-18 14:07:34.000000000 +0100 -@@ -151,7 +151,7 @@ static void set_fd_limit(void) - } - - if ( rl.rlim_max == RLIM_INFINITY ) -- rl.rlim_max = FD_SETSIZE; -+ rl.rlim_max = MAX_FDS; - - ps.ros.max_descriptors = rl.rlim_max ; - #else /* ! RLIMIT_NOFILE */ -@@ -283,12 +283,12 @@ static void init_rw_state( void ) - ps.rws.descriptors_free = ps.ros.max_descriptors - DESCRIPTORS_RESERVED ; - - #ifdef HAVE_POLL -- ps.rws.pfds_allocated = INIT_POLLFDS ; -+ ps.rws.pfds_allocated = ps.ros.max_descriptors ; - ps.rws.pfd_array = (struct pollfd *) - malloc( sizeof( struct pollfd ) * ps.rws.pfds_allocated ) ; - if ( ps.rws.pfd_array == NULL ) - { -- out_of_memory(func); -+ out_of_memory(func) ; - exit( 1 ) ; - } - ps.rws.pfds_last = 0 ; -diff -rup xinetd-2.3.14/xinetd/redirect.c xinetd-2.3.14-mod/xinetd/redirect.c ---- xinetd-2.3.14/xinetd/redirect.c 2012-01-18 14:22:20.780100170 +0100 -+++ xinetd-2.3.14-mod/xinetd/redirect.c 2012-01-18 12:22:08.000000000 +0100 -@@ -149,7 +149,7 @@ void redir_handler( struct server *serp - #ifdef HAVE_POLL - #define REDIR_DESCRIP_INDEX 0 - #define REDIR_SERVER_INDEX 1 -- pfd_array = (struct pollfd *)calloc(sizeof(struct pollfd),INIT_POLLFDS); -+ pfd_array = (struct pollfd *)calloc(sizeof(struct pollfd),MAX_FDS); - if (pfd_array == NULL) - { - msg( LOG_ERR, func, "Cannot allocate memory for file descriptors!\n"); -diff -rup xinetd-2.3.14/xinetd/service.c xinetd-2.3.14-mod/xinetd/service.c ---- xinetd-2.3.14/xinetd/service.c 2012-01-18 14:22:20.812100157 +0100 -+++ xinetd-2.3.14-mod/xinetd/service.c 2012-01-18 14:07:27.000000000 +0100 -@@ -114,10 +114,6 @@ struct service *svc_make_special( struct - - void svc_free( struct service *sp ) - { --#ifdef HAVE_POLL -- *SVC_POLLFD( sp ) = ps.rws.pfd_array[--ps.rws.pfds_last] ; --#endif /* HAVE_POLL */ -- - sc_free( SVC_CONF(sp) ) ; - CLEAR( *sp ) ; - FREE_SVC( sp ) ; -@@ -332,20 +328,10 @@ status_e svc_activate( struct service *s - } - - #ifdef HAVE_POLL -- if ( ps.rws.pfds_last >= ps.rws.pfds_allocated ) -+ if ( ps.rws.descriptors_free <= 0 ) - { -- int pos; -- ps.rws.pfds_allocated += INIT_POLLFDS; -- struct pollfd *tmp = (struct pollfd *)realloc( ps.rws.pfd_array, -- ps.rws.pfds_allocated*sizeof(struct pollfd)); -- if ( tmp == NULL ) -- { -- out_of_memory( func ); -- return( FAILED ); -- } -- ps.rws.pfd_array = tmp; -- memset(&ps.rws.pfd_array[ps.rws.pfds_last], 0, (ps.rws.pfds_allocated- -- ps.rws.pfds_last)*sizeof(struct pollfd)); -+ msg(LOG_ERR, func, "Maximum number of services reached") ; -+ return( FAILED ) ; - } - if ( sp->svc_pfd_index >= 0 ) - { -diff -rup xinetd-2.3.14/xinetd/tcpint.c xinetd-2.3.14-mod/xinetd/tcpint.c ---- xinetd-2.3.14/xinetd/tcpint.c 2012-01-18 14:22:20.782100169 +0100 -+++ xinetd-2.3.14-mod/xinetd/tcpint.c 2012-01-18 13:30:22.000000000 +0100 -@@ -93,7 +93,7 @@ static void si_mux(void) - #ifdef HAVE_POLL - struct pollfd *pfd_array; - int pfds_last = 0; -- int pfds_allocated = INIT_POLLFDS; -+ int pfds_allocated = MAX_FDS; - #else - fd_set socket_mask ; - int mask_max ; -@@ -102,7 +102,7 @@ static void si_mux(void) - const char *func = "si_mux" ; - - #ifdef HAVE_POLL -- pfd_array = calloc(sizeof(struct pollfd),INIT_POLLFDS); -+ pfd_array = calloc(sizeof(struct pollfd),MAX_FDS); - pfd_array[ pfds_last ].fd = INT_REMOTE( ip ) ; - pfd_array[ pfds_last++ ].events = POLLIN | POLLOUT; - #else -diff -rup xinetd-2.3.14/xinetd/udpint.c xinetd-2.3.14-mod/xinetd/udpint.c ---- xinetd-2.3.14/xinetd/udpint.c 2012-01-18 14:22:20.783100169 +0100 -+++ xinetd-2.3.14-mod/xinetd/udpint.c 2012-01-18 12:22:00.000000000 +0100 -@@ -103,14 +103,14 @@ static void di_mux(void) - #ifdef HAVE_POLL - struct pollfd *pfd_array; - int pfds_last = 0; -- int pfds_allocated = INIT_POLLFDS; -+ int pfds_allocated = MAX_FDS; - #else - fd_set socket_mask ; - int mask_max ; - #endif - - #ifdef HAVE_POLL -- pfd_array = (struct pollfd *)calloc(sizeof(struct pollfd),INIT_POLLFDS); -+ pfd_array = (struct pollfd *)calloc(sizeof(struct pollfd),MAX_FDS); - pfd_array[ pfds_last ].fd = INT_REMOTE( ip ); - pfd_array[ pfds_last++ ].events = POLLIN | POLLOUT; - #else diff --git a/xinetd-2.3.14-retry-svc-activate-in-cps-restart.patch b/xinetd-2.3.14-retry-svc-activate-in-cps-restart.patch deleted file mode 100644 index 7ff5c0b..0000000 --- a/xinetd-2.3.14-retry-svc-activate-in-cps-restart.patch +++ /dev/null @@ -1,54 +0,0 @@ -diff -Napur xinetd-2.3.14.old/xinetd/access.c xinetd-2.3.14.new/xinetd/access.c ---- xinetd-2.3.14.old/xinetd/access.c 2005-10-05 10:15:33.000000000 -0700 -+++ xinetd-2.3.14.new/xinetd/access.c 2012-02-22 20:12:09.120973124 -0800 -@@ -89,9 +89,20 @@ static void cps_service_restart(void) - msg(LOG_ERR, func, - "Activating service %s", SC_NAME(scp)); - } else { -- msg(LOG_ERR, func, -- "Error activating service %s", -- SC_NAME(scp)) ; -+ /* Try to restart the service */ -+ SVC_ATTEMPTS(sp) += 1; -+ if ( SVC_ATTEMPTS(sp) < MAX_SVC_ATTEMPTS ) { -+ msg(LOG_ERR, func, -+ "Error activating service %s, retrying %d more time(s)...", -+ SC_NAME(scp), -+ MAX_SVC_ATTEMPTS - SVC_ATTEMPTS(sp)); -+ xtimer_add(cps_service_restart, 1); -+ } else { -+ /* Give up */ -+ msg(LOG_ERR, func, -+ "Error activating service %s", -+ SC_NAME(scp)); -+ } - } /* else */ - } - } -diff -Napur xinetd-2.3.14.old/xinetd/service.c xinetd-2.3.14.new/xinetd/service.c ---- xinetd-2.3.14.old/xinetd/service.c 2012-02-22 19:16:56.288912783 -0800 -+++ xinetd-2.3.14.new/xinetd/service.c 2012-02-22 19:25:03.059356909 -0800 -@@ -397,6 +408,7 @@ status_e svc_activate( struct service *s - * Initialize the service data - */ - SVC_RUNNING_SERVERS(sp) = SVC_RETRIES(sp) = 0 ; -+ SVC_ATTEMPTS(sp) = 0; - - if ( SC_MUST_LISTEN( scp ) ) - (void) listen( SVC_FD(sp), LISTEN_BACKLOG ) ; -diff -Napur xinetd-2.3.14.old/xinetd/xconfig.h xinetd-2.3.14.new/xinetd/xconfig.h ---- xinetd-2.3.14.old/xinetd/xconfig.h 2003-02-19 09:29:28.000000000 -0800 -+++ xinetd-2.3.14.new/xinetd/xconfig.h 2012-02-22 19:20:20.360855514 -0800 -@@ -59,6 +59,12 @@ - #define DEFAULT_LOOP_TIME 10 - - /* -+ * The number of times to attempt re-activating a service after being -+ * deactivated due to the above. -+ */ -+#define MAX_SVC_ATTEMPTS 30 -+ -+/* - * Signal-to-action mapping - */ - #ifndef RECONFIG_HARD_SIG diff --git a/xinetd-2.3.14-rpc-specific-port.patch b/xinetd-2.3.14-rpc-specific-port.patch deleted file mode 100644 index 19376fd..0000000 --- a/xinetd-2.3.14-rpc-specific-port.patch +++ /dev/null @@ -1,30 +0,0 @@ -commit 1b91f7b0f67fba11ea8bbcdddef844656434c53c -Author: Jeffrey Bastian -Date: Tue Aug 17 13:45:20 2010 -0500 - - Let RPC services bind to a port - -diff --git a/xinetd/service.c b/xinetd/service.c -index 9f21f93..5d26885 100644 ---- a/xinetd/service.c -+++ b/xinetd/service.c -@@ -165,6 +165,7 @@ static status_e activate_rpc( struct service *sp ) - socklen_t sin_len = sizeof(tsin); - unsigned long vers ; - struct service_config *scp = SVC_CONF( sp ) ; -+ uint16_t service_port = SC_PORT( scp ) ; - struct rpc_data *rdp = SC_RPCDATA( scp ) ; - char *sid = SC_ID( scp ) ; - unsigned registered_versions = 0 ; -@@ -181,9 +182,11 @@ static status_e activate_rpc( struct service *sp ) - } - if( SC_IPV4( scp ) ) { - tsin.sa_in.sin_family = AF_INET ; -+ tsin.sa_in.sin_port = htons( service_port ) ; - sin_len = sizeof(struct sockaddr_in); - } else if( SC_IPV6( scp ) ) { - tsin.sa_in6.sin6_family = AF_INET6 ; -+ tsin.sa_in6.sin6_port = htons( service_port ); - sin_len = sizeof(struct sockaddr_in6); - } -