[FFmpeg-cvslog] r15182 - in trunk: doc/ffserver.conf ffserver.c
stefano
subversion
Wed Sep 3 20:16:34 CEST 2008
Author: stefano
Date: Wed Sep 3 20:16:34 2008
New Revision: 15182
Log:
Make the maximum number of simultaneous HTTP connections handled by
ffserver a configuration parameter. The name of the new parameter
introduced is MaxHTTPConnections.
Modified:
trunk/doc/ffserver.conf
trunk/ffserver.c
Modified: trunk/doc/ffserver.conf
==============================================================================
--- trunk/doc/ffserver.conf (original)
+++ trunk/doc/ffserver.conf Wed Sep 3 20:16:34 2008
@@ -7,6 +7,11 @@ Port 8090
# several network interfaces.
BindAddress 0.0.0.0
+# Number of simultaneous HTTP connections that can be handled. It has
+# to be defined *before* the MaxClients parameter, since it defines the
+# MaxClients maximum limit.
+MaxHTTPConnections 2000
+
# Number of simultaneous requests that can be handled. Since FFServer
# is very fast, it is more likely that you will want to leave this high
# and use MaxBandwidth, below.
Modified: trunk/ffserver.c
==============================================================================
--- trunk/ffserver.c (original)
+++ trunk/ffserver.c Wed Sep 3 20:16:34 2008
@@ -62,9 +62,6 @@ const int program_birth_year = 2000;
static const OptionDef options[];
-/* maximum number of simultaneous HTTP connections */
-#define HTTP_MAX_CONNECTIONS 2000
-
enum HTTPState {
HTTPSTATE_WAIT_REQUEST,
HTTPSTATE_SEND_HEADER,
@@ -295,6 +292,8 @@ static int ffserver_daemon;
static int no_launch;
static int need_to_start_children;
+/* maximum number of simultaneous HTTP connections */
+static unsigned int nb_max_http_connections = 2000;
static int nb_max_connections = 5;
static int nb_connections;
@@ -543,9 +542,14 @@ static int http_server(void)
{
int server_fd = 0, rtsp_server_fd = 0;
int ret, delay, delay1;
- struct pollfd poll_table[HTTP_MAX_CONNECTIONS + 2], *poll_entry;
+ struct pollfd *poll_table, *poll_entry;
HTTPContext *c, *c_next;
+ if(!(poll_table = av_mallocz(nb_max_http_connections + 2))) {
+ http_log("Impossible to allocate a poll table handling %d connections.\n", nb_max_http_connections);
+ return -1;
+ }
+
if (my_http_addr.sin_port) {
server_fd = socket_open_listen(&my_http_addr);
if (server_fd < 0)
@@ -3816,10 +3820,19 @@ static int parse_ffconfig(const char *fi
filename, line_num, arg);
errors++;
}
+ } else if (!strcasecmp(cmd, "MaxHTTPConnections")) {
+ get_arg(arg, sizeof(arg), &p);
+ val = atoi(arg);
+ if (val < 1 || val > 65536) {
+ fprintf(stderr, "%s:%d: Invalid MaxHTTPConnections: %s\n",
+ filename, line_num, arg);
+ errors++;
+ }
+ nb_max_http_connections = val;
} else if (!strcasecmp(cmd, "MaxClients")) {
get_arg(arg, sizeof(arg), &p);
val = atoi(arg);
- if (val < 1 || val > HTTP_MAX_CONNECTIONS) {
+ if (val < 1 || val > nb_max_http_connections) {
fprintf(stderr, "%s:%d: Invalid MaxClients: %s\n",
filename, line_num, arg);
errors++;
More information about the ffmpeg-cvslog
mailing list