http or rtsp only support
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>
Sun, 22 Jun 2008 00:52:22 +0000 (00:52 +0000)
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>
Sun, 22 Jun 2008 00:52:22 +0000 (00:52 +0000)
Originally committed as revision 13859 to svn://svn.ffmpeg.org/ffmpeg/trunk

ffserver.c

index b094217..fa82b61 100644 (file)
@@ -512,17 +512,27 @@ static void start_multicast(void)
 /* main loop of the http server */
 static int http_server(void)
 {
-    int server_fd, ret, rtsp_server_fd, delay, delay1;
+    int server_fd = 0, rtsp_server_fd = 0;
+    int ret, delay, delay1;
     struct pollfd poll_table[HTTP_MAX_CONNECTIONS + 2], *poll_entry;
     HTTPContext *c, *c_next;
 
+    if (my_http_addr.sin_port) {
     server_fd = socket_open_listen(&my_http_addr);
     if (server_fd < 0)
         return -1;
+    }
 
+    if (my_rtsp_addr.sin_port) {
     rtsp_server_fd = socket_open_listen(&my_rtsp_addr);
     if (rtsp_server_fd < 0)
         return -1;
+    }
+
+    if (!rtsp_server_fd && !server_fd) {
+        http_log("HTTP and RTSP disabled.\n");
+        return -1;
+    }
 
     http_log("ffserver started.\n");
 
@@ -535,13 +545,16 @@ static int http_server(void)
 
     for(;;) {
         poll_entry = poll_table;
+        if (server_fd) {
         poll_entry->fd = server_fd;
         poll_entry->events = POLLIN;
         poll_entry++;
-
+        }
+        if (rtsp_server_fd) {
         poll_entry->fd = rtsp_server_fd;
         poll_entry->events = POLLIN;
         poll_entry++;
+        }
 
         /* wait for events on each HTTP handle */
         c = first_http_ctx;
@@ -620,13 +633,17 @@ static int http_server(void)
         }
 
         poll_entry = poll_table;
+        if (server_fd) {
         /* new HTTP connection request ? */
         if (poll_entry->revents & POLLIN)
             new_connection(server_fd, 0);
         poll_entry++;
+        }
+        if (rtsp_server_fd) {
         /* new RTSP connection request ? */
         if (poll_entry->revents & POLLIN)
             new_connection(rtsp_server_fd, 1);
+        }
     }
 }
 
@@ -4446,16 +4463,6 @@ int main(int argc, char **argv)
 
     av_init_random(av_gettime() + (getpid() << 16), &random_state);
 
-    /* address on which the server will handle HTTP connections */
-    my_http_addr.sin_family = AF_INET;
-    my_http_addr.sin_port = htons (8080);
-    my_http_addr.sin_addr.s_addr = htonl (INADDR_ANY);
-
-    /* address on which the server will handle RTSP connections */
-    my_rtsp_addr.sin_family = AF_INET;
-    my_rtsp_addr.sin_port = htons (5454);
-    my_rtsp_addr.sin_addr.s_addr = htonl (INADDR_ANY);
-
     nb_max_connections = 5;
     max_bandwidth = 1000;
     first_stream = NULL;