http: Fix spurious ERROR message in responses with no content.
authorRichard Mudgett <rmudgett@digium.com>
Wed, 23 Apr 2014 18:03:41 +0000 (18:03 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Wed, 23 Apr 2014 18:03:41 +0000 (18:03 +0000)
Backport -r411687 and fix the fix because content_length is the length of
out plus the length of the file controlled by fd.

When a response has an out 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 the content of out if
the out string is non-zero.
........

Merged revisions 412922 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 412923 from http://svn.asterisk.org/svn/asterisk/branches/11
........

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

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

main/http.c

index 9d213ef..a940ba2 100644 (file)
@@ -443,8 +443,8 @@ void ast_http_send(struct ast_tcptls_session_instance *ser,
 
        /* send content */
        if (method != AST_HTTP_HEAD || status_code >= 400) {
 
        /* send content */
        if (method != AST_HTTP_HEAD || status_code >= 400) {
-               if (content_length) {
-                       if (fwrite(ast_str_buffer(out), content_length, 1, ser->f) != 1) {
+               if (out && ast_str_strlen(out)) {
+                       if (fwrite(ast_str_buffer(out), ast_str_strlen(out), 1, ser->f) != 1) {
                                ast_log(LOG_ERROR, "fwrite() failed: %s\n", strerror(errno));
                        }
                }
                                ast_log(LOG_ERROR, "fwrite() failed: %s\n", strerror(errno));
                        }
                }