diff options
author | Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com> | 2014-02-13 10:24:16 +0400 |
---|---|---|
committer | Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com> | 2014-02-14 21:31:41 +0400 |
commit | ba6186d6eb316029f0ab3ced89072dfab2282bf7 (patch) | |
tree | 43ac6ab3f550f8719ed2116fd7b35c95f98ec10f | |
parent | 5df2a502f2147c16b6151e8c36ddd682b91ac8ea (diff) |
ffserver: factor out connection closing from handler
Signed-off-by: Reynaldo H. Verdejo Pinochet <r.verdejo@sisa.samsung.com>
-rw-r--r-- | ffserver.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/ffserver.c b/ffserver.c index d57aa315f5..f6fb082406 100644 --- a/ffserver.c +++ b/ffserver.c @@ -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) |