/* 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");
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;
}
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);
+ }
}
}
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;