[SCM] libav/experimental: send busy reply if max connections number is exceeded

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:42:06 UTC 2013


The following commit has been merged in the experimental branch:
commit 0bdd8b858f981ee42650459bd12f0f8c0e756d12
Author: Baptiste Coudurier <baptiste.coudurier at gmail.com>
Date:   Sat Mar 21 09:56:25 2009 +0000

    send busy reply if max connections number is exceeded
    
    Originally committed as revision 18103 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/ffserver.c b/ffserver.c
index baefd78..39ab563 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"
+                       "<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)
 {
     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));

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list