diff --git a/apps/app_chanspy.c b/apps/app_chanspy.c index 873813aa3f..fcb931d328 100644 --- a/apps/app_chanspy.c +++ b/apps/app_chanspy.c @@ -259,8 +259,12 @@ static int channel_spy(struct ast_channel *chan, struct ast_channel *spyee, int ast_mutex_init(&csth.spy.lock); csth.volfactor = *volfactor; set_volume(chan, &csth); - csth.spy.read_vol_adjustment = csth.volfactor; - csth.spy.write_vol_adjustment = csth.volfactor; + if (csth.volfactor) { + ast_set_flag(&csth.spy, CHANSPY_READ_VOLADJUST); + csth.spy.read_vol_adjustment = csth.volfactor; + ast_set_flag(&csth.spy, CHANSPY_WRITE_VOLADJUST); + csth.spy.write_vol_adjustment = csth.volfactor; + } csth.fd = fd; if (start_spying(spyee, chan, &csth.spy)) { @@ -306,8 +310,15 @@ static int channel_spy(struct ast_channel *chan, struct ast_channel *spyee, int ast_verbose(VERBOSE_PREFIX_3 "Setting spy volume on %s to %d\n", chan->name, *volfactor); csth.volfactor = *volfactor; set_volume(chan, &csth); - csth.spy.read_vol_adjustment = csth.volfactor; - csth.spy.write_vol_adjustment = csth.volfactor; + if (csth.volfactor) { + ast_set_flag(&csth.spy, CHANSPY_READ_VOLADJUST); + csth.spy.read_vol_adjustment = csth.volfactor; + ast_set_flag(&csth.spy, CHANSPY_WRITE_VOLADJUST); + csth.spy.write_vol_adjustment = csth.volfactor; + } else { + ast_clear_flag(&csth.spy, CHANSPY_READ_VOLADJUST); + ast_clear_flag(&csth.spy, CHANSPY_WRITE_VOLADJUST); + } } } else if (res == '*') { break; diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 701e21e35a..5e4648f377 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -3081,6 +3081,9 @@ static int iax2_call(struct ast_channel *c, char *dest, int timeout) iaxs[callno]->initid = ast_sched_add(sched, autokill * 2, auto_congest, CALLNO_TO_PTR(callno)); } + /* send the command using the appropriate socket for this peer */ + iaxs[callno]->sockfd = cai.sockfd; + /* Transmit the string in a "NEW" request */ send_command(iaxs[callno], AST_FRAME_IAX, IAX_COMMAND_NEW, 0, ied.buf, ied.pos, -1);