ffserver: factor out connection closing from handler

Signed-off-by: Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
This commit is contained in:
Reynaldo H. Verdejo Pinochet 2014-02-13 03:24:16 -03:00
parent 5df2a502f2
commit ba6186d6eb
1 changed files with 8 additions and 10 deletions

View File

@ -1003,9 +1003,7 @@ static int handle_connection(HTTPContext *c)
if (len < 0) {
if (ff_neterrno() != AVERROR(EAGAIN) &&
ff_neterrno() != AVERROR(EINTR)) {
/* error : close connection */
av_freep(&c->pb_buffer);
return -1;
goto close_connection;
}
} else {
c->buffer_ptr += len;
@ -1063,10 +1061,8 @@ static int handle_connection(HTTPContext *c)
break;
case RTSPSTATE_SEND_REPLY:
if (c->poll_entry->revents & (POLLERR | POLLHUP)) {
av_freep(&c->pb_buffer);
return -1;
}
if (c->poll_entry->revents & (POLLERR | POLLHUP))
goto close_connection;
/* no need to write if no events */
if (!(c->poll_entry->revents & POLLOUT))
return 0;
@ -1074,9 +1070,7 @@ static int handle_connection(HTTPContext *c)
if (len < 0) {
if (ff_neterrno() != AVERROR(EAGAIN) &&
ff_neterrno() != AVERROR(EINTR)) {
/* error : close connection */
av_freep(&c->pb_buffer);
return -1;
goto close_connection;
}
} else {
c->buffer_ptr += len;
@ -1121,6 +1115,10 @@ static int handle_connection(HTTPContext *c)
return -1;
}
return 0;
close_connection:
av_freep(&c->pb_buffer);
return -1;
}
static int extract_rates(char *rates, int ratelen, const char *request)