Make poll() non-optional and remove select()-based fallback code
[privoxy.git] / loadcfg.c
index 539d2b1..9b39f54 100644 (file)
--- a/loadcfg.c
+++ b/loadcfg.c
@@ -120,9 +120,8 @@ static struct file_list *current_configfile = NULL;
  * This takes the "cryptic" hash of each keyword and aliases them to
  * something a little more readable.  This also makes changing the
  * hash values easier if they should change or the hash algorithm changes.
- * Use the included "hash" program to find out what the hash will be
- * for any string supplied on the command line.  (Or just put it in the
- * config file and read the number from the error message in the log).
+ * To find out the hash for a new directive put it in the config file
+ * and read the number from the error message in the log).
  *
  * Please keep this list sorted alphabetically (but with the Windows
  * console and GUI specific options last).
@@ -138,6 +137,7 @@ static struct file_list *current_configfile = NULL;
 #define hash_ca_key_file                 1184187891U /* "ca-key-file" */
 #define hash_ca_password                 1184543320U /* "ca-password" */
 #define hash_certificate_directory       1367994217U /* "certificate-directory" */
+#define hash_cipher_list                 1225729316U /* "cipher-list" */
 #define hash_client_header_order         2701453514U /* "client-header-order" */
 #define hash_client_specific_tag         3353703383U /* "client-specific-tag" */
 #define hash_client_tag_lifetime          647957580U /* "client-tag-lifetime" */
@@ -281,6 +281,7 @@ static void unload_configfile (void * data)
    freez(config->ca_cert_file);
    freez(config->ca_key_file);
    freez(config->certificate_directory);
+   freez(config->cipher_list);
    freez(config->trusted_cas_file);
 #endif
 
@@ -1459,41 +1460,13 @@ struct configuration_spec * load_config(void)
          {
             int max_client_connections = parse_numeric_value(cmd, arg);
 
-#if !defined(_WIN32) && !defined(HAVE_POLL)
-            /*
-             * Reject values below 1 for obvious reasons and values above
-             * FD_SETSIZE/2 because Privoxy needs two sockets to serve
-             * client connections that need forwarding.
-             *
-             * We ignore the fact that the first three file descriptors
-             * are usually set to /dev/null, one is used for logging
-             * and yet another file descriptor is required to load
-             * config files.
-             */
-            if ((max_client_connections < 1) || (FD_SETSIZE/2 < max_client_connections))
-            {
-               log_error(LOG_LEVEL_FATAL, "max-client-connections value %d"
-                  " is invalid. Value needs to be above 1 and below %d"
-                  " (FD_SETSIZE/2).", max_client_connections, FD_SETSIZE/2);
-            }
-#else
-            /*
-             * The Windows libc uses FD_SETSIZE for an array used
-             * by select(), but has no problems with file descriptors
-             * above the limit as long as no more than FD_SETSIZE are
-             * passed to select().
-             * https://msdn.microsoft.com/en-us/library/windows/desktop/ms739169%28v=vs.85%29.aspx
-             *
-             * On platforms were we use poll() we don't have to enforce
-             * an upper connection limit either.
-             */
             if (max_client_connections < 1)
             {
                log_error(LOG_LEVEL_FATAL, "max-client-connections value"
                   " has to be a number above 1. %d is invalid.",
                   max_client_connections);
             }
-#endif
+
             config->max_client_connections = max_client_connections;
             break;
          }
@@ -1591,7 +1564,7 @@ struct configuration_spec * load_config(void)
             if (config->receive_buffer_size < BUFFER_SIZE)
             {
                log_error(LOG_LEVEL_INFO,
-                  "receive-buffer-size %d seems low and may cause problems."
+                  "receive-buffer-size %lu seems low and may cause problems."
                   "Consider setting it to at least %d.",
                   config->receive_buffer_size, BUFFER_SIZE);
             }
@@ -1796,6 +1769,15 @@ struct configuration_spec * load_config(void)
 
             break;
 
+/* *************************************************************************
+ * cipher-list list-of-ciphers
+ * *************************************************************************/
+         case hash_cipher_list:
+            freez(config->cipher_list);
+            config->cipher_list = strdup_or_die(arg);
+
+            break;
+
 /* *************************************************************************
  * trusted CAs file name trusted-cas-file
  * *************************************************************************/