http: Fix spurious ERROR message in responses with no content
authorMatthew Jordan <mjordan@digium.com>
Fri, 4 Apr 2014 15:13:55 +0000 (15:13 +0000)
committerMatthew Jordan <mjordan@digium.com>
Fri, 4 Apr 2014 15:13:55 +0000 (15:13 +0000)
When a response has a content length of 0, fwrite would be called to write a
buffer with no data in it. This resulted in the following classic error
message:

  [Apr  3 11:49:17] ERROR[26421] http.c: fwrite() failed: Success

This patch makes it so that we only attempt to write out the content if the
calculated content_length is non-zero.
........

Merged revisions 411687 from http://svn.asterisk.org/svn/asterisk/branches/12

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@411688 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/http.c

index 1009afc..d6bc006 100644 (file)
@@ -416,7 +416,7 @@ void ast_http_send(struct ast_tcptls_session_instance *ser,
 
        /* calc content length */
        if (out) {
-               content_length += strlen(ast_str_buffer(out));
+               content_length += ast_str_strlen(out);
        }
 
        if (fd) {
@@ -443,7 +443,7 @@ void ast_http_send(struct ast_tcptls_session_instance *ser,
 
        /* send content */
        if (method != AST_HTTP_HEAD || status_code >= 400) {
-               if (out) {
+               if (content_length) {
                        if (fwrite(ast_str_buffer(out), content_length, 1, ser->f) != 1) {
                                ast_log(LOG_ERROR, "fwrite() failed: %s\n", strerror(errno));
                        }