Commit 3b72d12d authored by bcoudurier's avatar bcoudurier

send busy reply if max connections number is exceeded

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18103 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent de4df06b
...@@ -700,6 +700,22 @@ static void start_wait_request(HTTPContext *c, int is_rtsp) ...@@ -700,6 +700,22 @@ static void start_wait_request(HTTPContext *c, int is_rtsp)
} }
} }
static void http_send_too_busy_reply(int fd)
{
char buffer[300];
int len = snprintf(buffer, sizeof(buffer),
"HTTP/1.0 200 Server too busy\r\n"
"Content-type: text/html\r\n"
"\r\n"
"<html><head><title>Too busy</title></head><body>\r\n"
"<p>The server is too busy to serve your request at this time.</p>\r\n"
"<p>The number of current connections is %d, and this exceeds the limit of %d.</p>\r\n"
"</body></html>\r\n",
nb_connections, nb_max_connections);
send(fd, buffer, len, 0);
}
static void new_connection(int server_fd, int is_rtsp) static void new_connection(int server_fd, int is_rtsp)
{ {
struct sockaddr_in from_addr; struct sockaddr_in from_addr;
...@@ -715,10 +731,10 @@ static void new_connection(int server_fd, int is_rtsp) ...@@ -715,10 +731,10 @@ static void new_connection(int server_fd, int is_rtsp)
} }
ff_socket_nonblock(fd, 1); ff_socket_nonblock(fd, 1);
/* XXX: should output a warning page when coming if (nb_connections >= nb_max_connections) {
close to the connection limit */ http_send_too_busy_reply(fd);
if (nb_connections >= nb_max_connections)
goto fail; goto fail;
}
/* add a new connection */ /* add a new connection */
c = av_mallocz(sizeof(HTTPContext)); c = av_mallocz(sizeof(HTTPContext));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment