From edfdd7986defe224b7781e09ae79a5ae9dee1793 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Fri, 14 Oct 2005 17:29:00 +0000 Subject: [PATCH] 10l, dont make bandwidth statistics negative when feed stops being sent (it was decreased every time feed sending was aborted) Originally committed as revision 4642 to svn://svn.ffmpeg.org/ffmpeg/trunk --- ffserver.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ffserver.c b/ffserver.c index 913520f..78db9be 100644 --- a/ffserver.c +++ b/ffserver.c @@ -100,6 +100,7 @@ typedef struct HTTPContext { long timeout; uint8_t *buffer_ptr, *buffer_end; int http_error; + int post; struct HTTPContext *next; int got_key_frame; /* stream 0 => 1, stream 1 => 2, stream 2=> 4 */ int64_t data_count; @@ -767,7 +768,7 @@ static void close_connection(HTTPContext *c) for(i=0; inb_streams; i++) av_free(ctx->streams[i]) ; - if (c->stream) + if (c->stream && !c->post && c->stream->stream_type == STREAM_TYPE_LIVE) current_bandwidth -= c->stream->bandwidth; av_freep(&c->pb_buffer); av_freep(&c->packet_buffer); @@ -1170,7 +1171,6 @@ enum RedirType { static int http_parse_request(HTTPContext *c) { char *p; - int post; enum RedirType redir_type; char cmd[32]; char info[1024], *filename; @@ -1188,9 +1188,9 @@ static int http_parse_request(HTTPContext *c) pstrcpy(c->method, sizeof(c->method), cmd); if (!strcmp(cmd, "GET")) - post = 0; + c->post = 0; else if (!strcmp(cmd, "POST")) - post = 1; + c->post = 1; else return -1; @@ -1292,11 +1292,11 @@ static int http_parse_request(HTTPContext *c) } } - if (post == 0 && stream->stream_type == STREAM_TYPE_LIVE) { + if (c->post == 0 && stream->stream_type == STREAM_TYPE_LIVE) { current_bandwidth += stream->bandwidth; } - if (post == 0 && max_bandwidth < current_bandwidth) { + if (c->post == 0 && max_bandwidth < current_bandwidth) { c->http_error = 200; q = c->buffer; q += snprintf(q, q - (char *) c->buffer + c->buffer_size, "HTTP/1.0 200 Server too busy\r\n"); @@ -1439,7 +1439,7 @@ static int http_parse_request(HTTPContext *c) /* XXX: add there authenticate and IP match */ - if (post) { + if (c->post) { /* if post, it means a feed is being sent */ if (!stream->is_feed) { /* However it might be a status report from WMP! Lets log the data -- 2.7.4