Index: channel.c =================================================================== RCS file: /usr/cvsroot/asterisk/channel.c,v retrieving revision 1.240 diff -u -r1.240 channel.c --- channel.c 1 Sep 2005 22:28:33 -0000 1.240 +++ channel.c 6 Sep 2005 19:28:49 -0000 @@ -370,25 +370,25 @@ /* XXX Not reentrant XXX */ static char localtmp[256]; switch(state) { - case AST_STATE_DOWN: - return "Down"; - case AST_STATE_RESERVED: - return "Rsrvd"; - case AST_STATE_OFFHOOK: - return "OffHook"; - case AST_STATE_DIALING: - return "Dialing"; - case AST_STATE_RING: - return "Ring"; - case AST_STATE_RINGING: - return "Ringing"; - case AST_STATE_UP: - return "Up"; - case AST_STATE_BUSY: - return "Busy"; - default: - snprintf(localtmp, sizeof(localtmp), "Unknown (%d)\n", state); - return localtmp; + case AST_STATE_DOWN: + return "Down"; + case AST_STATE_RESERVED: + return "Rsrvd"; + case AST_STATE_OFFHOOK: + return "OffHook"; + case AST_STATE_DIALING: + return "Dialing"; + case AST_STATE_RING: + return "Ring"; + case AST_STATE_RINGING: + return "Ringing"; + case AST_STATE_UP: + return "Up"; + case AST_STATE_BUSY: + return "Busy"; + default: + snprintf(localtmp, sizeof(localtmp), "Unknown (%d)\n", state); + return localtmp; } } @@ -396,20 +396,20 @@ char *ast_transfercapability2str(int transfercapability) { switch(transfercapability) { - case AST_TRANS_CAP_SPEECH: - return "SPEECH"; - case AST_TRANS_CAP_DIGITAL: - return "DIGITAL"; - case AST_TRANS_CAP_RESTRICTED_DIGITAL: - return "RESTRICTED_DIGITAL"; - case AST_TRANS_CAP_3_1K_AUDIO: - return "3K1AUDIO"; - case AST_TRANS_CAP_DIGITAL_W_TONES: - return "DIGITAL_W_TONES"; - case AST_TRANS_CAP_VIDEO: - return "VIDEO"; - default: - return "UNKNOWN"; + case AST_TRANS_CAP_SPEECH: + return "SPEECH"; + case AST_TRANS_CAP_DIGITAL: + return "DIGITAL"; + case AST_TRANS_CAP_RESTRICTED_DIGITAL: + return "RESTRICTED_DIGITAL"; + case AST_TRANS_CAP_3_1K_AUDIO: + return "3K1AUDIO"; + case AST_TRANS_CAP_DIGITAL_W_TONES: + return "DIGITAL_W_TONES"; + case AST_TRANS_CAP_VIDEO: + return "VIDEO"; + default: + return "UNKNOWN"; } } @@ -1054,20 +1054,20 @@ return -1; } switch(chan->_state) { - case AST_STATE_RINGING: - case AST_STATE_RING: - if (chan->tech->answer) - res = chan->tech->answer(chan); - ast_setstate(chan, AST_STATE_UP); - if (chan->cdr) - ast_cdr_answer(chan->cdr); - ast_mutex_unlock(&chan->lock); - return res; - break; - case AST_STATE_UP: - if (chan->cdr) - ast_cdr_answer(chan->cdr); - break; + case AST_STATE_RINGING: + case AST_STATE_RING: + if (chan->tech->answer) + res = chan->tech->answer(chan); + ast_setstate(chan, AST_STATE_UP); + if (chan->cdr) + ast_cdr_answer(chan->cdr); + ast_mutex_unlock(&chan->lock); + return res; + break; + case AST_STATE_UP: + if (chan->cdr) + ast_cdr_answer(chan->cdr); + break; } ast_mutex_unlock(&chan->lock); return 0; @@ -1426,26 +1426,26 @@ } switch(f->frametype) { - case AST_FRAME_DTMF: - res = f->subclass; - ast_frfree(f); - return res; - case AST_FRAME_CONTROL: - switch(f->subclass) { - case AST_CONTROL_HANGUP: + case AST_FRAME_DTMF: + res = f->subclass; ast_frfree(f); - return -1; - case AST_CONTROL_RINGING: - case AST_CONTROL_ANSWER: - /* Unimportant */ - break; - default: - ast_log(LOG_WARNING, "Unexpected control subclass '%d'\n", f->subclass); - } - case AST_FRAME_VOICE: - /* Write audio if appropriate */ - if (audiofd > -1) - write(audiofd, f->data, f->datalen); + return res; + case AST_FRAME_CONTROL: + switch(f->subclass) { + case AST_CONTROL_HANGUP: + ast_frfree(f); + return -1; + case AST_CONTROL_RINGING: + case AST_CONTROL_ANSWER: + /* Unimportant */ + break; + default: + ast_log(LOG_WARNING, "Unexpected control subclass '%d'\n", f->subclass); + } + case AST_FRAME_VOICE: + /* Write audio if appropriate */ + if (audiofd > -1) + write(audiofd, f->data, f->datalen); } /* Ignore */ ast_frfree(f); @@ -1701,15 +1701,15 @@ if (condition >= 0) { const struct tone_zone_sound *ts = NULL; switch (condition) { - case AST_CONTROL_RINGING: - ts = ast_get_indication_tone(chan->zone, "ring"); - break; - case AST_CONTROL_BUSY: - ts = ast_get_indication_tone(chan->zone, "busy"); - break; - case AST_CONTROL_CONGESTION: - ts = ast_get_indication_tone(chan->zone, "congestion"); - break; + case AST_CONTROL_RINGING: + ts = ast_get_indication_tone(chan->zone, "ring"); + break; + case AST_CONTROL_BUSY: + ts = ast_get_indication_tone(chan->zone, "busy"); + break; + case AST_CONTROL_CONGESTION: + ts = ast_get_indication_tone(chan->zone, "congestion"); + break; } if (ts && ts->data[0]) { ast_log(LOG_DEBUG, "Driver for channel '%s' does not support indication %d, emulating it\n", chan->name, condition); @@ -1899,77 +1899,77 @@ ast_frame_dump(chan->name, fr, ">>"); CHECK_BLOCKING(chan); switch(fr->frametype) { - case AST_FRAME_CONTROL: - /* XXX Interpret control frames XXX */ - ast_log(LOG_WARNING, "Don't know how to handle control frames yet\n"); - break; - case AST_FRAME_DTMF: - ast_clear_flag(chan, AST_FLAG_BLOCKING); - ast_mutex_unlock(&chan->lock); - res = do_senddigit(chan,fr->subclass); - ast_mutex_lock(&chan->lock); - CHECK_BLOCKING(chan); - break; - case AST_FRAME_TEXT: - if (chan->tech->send_text) - res = chan->tech->send_text(chan, (char *) fr->data); - else - res = 0; - break; - case AST_FRAME_HTML: - if (chan->tech->send_html) - res = chan->tech->send_html(chan, fr->subclass, (char *) fr->data, fr->datalen); - else - res = 0; - break; - case AST_FRAME_VIDEO: - /* XXX Handle translation of video codecs one day XXX */ - if (chan->tech->write_video) - res = chan->tech->write_video(chan, fr); - else - res = 0; - break; - default: - if (chan->tech->write) { - if (chan->writetrans) - f = ast_translate(chan->writetrans, fr, 0); + case AST_FRAME_CONTROL: + /* XXX Interpret control frames XXX */ + ast_log(LOG_WARNING, "Don't know how to handle control frames yet\n"); + break; + case AST_FRAME_DTMF: + ast_clear_flag(chan, AST_FLAG_BLOCKING); + ast_mutex_unlock(&chan->lock); + res = do_senddigit(chan,fr->subclass); + ast_mutex_lock(&chan->lock); + CHECK_BLOCKING(chan); + break; + case AST_FRAME_TEXT: + if (chan->tech->send_text) + res = chan->tech->send_text(chan, (char *) fr->data); else - f = fr; - if (f) { - if (f->frametype == AST_FRAME_VOICE && chan->spiers) { - struct ast_channel_spy *spying; - for (spying = chan->spiers; spying; spying=spying->next) { - ast_queue_spy_frame(spying, f, 1); + res = 0; + break; + case AST_FRAME_HTML: + if (chan->tech->send_html) + res = chan->tech->send_html(chan, fr->subclass, (char *) fr->data, fr->datalen); + else + res = 0; + break; + case AST_FRAME_VIDEO: + /* XXX Handle translation of video codecs one day XXX */ + if (chan->tech->write_video) + res = chan->tech->write_video(chan, fr); + else + res = 0; + break; + default: + if (chan->tech->write) { + if (chan->writetrans) + f = ast_translate(chan->writetrans, fr, 0); + else + f = fr; + if (f) { + if (f->frametype == AST_FRAME_VOICE && chan->spiers) { + struct ast_channel_spy *spying; + for (spying = chan->spiers; spying; spying=spying->next) { + ast_queue_spy_frame(spying, f, 1); + } } - } - - if( chan->monitor && chan->monitor->write_stream && - f && ( f->frametype == AST_FRAME_VOICE ) ) { + + if( chan->monitor && chan->monitor->write_stream && + f && ( f->frametype == AST_FRAME_VOICE ) ) { #ifndef MONITOR_CONSTANT_DELAY - int jump = chan->insmpl - chan->outsmpl - 2 * f->samples; - if (jump >= 0) { - if (ast_seekstream(chan->monitor->write_stream, jump + f->samples, SEEK_FORCECUR) == -1) - ast_log(LOG_WARNING, "Failed to perform seek in monitoring write stream, synchronization between the files may be broken\n"); - chan->outsmpl += jump + 2 * f->samples; - } else - chan->outsmpl += f->samples; + int jump = chan->insmpl - chan->outsmpl - 2 * f->samples; + if (jump >= 0) { + if (ast_seekstream(chan->monitor->write_stream, jump + f->samples, SEEK_FORCECUR) == -1) + ast_log(LOG_WARNING, "Failed to perform seek in monitoring write stream, synchronization between the files may be broken\n"); + chan->outsmpl += jump + 2 * f->samples; + } else + chan->outsmpl += f->samples; #else - int jump = chan->insmpl - chan->outsmpl; - if (jump - MONITOR_DELAY >= 0) { - if (ast_seekstream(chan->monitor->write_stream, jump - f->samples, SEEK_FORCECUR) == -1) - ast_log(LOG_WARNING, "Failed to perform seek in monitoring write stream, synchronization between the files may be broken\n"); - chan->outsmpl += jump; - } else - chan->outsmpl += f->samples; + int jump = chan->insmpl - chan->outsmpl; + if (jump - MONITOR_DELAY >= 0) { + if (ast_seekstream(chan->monitor->write_stream, jump - f->samples, SEEK_FORCECUR) == -1) + ast_log(LOG_WARNING, "Failed to perform seek in monitoring write stream, synchronization between the files may be broken\n"); + chan->outsmpl += jump; + } else + chan->outsmpl += f->samples; #endif - if (ast_writestream(chan->monitor->write_stream, f) < 0) - ast_log(LOG_WARNING, "Failed to write data to channel monitor write stream\n"); - } - - res = chan->tech->write(chan, f); - } else - res = 0; - } + if (ast_writestream(chan->monitor->write_stream, f) < 0) + ast_log(LOG_WARNING, "Failed to write data to channel monitor write stream\n"); + } + + res = chan->tech->write(chan, f); + } else + res = 0; + } } /* It's possible this is a translated frame */ @@ -2110,12 +2110,12 @@ } else { ast_log(LOG_NOTICE, "Unable to request channel %s/%s\n", type, (char *)data); switch(cause) { - case AST_CAUSE_BUSY: - state = AST_CONTROL_BUSY; - break; - case AST_CAUSE_CONGESTION: - state = AST_CONTROL_CONGESTION; - break; + case AST_CAUSE_BUSY: + state = AST_CONTROL_BUSY; + break; + case AST_CAUSE_CONGESTION: + state = AST_CONTROL_CONGESTION; + break; } } if (chan) { @@ -2467,26 +2467,26 @@ } switch (vartype) { - case 1: - newvar = ast_var_assign(&varname[1], ast_var_value(current)); - if (newvar) { - AST_LIST_INSERT_TAIL(&child->varshead, newvar, entries); - if (option_debug) - ast_log(LOG_DEBUG, "Copying soft-transferable variable %s.\n", ast_var_name(newvar)); - } - break; - case 2: - newvar = ast_var_assign(ast_var_full_name(current), ast_var_value(current)); - if (newvar) { - AST_LIST_INSERT_TAIL(&child->varshead, newvar, entries); + case 1: + newvar = ast_var_assign(&varname[1], ast_var_value(current)); + if (newvar) { + AST_LIST_INSERT_TAIL(&child->varshead, newvar, entries); + if (option_debug) + ast_log(LOG_DEBUG, "Copying soft-transferable variable %s.\n", ast_var_name(newvar)); + } + break; + case 2: + newvar = ast_var_assign(ast_var_full_name(current), ast_var_value(current)); + if (newvar) { + AST_LIST_INSERT_TAIL(&child->varshead, newvar, entries); + if (option_debug) + ast_log(LOG_DEBUG, "Copying hard-transferable variable %s.\n", ast_var_name(newvar)); + } + break; + default: if (option_debug) - ast_log(LOG_DEBUG, "Copying hard-transferable variable %s.\n", ast_var_name(newvar)); - } - break; - default: - if (option_debug) - ast_log(LOG_DEBUG, "Not copying variable %s.\n", ast_var_name(current)); - break; + ast_log(LOG_DEBUG, "Not copying variable %s.\n", ast_var_name(current)); + break; } } } @@ -3176,15 +3176,15 @@ } switch (res) { - case AST_BRIDGE_RETRY: -/* continue; */ - break; - default: - ast_log(LOG_WARNING, "Private bridge between %s and %s failed\n", c0->name, c1->name); - /* fallthrough */ - case AST_BRIDGE_FAILED_NOWARN: - nativefailed++; - break; + case AST_BRIDGE_RETRY: +/* continue; */ + break; + default: + ast_log(LOG_WARNING, "Private bridge between %s and %s failed\n", c0->name, c1->name); + /* fallthrough */ + case AST_BRIDGE_FAILED_NOWARN: + nativefailed++; + break; } }