Add better support for relaying success or failure of the ast_transfer() API call.
[asterisk/asterisk.git] / channels / chan_iax2.c
index 47f1ddc..860e1d6 100644 (file)
@@ -4413,6 +4413,7 @@ static int iax2_transfer(struct ast_channel *c, const char *dest)
        unsigned short callno = PTR_TO_CALLNO(c->tech_pvt);
        struct iax_ie_data ied = { "", };
        char tmp[256], *context;
        unsigned short callno = PTR_TO_CALLNO(c->tech_pvt);
        struct iax_ie_data ied = { "", };
        char tmp[256], *context;
+       enum ast_control_transfer message = AST_TRANSFER_SUCCESS;
        ast_copy_string(tmp, dest, sizeof(tmp));
        context = strchr(tmp, '@');
        if (context) {
        ast_copy_string(tmp, dest, sizeof(tmp));
        context = strchr(tmp, '@');
        if (context) {
@@ -4423,6 +4424,7 @@ static int iax2_transfer(struct ast_channel *c, const char *dest)
        if (context)
                iax_ie_append_str(&ied, IAX_IE_CALLED_CONTEXT, context);
        ast_debug(1, "Transferring '%s' to '%s'\n", c->name, dest);
        if (context)
                iax_ie_append_str(&ied, IAX_IE_CALLED_CONTEXT, context);
        ast_debug(1, "Transferring '%s' to '%s'\n", c->name, dest);
+       ast_queue_control_data(c, AST_CONTROL_TRANSFER, &message, sizeof(message));
        return send_command_locked(callno, AST_FRAME_IAX, IAX_COMMAND_TRANSFER, 0, ied.buf, ied.pos, -1);
 }
        
        return send_command_locked(callno, AST_FRAME_IAX, IAX_COMMAND_TRANSFER, 0, ied.buf, ied.pos, -1);
 }