aboutsummaryrefslogtreecommitdiffstats
path: root/ffserver.c
diff options
context:
space:
mode:
authorReynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>2015-01-24 01:35:39 -0300
committerReynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>2015-01-24 02:19:08 -0300
commiteadd66a4aff74fd39f8847b655c4ad3a1ac5db2e (patch)
tree494ce1999a78562d73245febf73558eb4d14a142 /ffserver.c
parent7d3857b7ab590752a9c3a32fab7559ec8ad49537 (diff)
downloadffmpeg-eadd66a4aff74fd39f8847b655c4ad3a1ac5db2e.tar.gz
ffserver: reflow handle_connection()
Signed-off-by: Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
Diffstat (limited to 'ffserver.c')
-rw-r--r--ffserver.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/ffserver.c b/ffserver.c
index 578e56092c..06bcb2dba8 100644
--- a/ffserver.c
+++ b/ffserver.c
@@ -870,6 +870,7 @@ static void close_connection(HTTPContext *c)
static int handle_connection(HTTPContext *c)
{
int len, ret;
+ uint8_t *ptr;
switch(c->state) {
case HTTPSTATE_WAIT_REQUEST:
@@ -885,16 +886,16 @@ static int handle_connection(HTTPContext *c)
return 0;
/* read the data */
read_loop:
- len = recv(c->fd, c->buffer_ptr, 1, 0);
+ if (!(len = recv(c->fd, c->buffer_ptr, 1, 0)))
+ return -1;
+
if (len < 0) {
if (ff_neterrno() != AVERROR(EAGAIN) &&
ff_neterrno() != AVERROR(EINTR))
return -1;
- } else if (len == 0) {
- return -1;
- } else {
+ break;
+ }
/* search for end of request. */
- uint8_t *ptr;
c->buffer_ptr += len;
ptr = c->buffer_ptr;
if ((ptr >= c->buffer + 2 && !memcmp(ptr-2, "\n\n", 2)) ||
@@ -911,7 +912,7 @@ static int handle_connection(HTTPContext *c)
/* request too long: cannot do anything */
return -1;
} else goto read_loop;
- }
+
break;
case HTTPSTATE_SEND_HEADER:
@@ -927,7 +928,8 @@ static int handle_connection(HTTPContext *c)
ff_neterrno() != AVERROR(EINTR)) {
goto close_connection;
}
- } else {
+ break;
+ }
c->buffer_ptr += len;
if (c->stream)
c->stream->bytes_served += len;
@@ -942,7 +944,6 @@ static int handle_connection(HTTPContext *c)
c->state = HTTPSTATE_SEND_DATA_HEADER;
c->buffer_ptr = c->buffer_end = c->buffer;
}
- }
break;
case HTTPSTATE_SEND_DATA:
@@ -994,7 +995,8 @@ static int handle_connection(HTTPContext *c)
ff_neterrno() != AVERROR(EINTR)) {
goto close_connection;
}
- } else {
+ break;
+ }
c->buffer_ptr += len;
c->data_count += len;
if (c->buffer_ptr >= c->buffer_end) {
@@ -1002,7 +1004,6 @@ static int handle_connection(HTTPContext *c)
av_freep(&c->pb_buffer);
start_wait_request(c, 1);
}
- }
break;
case RTSPSTATE_SEND_PACKET:
if (c->poll_entry->revents & (POLLERR | POLLHUP)) {
@@ -1021,14 +1022,14 @@ static int handle_connection(HTTPContext *c)
av_freep(&c->packet_buffer);
return -1;
}
- } else {
+ 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;
}
- }
break;
case HTTPSTATE_READY:
/* nothing to do */