Merged revisions 311141 via svnmerge from
authorMatthew Nicholson <mnicholson@digium.com>
Thu, 17 Mar 2011 15:02:12 +0000 (15:02 +0000)
committerMatthew Nicholson <mnicholson@digium.com>
Thu, 17 Mar 2011 15:02:12 +0000 (15:02 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.8

................
  r311141 | mnicholson | 2011-03-17 10:00:33 -0500 (Thu, 17 Mar 2011) | 11 lines

  Merged revisions 311140 via svnmerge from
  https://origsvn.digium.com/svn/asterisk/branches/1.6.2

  ........
    r311140 | mnicholson | 2011-03-17 09:58:52 -0500 (Thu, 17 Mar 2011) | 4 lines

    Don't write items to the manager socket twice.

    AST-2011-003

    (closes issue 0018987)
    Reported by: ks-steven
  ........
................

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

main/manager.c

index 36478ed..74f9ecc 100644 (file)
@@ -1837,6 +1837,9 @@ int ast_hook_send_action(struct manager_custom_hook *hook, const char *msg)
 static int send_string(struct mansession *s, char *string)
 {
        int res;
+       FILE *f = s->f ? s->f : s->session->f;
+       int fd = s->f ? s->fd : s->session->fd;
+
        /* It's a result from one of the hook's action invocation */
        if (s->hook) {
                /*
@@ -1845,9 +1848,9 @@ static int send_string(struct mansession *s, char *string)
                 */
                s->hook->helper(EVENT_FLAG_HOOKRESPONSE, "HookResponse", string);
                return 0;
-       }       else if (s->f && (res = ast_careful_fwrite(s->f, s->fd, string, strlen(string), s->session->writetimeout))) {
-               s->write_error = 1;
-       } else if ((res = ast_careful_fwrite(s->session->f, s->session->fd, string, strlen(string), s->session->writetimeout))) {
+       }
+       
+       if ((res = ast_careful_fwrite(f, fd, string, strlen(string), s->session->writetimeout))) {
                s->write_error = 1;
        }