From 3b72d12d375c5f0d1b5b6b416bc0678f493fd6f0 Mon Sep 17 00:00:00 2001 From: bcoudurier Date: Sat, 21 Mar 2009 09:56:25 +0000 Subject: [PATCH] send busy reply if max connections number is exceeded git-svn-id: file:///var/local/repositories/ffmpeg/trunk@18103 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b --- ffserver.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/ffserver.c b/ffserver.c index baefd7809..39ab5632e 100644 --- a/ffserver.c +++ b/ffserver.c @@ -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" + "Too busy\r\n" + "

The server is too busy to serve your request at this time.

\r\n" + "

The number of current connections is %d, and this exceeds the limit of %d.

\r\n" + "\r\n", + nb_connections, nb_max_connections); + send(fd, buffer, len, 0); +} + + static void new_connection(int server_fd, int is_rtsp) { struct sockaddr_in from_addr; @@ -715,10 +731,10 @@ static void new_connection(int server_fd, int is_rtsp) } ff_socket_nonblock(fd, 1); - /* XXX: should output a warning page when coming - close to the connection limit */ - if (nb_connections >= nb_max_connections) + if (nb_connections >= nb_max_connections) { + http_send_too_busy_reply(fd); goto fail; + } /* add a new connection */ c = av_mallocz(sizeof(HTTPContext)); -- 2.39.2