|
|
@ -512,17 +512,27 @@ static void start_multicast(void) |
|
|
|
/* main loop of the http server */ |
|
|
|
/* main loop of the http server */ |
|
|
|
static int http_server(void) |
|
|
|
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; |
|
|
|
struct pollfd poll_table[HTTP_MAX_CONNECTIONS + 2], *poll_entry; |
|
|
|
HTTPContext *c, *c_next; |
|
|
|
HTTPContext *c, *c_next; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (my_http_addr.sin_port) { |
|
|
|
server_fd = socket_open_listen(&my_http_addr); |
|
|
|
server_fd = socket_open_listen(&my_http_addr); |
|
|
|
if (server_fd < 0) |
|
|
|
if (server_fd < 0) |
|
|
|
return -1; |
|
|
|
return -1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (my_rtsp_addr.sin_port) { |
|
|
|
rtsp_server_fd = socket_open_listen(&my_rtsp_addr); |
|
|
|
rtsp_server_fd = socket_open_listen(&my_rtsp_addr); |
|
|
|
if (rtsp_server_fd < 0) |
|
|
|
if (rtsp_server_fd < 0) |
|
|
|
return -1; |
|
|
|
return -1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!rtsp_server_fd && !server_fd) { |
|
|
|
|
|
|
|
http_log("HTTP and RTSP disabled.\n"); |
|
|
|
|
|
|
|
return -1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
http_log("ffserver started.\n"); |
|
|
|
http_log("ffserver started.\n"); |
|
|
|
|
|
|
|
|
|
|
@ -535,13 +545,16 @@ static int http_server(void) |
|
|
|
|
|
|
|
|
|
|
|
for(;;) { |
|
|
|
for(;;) { |
|
|
|
poll_entry = poll_table; |
|
|
|
poll_entry = poll_table; |
|
|
|
|
|
|
|
if (server_fd) { |
|
|
|
poll_entry->fd = server_fd; |
|
|
|
poll_entry->fd = server_fd; |
|
|
|
poll_entry->events = POLLIN; |
|
|
|
poll_entry->events = POLLIN; |
|
|
|
poll_entry++; |
|
|
|
poll_entry++; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (rtsp_server_fd) { |
|
|
|
poll_entry->fd = rtsp_server_fd; |
|
|
|
poll_entry->fd = rtsp_server_fd; |
|
|
|
poll_entry->events = POLLIN; |
|
|
|
poll_entry->events = POLLIN; |
|
|
|
poll_entry++; |
|
|
|
poll_entry++; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* wait for events on each HTTP handle */ |
|
|
|
/* wait for events on each HTTP handle */ |
|
|
|
c = first_http_ctx; |
|
|
|
c = first_http_ctx; |
|
|
@ -620,13 +633,17 @@ static int http_server(void) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
poll_entry = poll_table; |
|
|
|
poll_entry = poll_table; |
|
|
|
|
|
|
|
if (server_fd) { |
|
|
|
/* new HTTP connection request ? */ |
|
|
|
/* new HTTP connection request ? */ |
|
|
|
if (poll_entry->revents & POLLIN) |
|
|
|
if (poll_entry->revents & POLLIN) |
|
|
|
new_connection(server_fd, 0); |
|
|
|
new_connection(server_fd, 0); |
|
|
|
poll_entry++; |
|
|
|
poll_entry++; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (rtsp_server_fd) { |
|
|
|
/* new RTSP connection request ? */ |
|
|
|
/* new RTSP connection request ? */ |
|
|
|
if (poll_entry->revents & POLLIN) |
|
|
|
if (poll_entry->revents & POLLIN) |
|
|
|
new_connection(rtsp_server_fd, 1); |
|
|
|
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); |
|
|
|
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; |
|
|
|
nb_max_connections = 5; |
|
|
|
max_bandwidth = 1000; |
|
|
|
max_bandwidth = 1000; |
|
|
|
first_stream = NULL; |
|
|
|
first_stream = NULL; |
|
|
|