X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=ffserver.c;h=4c34cc9da0a18555ea3801f68fd07a78531c9458;hb=9e0a1bd2b977e69638a691e4ff4c9ceb21d45c33;hp=0946d0e392808793ffea6d54de8cdb3640f23441;hpb=3e2714992b5023260ebfafd5d8f7d4cd0e2bdd80;p=ffmpeg diff --git a/ffserver.c b/ffserver.c index 0946d0e3928..4c34cc9da0a 100644 --- a/ffserver.c +++ b/ffserver.c @@ -209,10 +209,10 @@ static void close_connection(HTTPContext *c); /* HTTP handling */ static int handle_connection(HTTPContext *c); -static int http_parse_request(HTTPContext *c); -static int http_send_data(HTTPContext *c); static void compute_status(HTTPContext *c); static int open_input_stream(HTTPContext *c, const char *info); +static int http_parse_request(HTTPContext *c); +static int http_send_data(HTTPContext *c); static int http_start_receive_data(HTTPContext *c); static int http_receive_data(HTTPContext *c); @@ -465,7 +465,8 @@ static int socket_open_listen(struct sockaddr_in *my_addr) my_addr->sin_family = AF_INET; if (bind (server_fd, (struct sockaddr *) my_addr, sizeof (*my_addr)) < 0) { char bindmsg[32]; - snprintf(bindmsg, sizeof(bindmsg), "bind(port %d)", ntohs(my_addr->sin_port)); + snprintf(bindmsg, sizeof(bindmsg), "bind(port %d)", + ntohs(my_addr->sin_port)); perror (bindmsg); closesocket(server_fd); return -1; @@ -725,7 +726,8 @@ static void http_send_too_busy_reply(int fd) nb_connections, config.nb_max_connections); av_assert0(len < sizeof(buffer)); if (send(fd, buffer, len, 0) < len) - av_log(NULL, AV_LOG_WARNING, "Could not send too-busy reply, send() failed\n"); + av_log(NULL, AV_LOG_WARNING, + "Could not send too-busy reply, send() failed\n"); } @@ -1091,7 +1093,8 @@ static int extract_rates(char *rates, int ratelen, const char *request) return 0; } -static int find_stream_in_feed(FFServerStream *feed, AVCodecContext *codec, int bit_rate) +static int find_stream_in_feed(FFServerStream *feed, AVCodecContext *codec, + int bit_rate) { int i; int best_bitrate = 100000000; @@ -1113,7 +1116,8 @@ static int find_stream_in_feed(FFServerStream *feed, AVCodecContext *codec, int */ if (feed_codec->bit_rate <= bit_rate) { - if (best_bitrate > bit_rate || feed_codec->bit_rate > best_bitrate) { + if (best_bitrate > bit_rate || + feed_codec->bit_rate > best_bitrate) { best_bitrate = feed_codec->bit_rate; best = i; } @@ -1183,7 +1187,8 @@ static void get_word(char *buf, int buf_size, const char **pp) *pp = p; } -static FFServerIPAddressACL* parse_dynamic_acl(FFServerStream *stream, HTTPContext *c) +static FFServerIPAddressACL* parse_dynamic_acl(FFServerStream *stream, + HTTPContext *c) { FILE* f; char line[1024]; @@ -1211,7 +1216,8 @@ static FFServerIPAddressACL* parse_dynamic_acl(FFServerStream *stream, HTTPConte ffserver_get_arg(cmd, sizeof(cmd), &p); if (!av_strcasecmp(cmd, "ACL")) - ffserver_parse_acl_row(NULL, NULL, acl, p, stream->dynamic_acl, line_num); + ffserver_parse_acl_row(NULL, NULL, acl, p, stream->dynamic_acl, + line_num); } fclose(f); return acl; @@ -1339,7 +1345,8 @@ static int http_parse_request(HTTPContext *c) av_strlcpy(c->protocol, protocol, sizeof(c->protocol)); if (config.debug) - http_log("%s - - New connection: %s %s\n", inet_ntoa(c->from_addr.sin_addr), cmd, url); + http_log("%s - - New connection: %s %s\n", + inet_ntoa(c->from_addr.sin_addr), cmd, url); /* find the filename and the optional info string in the request */ p1 = strchr(url, '?'); @@ -1414,7 +1421,8 @@ static int http_parse_request(HTTPContext *c) "\r\n" "Moved\r\n" "You should be redirected.\r\n" - "\r\n", stream->feed_filename, stream->feed_filename); + "\r\n", + stream->feed_filename, stream->feed_filename); q += strlen(q); /* prepare output buffer */ c->buffer_ptr = c->buffer; @@ -1454,7 +1462,8 @@ static int http_parse_request(HTTPContext *c) "

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

\r\n" "

The bandwidth being served (including your stream) is %"PRIu64"kbit/sec, " "and this exceeds the limit of %"PRIu64"kbit/sec.

\r\n" - "\r\n", current_bandwidth, config.max_bandwidth); + "\r\n", + current_bandwidth, config.max_bandwidth); q += strlen(q); /* prepare output buffer */ c->buffer_ptr = c->buffer; @@ -1760,7 +1769,8 @@ static void compute_status(HTTPContext *c) avio_printf(pb, "%s Status\n", program_name); if (c->stream->feed_filename[0]) - avio_printf(pb, "\n", c->stream->feed_filename); + avio_printf(pb, "\n", + c->stream->feed_filename); avio_printf(pb, "\n"); avio_printf(pb, "

%s Status

\n", program_name); /* format status */ @@ -2042,7 +2052,9 @@ static int open_input_stream(HTTPContext *c, const char *info) } /* open stream */ - if ((ret = avformat_open_input(&s, input_filename, c->stream->ifmt, &c->stream->in_opts)) < 0) { + ret = avformat_open_input(&s, input_filename, c->stream->ifmt, + &c->stream->in_opts); + if (ret < 0) { http_log("Could not open input '%s': %s\n", input_filename, av_err2str(ret)); return ret; } @@ -2407,7 +2419,7 @@ static int http_send_data(HTTPContext *c) /* send everything we can NOW */ len = send(rtsp_c->fd, rtsp_c->packet_buffer_ptr, - rtsp_c->packet_buffer_end - rtsp_c->packet_buffer_ptr, 0); + rtsp_c->packet_buffer_end - rtsp_c->packet_buffer_ptr, 0); if (len > 0) rtsp_c->packet_buffer_ptr += len; if (rtsp_c->packet_buffer_ptr < rtsp_c->packet_buffer_end) { @@ -2429,7 +2441,8 @@ static int http_send_data(HTTPContext *c) } } else { /* TCP data output */ - len = send(c->fd, c->buffer_ptr, c->buffer_end - c->buffer_ptr, 0); + len = send(c->fd, c->buffer_ptr, + c->buffer_end - c->buffer_ptr, 0); if (len < 0) { if (ff_neterrno() != AVERROR(EAGAIN) && ff_neterrno() != AVERROR(EINTR)) @@ -2457,13 +2470,15 @@ static int http_start_receive_data(HTTPContext *c) int ret; if (c->stream->feed_opened) { - http_log("Stream feed '%s' was not opened\n", c->stream->feed_filename); + http_log("Stream feed '%s' was not opened\n", + c->stream->feed_filename); return AVERROR(EINVAL); } /* Don't permit writing to this one */ if (c->stream->readonly) { - http_log("Cannot write to read-only file '%s'\n", c->stream->feed_filename); + http_log("Cannot write to read-only file '%s'\n", + c->stream->feed_filename); return AVERROR(EINVAL); } @@ -2498,7 +2513,8 @@ static int http_start_receive_data(HTTPContext *c) } } - c->stream->feed_write_index = FFMAX(ffm_read_write_index(fd), FFM_PACKET_SIZE); + c->stream->feed_write_index = FFMAX(ffm_read_write_index(fd), + FFM_PACKET_SIZE); c->stream->feed_size = lseek(fd, 0, SEEK_END); lseek(fd, 0, SEEK_SET); @@ -2592,12 +2608,14 @@ static int http_receive_data(HTTPContext *c) feed->feed_size = feed->feed_write_index; /* handle wrap around if max file size reached */ - if (c->stream->feed_max_size && feed->feed_write_index >= c->stream->feed_max_size) + if (c->stream->feed_max_size && + feed->feed_write_index >= c->stream->feed_max_size) feed->feed_write_index = FFM_PACKET_SIZE; /* write index */ if (ffm_write_write_index(c->feed_fd, feed->feed_write_index) < 0) { - http_log("Error writing index to feed file: %s\n", strerror(errno)); + http_log("Error writing index to feed file: %s\n", + strerror(errno)); goto fail; } @@ -2838,7 +2856,8 @@ static void rtsp_cmd_options(HTTPContext *c, const char *url) // rtsp_reply_header(c, RTSP_STATUS_OK); avio_printf(c->pb, "RTSP/1.0 %d %s\r\n", RTSP_STATUS_OK, "OK"); avio_printf(c->pb, "CSeq: %d\r\n", c->seq); - avio_printf(c->pb, "Public: %s\r\n", "OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE"); + avio_printf(c->pb, "Public: %s\r\n", + "OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE"); avio_printf(c->pb, "\r\n"); } @@ -3123,7 +3142,8 @@ static void rtsp_cmd_play(HTTPContext *c, const char *url, RTSPMessageHeader *h) avio_printf(c->pb, "\r\n"); } -static void rtsp_cmd_interrupt(HTTPContext *c, const char *url, RTSPMessageHeader *h, int pause_only) +static void rtsp_cmd_interrupt(HTTPContext *c, const char *url, + RTSPMessageHeader *h, int pause_only) { HTTPContext *rtp_c; @@ -3157,7 +3177,8 @@ static void rtsp_cmd_interrupt(HTTPContext *c, const char *url, RTSPMessageHeade /* RTP handling */ static HTTPContext *rtp_new_connection(struct sockaddr_in *from_addr, - FFServerStream *stream, const char *session_id, + FFServerStream *stream, + const char *session_id, enum RTSPLowerTransport rtp_protocol) { HTTPContext *c = NULL; @@ -3321,7 +3342,8 @@ static int rtp_new_av_stream(HTTPContext *c, /********************************************************************/ /* ffserver initialization */ -static AVStream *add_av_stream1(FFServerStream *stream, AVCodecContext *codec, int copy) +static AVStream *add_av_stream1(FFServerStream *stream, + AVCodecContext *codec, int copy) { AVStream *fst; @@ -3424,7 +3446,8 @@ static void extract_mpeg4_header(AVFormatContext *infile) if (!mpeg4_count) return; - printf("MPEG4 without extra data: trying to find header in %s\n", infile->filename); + printf("MPEG4 without extra data: trying to find header in %s\n", + infile->filename); while (mpeg4_count > 0) { if (av_read_frame(infile, &pkt) < 0) break; @@ -3476,13 +3499,18 @@ static void build_file_streams(void) } if (!stream->feed_filename[0]) { - http_log("Unspecified feed file for stream '%s'\n", stream->filename); + http_log("Unspecified feed file for stream '%s'\n", + stream->filename); goto fail; } - http_log("Opening feed file '%s' for stream '%s'\n", stream->feed_filename, stream->filename); - if ((ret = avformat_open_input(&infile, stream->feed_filename, stream->ifmt, &stream->in_opts)) < 0) { - http_log("Could not open '%s': %s\n", stream->feed_filename, av_err2str(ret)); + http_log("Opening feed file '%s' for stream '%s'\n", + stream->feed_filename, stream->filename); + ret = avformat_open_input(&infile, stream->feed_filename, + stream->ifmt, &stream->in_opts); + if (ret < 0) { + http_log("Could not open '%s': %s\n", stream->feed_filename, + av_err2str(ret)); /* remove stream (no need to spend more time on it) */ fail: remove_stream(stream); @@ -3690,7 +3718,9 @@ static void handle_child_exit(int sig) int uptime = time(0) - feed->pid_start; feed->pid = 0; - fprintf(stderr, "%s: Pid %d exited with status %d after %d seconds\n", feed->filename, pid, status, uptime); + fprintf(stderr, + "%s: Pid %d exited with status %d after %d seconds\n", + feed->filename, pid, status, uptime); if (uptime < 30) /* Turn off any more restarts */