|
|
|
@@ -895,23 +895,23 @@ static int handle_connection(HTTPContext *c) |
|
|
|
return -1; |
|
|
|
break; |
|
|
|
} |
|
|
|
/* search for end of request. */ |
|
|
|
c->buffer_ptr += len; |
|
|
|
ptr = c->buffer_ptr; |
|
|
|
if ((ptr >= c->buffer + 2 && !memcmp(ptr-2, "\n\n", 2)) || |
|
|
|
(ptr >= c->buffer + 4 && !memcmp(ptr-4, "\r\n\r\n", 4))) { |
|
|
|
/* request found : parse it and reply */ |
|
|
|
if (c->state == HTTPSTATE_WAIT_REQUEST) { |
|
|
|
ret = http_parse_request(c); |
|
|
|
} else { |
|
|
|
ret = rtsp_parse_request(c); |
|
|
|
} |
|
|
|
if (ret < 0) |
|
|
|
return -1; |
|
|
|
} else if (ptr >= c->buffer_end) { |
|
|
|
/* request too long: cannot do anything */ |
|
|
|
/* search for end of request. */ |
|
|
|
c->buffer_ptr += len; |
|
|
|
ptr = c->buffer_ptr; |
|
|
|
if ((ptr >= c->buffer + 2 && !memcmp(ptr-2, "\n\n", 2)) || |
|
|
|
(ptr >= c->buffer + 4 && !memcmp(ptr-4, "\r\n\r\n", 4))) { |
|
|
|
/* request found : parse it and reply */ |
|
|
|
if (c->state == HTTPSTATE_WAIT_REQUEST) { |
|
|
|
ret = http_parse_request(c); |
|
|
|
} else { |
|
|
|
ret = rtsp_parse_request(c); |
|
|
|
} |
|
|
|
if (ret < 0) |
|
|
|
return -1; |
|
|
|
} else goto read_loop; |
|
|
|
} else if (ptr >= c->buffer_end) { |
|
|
|
/* request too long: cannot do anything */ |
|
|
|
return -1; |
|
|
|
} else goto read_loop; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
@@ -930,20 +930,20 @@ static int handle_connection(HTTPContext *c) |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
c->buffer_ptr += len; |
|
|
|
if (c->stream) |
|
|
|
c->stream->bytes_served += len; |
|
|
|
c->data_count += len; |
|
|
|
if (c->buffer_ptr >= c->buffer_end) { |
|
|
|
av_freep(&c->pb_buffer); |
|
|
|
/* if error, exit */ |
|
|
|
if (c->http_error) |
|
|
|
return -1; |
|
|
|
/* all the buffer was sent : synchronize to the incoming |
|
|
|
* stream */ |
|
|
|
c->state = HTTPSTATE_SEND_DATA_HEADER; |
|
|
|
c->buffer_ptr = c->buffer_end = c->buffer; |
|
|
|
} |
|
|
|
c->buffer_ptr += len; |
|
|
|
if (c->stream) |
|
|
|
c->stream->bytes_served += len; |
|
|
|
c->data_count += len; |
|
|
|
if (c->buffer_ptr >= c->buffer_end) { |
|
|
|
av_freep(&c->pb_buffer); |
|
|
|
/* if error, exit */ |
|
|
|
if (c->http_error) |
|
|
|
return -1; |
|
|
|
/* all the buffer was sent : synchronize to the incoming |
|
|
|
* stream */ |
|
|
|
c->state = HTTPSTATE_SEND_DATA_HEADER; |
|
|
|
c->buffer_ptr = c->buffer_end = c->buffer; |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case HTTPSTATE_SEND_DATA: |
|
|
|
@@ -997,13 +997,13 @@ static int handle_connection(HTTPContext *c) |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
c->buffer_ptr += len; |
|
|
|
c->data_count += len; |
|
|
|
if (c->buffer_ptr >= c->buffer_end) { |
|
|
|
/* all the buffer was sent : wait for a new request */ |
|
|
|
av_freep(&c->pb_buffer); |
|
|
|
start_wait_request(c, 1); |
|
|
|
} |
|
|
|
c->buffer_ptr += len; |
|
|
|
c->data_count += len; |
|
|
|
if (c->buffer_ptr >= c->buffer_end) { |
|
|
|
/* all the buffer was sent : wait for a new request */ |
|
|
|
av_freep(&c->pb_buffer); |
|
|
|
start_wait_request(c, 1); |
|
|
|
} |
|
|
|
break; |
|
|
|
case RTSPSTATE_SEND_PACKET: |
|
|
|
if (c->poll_entry->revents & (POLLERR | POLLHUP)) { |
|
|
|
@@ -1024,12 +1024,12 @@ static int handle_connection(HTTPContext *c) |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
c->packet_buffer_ptr += len; |
|
|
|
if (c->packet_buffer_ptr >= c->packet_buffer_end) { |
|
|
|
/* all the buffer was sent : wait for a new request */ |
|
|
|
av_freep(&c->packet_buffer); |
|
|
|
c->state = RTSPSTATE_WAIT_REQUEST; |
|
|
|
} |
|
|
|
c->packet_buffer_ptr += len; |
|
|
|
if (c->packet_buffer_ptr >= c->packet_buffer_end) { |
|
|
|
/* all the buffer was sent : wait for a new request */ |
|
|
|
av_freep(&c->packet_buffer); |
|
|
|
c->state = RTSPSTATE_WAIT_REQUEST; |
|
|
|
} |
|
|
|
break; |
|
|
|
case HTTPSTATE_READY: |
|
|
|
/* nothing to do */ |
|
|
|
|