diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2005-10-14 17:29:00 +0000 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2005-10-14 17:29:00 +0000 |
commit | edfdd7986defe224b7781e09ae79a5ae9dee1793 (patch) | |
tree | da7b731fbc889898980748e250b731210895d913 | |
parent | 670924fd9ef21a750d7694d4e3bfeae4d3cabe72 (diff) | |
download | ffmpeg-edfdd7986defe224b7781e09ae79a5ae9dee1793.tar.gz |
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
-rw-r--r-- | ffserver.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/ffserver.c b/ffserver.c index 913520fa4c..78db9be526 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; i<ctx->nb_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 |