Blob Blame History Raw
--- squid-2.6.STABLE1/configure.fd	2006-07-26 09:58:41.000000000 +0200
+++ squid-2.6.STABLE1/configure	2006-07-26 09:58:41.000000000 +0200
@@ -2970,6 +2970,34 @@
   AMDEP_FALSE=
 fi
 
+if false; then
+  USE_FD_CONFIG_TRUE=
+  USE_FD_CONFIG_FALSE='#'
+else
+  USE_FD_CONFIG_TRUE='#'
+  USE_FD_CONFIG_FALSE=
+fi
+# Check whether --enable-fd-config or --disable-fd-config was given.
+if test "${enable_fd_config+set}" = set; then
+  enableval="$enable_fd_config"
+   if test "$enableval" = "yes" ; then
+    echo "File descriptor config enabled"
+    cat >> confdefs.h <<\EOF
+#define FD_CONFIG 1
+EOF
+
+    
+
+if true; then
+  USE_FD_CONFIG_TRUE=
+  USE_FD_CONFIG_FALSE='#'
+else
+  USE_FD_CONFIG_TRUE='#'
+  USE_FD_CONFIG_FALSE=
+fi
+  fi
+
+fi
 
 
 
--- squid-2.6.STABLE1/include/autoconf.h.in.fd	2006-07-26 09:58:41.000000000 +0200
+++ squid-2.6.STABLE1/include/autoconf.h.in	2006-07-26 09:58:41.000000000 +0200
@@ -36,6 +36,9 @@
 /* Traffic management via "delay pools". */
 #undef DELAY_POOLS
 
+/* Filedesc managment */
+#undef FD_CONFIG
+
 /* Enable following X-Forwarded-For headers */
 #undef FOLLOW_X_FORWARDED_FOR
 
--- squid-2.6.STABLE1/configure.in.fd	2006-07-26 09:58:41.000000000 +0200
+++ squid-2.6.STABLE1/configure.in	2006-07-26 09:58:41.000000000 +0200
@@ -501,6 +501,16 @@
   fi
 ])
 
+AM_CONDITIONAL(USE_FD_CONFIG, false)
+AC_ARG_ENABLE(fd-config,
+[  --enable-fd-config    Enable filedesc config to configure maximal number of used filedescriptors],
+[ if test "$enableval" = "yes" ; then
+    echo "Filedesc config enabled"
+    AC_DEFINE(FD_CONFIG)
+    AM_CONDITIONAL(USE_FD_CONFIG, true)
+  fi
+])
+
 dnl This is a developer only option. Developers know how to set defines
 dnl
 dnl AC_ARG_ENABLE(mem-gen-trace,
--- squid-2.6.STABLE1/src/cf.data.pre.fd	2006-07-26 09:58:41.000000000 +0200
+++ squid-2.6.STABLE1/src/cf.data.pre	2006-07-26 10:05:54.000000000 +0200
@@ -5027,4 +5027,23 @@
 	or response to be rejected.
 DOC_END
 
+NAME: max_filedesc
+IFDEF: FD_CONFIG
+TYPE: int
+DEFAULT: 1024
+LOC: Config.max_filedesc
+DOC_START
+	The maximum number of open file descriptors.
+        
+	WARNING: Changes of this value isn't respected by reconfigure 
+	command. This value should be changed only if there isn't 
+	any active squid process.
+
+	NOTE: This option is only supported by system with poll()
+	or epoll(). You can set this value by --with-maxfd during 
+	compilation on system whith uses select().
+	
+	The maximum value for max_filedesc is set by --with-maxfd during
+	compilation.
+DOC_END
 EOF
--- squid-2.6.STABLE1/src/main.c.fd	2006-07-26 09:58:41.000000000 +0200
+++ squid-2.6.STABLE1/src/main.c	2006-07-26 09:58:41.000000000 +0200
@@ -748,6 +749,8 @@
     /* Make sure the OS allows core dumps if enabled in squid.conf */
     enableCoredumps();
 
+    setMaxFD();
+
 #if TEST_ACCESS
     comm_init();
     comm_select_init();
@@ -781,7 +784,6 @@
     }
     if (!opt_no_daemon)
 	watch_child(argv);
-    setMaxFD();
 
     /* init comm module */
     comm_init();
--- squid-2.6.STABLE1/src/structs.h.fd	2006-07-26 09:58:41.000000000 +0200
+++ squid-2.6.STABLE1/src/structs.h	2006-07-26 09:58:41.000000000 +0200
@@ -805,6 +805,9 @@
 #endif
     time_t refresh_stale_window;
     int umask;
+#if FD_CONFIG
+    int max_filedesc;
+#endif
 };
 
 struct _SquidConfig2 {
--- squid-2.6.STABLE1/src/tools.c.fd	2006-07-26 09:58:41.000000000 +0200
+++ squid-2.6.STABLE1/src/tools.c	2006-07-26 09:58:41.000000000 +0200
@@ -757,6 +757,21 @@
 void
 setMaxFD(void)
 {
+
+/* Set up number of used filedescriptors from config file */
+/* Override the default settings Squid_MaxFD = FD_SETSIZE */
+#if FD_CONFIG
+    Squid_MaxFD = Config.max_filedesc;
+
+    /* don't exceed limit which was set during compilation */
+    if(SQUID_MAXFD < Squid_MaxFD)
+	Squid_MaxFD = SQUID_MAXFD;
+#else
+    /* don't exceed FD_SETSIZE */
+    if(FD_SETSIZE < Squid_MaxFD)
+	Squid_MaxFD = FD_SETSIZE;
+#endif
+
 #if HAVE_SETRLIMIT
     /* try to use as many file descriptors as possible */
     /* System V uses RLIMIT_NOFILE and BSD uses RLIMIT_OFILE */