Merge Russell's formatting patch (bug #3838)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5234 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Mark Spencer
2005-03-23 05:56:32 +00:00
parent d5455abe17
commit 730194d609
8 changed files with 163 additions and 168 deletions

18
app.c
View File

@@ -58,9 +58,9 @@ int ast_app_dtget(struct ast_channel *chan, const char *context, char *collect,
timeout = 5; timeout = 5;
ts = ast_get_indication_tone(chan->zone,"dial"); ts = ast_get_indication_tone(chan->zone,"dial");
if (ts && ts->data[0]) { if (ts && ts->data[0])
res = ast_playtones_start(chan, 0, ts->data, 0); res = ast_playtones_start(chan, 0, ts->data, 0);
} else else
ast_log(LOG_NOTICE,"Huh....? no dial for indications?\n"); ast_log(LOG_NOTICE,"Huh....? no dial for indications?\n");
for (x = strlen(collect); strlen(collect) < maxlen; ) { for (x = strlen(collect); strlen(collect) < maxlen; ) {
@@ -105,8 +105,10 @@ int ast_app_getdata(struct ast_channel *c, char *prompt, char *s, int maxlen, in
fto = c->pbx ? c->pbx->rtimeout * 1000 : 6000; fto = c->pbx ? c->pbx->rtimeout * 1000 : 6000;
to = c->pbx ? c->pbx->dtimeout * 1000 : 2000; to = c->pbx ? c->pbx->dtimeout * 1000 : 2000;
if (timeout > 0) fto = to = timeout; if (timeout > 0)
if (timeout < 0) fto = to = 1000000000; fto = to = timeout;
if (timeout < 0)
fto = to = 1000000000;
res = ast_readstring(c, s, maxlen, to, fto, "#"); res = ast_readstring(c, s, maxlen, to, fto, "#");
return res; return res;
} }
@@ -122,8 +124,10 @@ int ast_app_getdata_full(struct ast_channel *c, char *prompt, char *s, int maxle
} }
fto = 6000; fto = 6000;
to = 2000; to = 2000;
if (timeout > 0) fto = to = timeout; if (timeout > 0)
if (timeout < 0) fto = to = 1000000000; fto = to = timeout;
if (timeout < 0)
fto = to = 1000000000;
res = ast_readstring_full(c, s, maxlen, to, fto, "#", audiofd, ctrlfd); res = ast_readstring_full(c, s, maxlen, to, fto, "#", audiofd, ctrlfd);
return res; return res;
} }

View File

@@ -44,7 +44,7 @@ static char *descrip =
" or 'noanswer' to read digits even if the line is not up.\n" " or 'noanswer' to read digits even if the line is not up.\n"
" attempts -- if greater than 1, that many attempts will be made in the \n" " attempts -- if greater than 1, that many attempts will be made in the \n"
" event no data is entered.\n" " event no data is entered.\n"
" timeout -- if greater than 0, that value will override the default timeoft.\n\n" " timeout -- if greater than 0, that value will override the default timeout.\n\n"
"Returns -1 on hangup or error and 0 otherwise.\n"; "Returns -1 on hangup or error and 0 otherwise.\n";
STANDARD_LOCAL_USER; STANDARD_LOCAL_USER;

View File

@@ -3,9 +3,9 @@
* *
* Channel Variables * Channel Variables
* *
* Copyright (C) 2002, Mark Spencer * Copyright (C) 2002-2005, Mark Spencer
* *
* Mark Spencer <markster@linux-support.net> * Mark Spencer <markster@digium.com>
* *
* This program is free software, distributed under the terms of * This program is free software, distributed under the terms of
* the GNU General Public License * the GNU General Public License

View File

@@ -212,14 +212,14 @@ struct iax2_context {
#define IAX_ALREADYGONE (1 << 9) /* Already disconnected */ #define IAX_ALREADYGONE (1 << 9) /* Already disconnected */
#define IAX_PROVISION (1 << 10) /* This is a provisioning request */ #define IAX_PROVISION (1 << 10) /* This is a provisioning request */
#define IAX_QUELCH (1 << 11) /* Whether or not we quelch audio */ #define IAX_QUELCH (1 << 11) /* Whether or not we quelch audio */
#define IAX_ENCRYPTED (1 << 12) /* Whether we should assume encrypted tx/rx */ #define IAX_ENCRYPTED (1 << 12) /* Whether we should assume encrypted tx/rx */
#define IAX_KEYPOPULATED (1 << 13) /* Whether we have a key populated */ #define IAX_KEYPOPULATED (1 << 13) /* Whether we have a key populated */
#define IAX_CODEC_USER_FIRST (1 << 14) /* are we willing to let the other guy choose the codec? */ #define IAX_CODEC_USER_FIRST (1 << 14) /* are we willing to let the other guy choose the codec? */
#define IAX_CODEC_NOPREFS (1 << 15) /* Force old behaviour by turning off prefs */ #define IAX_CODEC_NOPREFS (1 << 15) /* Force old behaviour by turning off prefs */
#define IAX_CODEC_NOCAP (1 << 16) /* only consider requested format and ignore capabilities*/ #define IAX_CODEC_NOCAP (1 << 16) /* only consider requested format and ignore capabilities*/
#define IAX_RTCACHEFRIENDS (1 << 17) /* let realtime stay till your reload */ #define IAX_RTCACHEFRIENDS (1 << 17) /* let realtime stay till your reload */
#define IAX_RTNOUPDATE (1 << 18) /* Don't send a realtime update */ #define IAX_RTNOUPDATE (1 << 18) /* Don't send a realtime update */
#define IAX_RTAUTOCLEAR (1 << 19) /* erase me on expire */ #define IAX_RTAUTOCLEAR (1 << 19) /* erase me on expire */
#define IAX_FORCEJITTERBUF (1 << 20) /* Force jitterbuffer, even when bridged to a channel that can take jitter */ #define IAX_FORCEJITTERBUF (1 << 20) /* Force jitterbuffer, even when bridged to a channel that can take jitter */
static int global_rtautoclear = 120; static int global_rtautoclear = 120;
@@ -261,7 +261,7 @@ struct iax2_peer {
struct ast_codec_pref prefs; struct ast_codec_pref prefs;
struct sockaddr_in addr; struct sockaddr_in addr;
int formats; int formats;
int sockfd; /* Socket to use for transmission */ int sockfd; /* Socket to use for transmission */
struct in_addr mask; struct in_addr mask;
unsigned int flags; unsigned int flags;

89
cli.c
View File

@@ -377,7 +377,7 @@ static int handle_modlist(int fd, int argc, char *argv[])
if (argc == 3) if (argc == 3)
return RESULT_SHOWUSAGE; return RESULT_SHOWUSAGE;
else if (argc >= 4) { else if (argc >= 4) {
if ( strcmp(argv[2],"like") ) if (strcmp(argv[2],"like"))
return RESULT_SHOWUSAGE; return RESULT_SHOWUSAGE;
like = argv[3]; like = argv[3];
} }
@@ -694,51 +694,52 @@ static int handle_showchan(int fd, int argc, char *argv[])
} else } else
strncpy(cdrtime, "N/A", sizeof(cdrtime) -1); strncpy(cdrtime, "N/A", sizeof(cdrtime) -1);
ast_cli(fd, ast_cli(fd,
" -- General --\n" " -- General --\n"
" Name: %s\n" " Name: %s\n"
" Type: %s\n" " Type: %s\n"
" UniqueID: %s\n" " UniqueID: %s\n"
" Caller ID: %s\n" " Caller ID: %s\n"
" Caller ID Name: %s\n" " Caller ID Name: %s\n"
" DNID Digits: %s\n" " DNID Digits: %s\n"
" State: %s (%d)\n" " State: %s (%d)\n"
" Rings: %d\n" " Rings: %d\n"
" NativeFormat: %d\n" " NativeFormat: %d\n"
" WriteFormat: %d\n" " WriteFormat: %d\n"
" ReadFormat: %d\n" " ReadFormat: %d\n"
"1st File Descriptor: %d\n" "1st File Descriptor: %d\n"
" Frames in: %d%s\n" " Frames in: %d%s\n"
" Frames out: %d%s\n" " Frames out: %d%s\n"
" Time to Hangup: %ld\n" " Time to Hangup: %ld\n"
" Elapsed Time: %s\n" " Elapsed Time: %s\n"
" Direct Bridge: %s\n" " Direct Bridge: %s\n"
"Indirect Bridge: %s\n" "Indirect Bridge: %s\n"
" -- PBX --\n" " -- PBX --\n"
" Context: %s\n" " Context: %s\n"
" Extension: %s\n" " Extension: %s\n"
" Priority: %d\n" " Priority: %d\n"
" Call Group: %d\n" " Call Group: %d\n"
" Pickup Group: %d\n" " Pickup Group: %d\n"
" Application: %s\n" " Application: %s\n"
" Data: %s\n" " Data: %s\n"
" Blocking in: %s\n", " Blocking in: %s\n",
c->name, c->type, c->uniqueid, c->name, c->type, c->uniqueid,
(c->cid.cid_num ? c->cid.cid_num : "(N/A)"), (c->cid.cid_num ? c->cid.cid_num : "(N/A)"),
(c->cid.cid_name ? c->cid.cid_name : "(N/A)"), (c->cid.cid_name ? c->cid.cid_name : "(N/A)"),
(c->cid.cid_dnid ? c->cid.cid_dnid : "(N/A)" ), ast_state2str(c->_state), c->_state, c->rings, c->nativeformats, c->writeformat, c->readformat, (c->cid.cid_dnid ? c->cid.cid_dnid : "(N/A)" ), ast_state2str(c->_state), c->_state, c->rings, c->nativeformats, c->writeformat, c->readformat,
c->fds[0], c->fin & 0x7fffffff, (c->fin & 0x80000000) ? " (DEBUGGED)" : "", c->fds[0], c->fin & 0x7fffffff, (c->fin & 0x80000000) ? " (DEBUGGED)" : "",
c->fout & 0x7fffffff, (c->fout & 0x80000000) ? " (DEBUGGED)" : "", (long)c->whentohangup, c->fout & 0x7fffffff, (c->fout & 0x80000000) ? " (DEBUGGED)" : "", (long)c->whentohangup,
cdrtime, c->_bridge ? c->_bridge->name : "<none>", ast_bridged_channel(c) ? ast_bridged_channel(c)->name : "<none>", cdrtime, c->_bridge ? c->_bridge->name : "<none>", ast_bridged_channel(c) ? ast_bridged_channel(c)->name : "<none>",
c->context, c->exten, c->priority, c->callgroup, c->pickupgroup, ( c->appl ? c->appl : "(N/A)" ), c->context, c->exten, c->priority, c->callgroup, c->pickupgroup, ( c->appl ? c->appl : "(N/A)" ),
( c-> data ? (!ast_strlen_zero(c->data) ? c->data : "(Empty)") : "(None)"), ( c-> data ? (!ast_strlen_zero(c->data) ? c->data : "(Empty)") : "(None)"),
(ast_test_flag(c, AST_FLAG_BLOCKING) ? c->blockproc : "(Not Blocking)")); (ast_test_flag(c, AST_FLAG_BLOCKING) ? c->blockproc : "(Not Blocking)"));
if(pbx_builtin_serialize_variables(c,buf,sizeof(buf)))
ast_cli(fd," Variables:\n%s\n",buf); if(pbx_builtin_serialize_variables(c,buf,sizeof(buf)))
if(c->cdr && ast_cdr_serialize_variables(c->cdr,buf, sizeof(buf), '=', '\n', 1)) ast_cli(fd," Variables:\n%s\n",buf);
ast_cli(fd," CDR Variables:\n%s\n",buf); if(c->cdr && ast_cdr_serialize_variables(c->cdr,buf, sizeof(buf), '=', '\n', 1))
ast_cli(fd," CDR Variables:\n%s\n",buf);
ast_mutex_unlock(&c->lock); ast_mutex_unlock(&c->lock);
break; break;
} }
ast_mutex_unlock(&c->lock); ast_mutex_unlock(&c->lock);
c = ast_channel_walk_locked(c); c = ast_channel_walk_locked(c);

View File

@@ -297,109 +297,103 @@ Variables marked with a * are builtin functions and can't be set,
only read in the dialplan. Writes to such variables are silently only read in the dialplan. Writes to such variables are silently
ignored. ignored.
${ACCOUNTCODE} * Account code (if specified) ${ACCOUNTCODE} * Account code (if specified)
${BLINDTRANSFER} The name of the channel on the other side a blind transfer ${BLINDTRANSFER} The name of the channel on the other side a blind transfer
${BRIDGEPEER} Bridged peer ${BRIDGEPEER} Bridged peer
${CALLERANI} * Caller ANI (PRI channels) ${CALLERANI} * Caller ANI (PRI channels)
${CALLERID} * Caller ID ${CALLERID} * Caller ID
${CALLERIDNAME} * Caller ID Name only ${CALLERIDNAME} * Caller ID Name only
${CALLERIDNUM} * Caller ID Number only ${CALLERIDNUM} * Caller ID Number only
${CALLINGANI2} * Caller ANI2 (PRI channels) ${CALLINGANI2} * Caller ANI2 (PRI channels)
${CALLINGPRES} * Caller ID presentation for incoming calls (PRI channels) ${CALLINGPRES} * Caller ID presentation for incoming calls (PRI channels)
${CALLINGTNS} * Transit Network Selector (PRI channels) ${CALLINGTNS} * Transit Network Selector (PRI channels)
${CALLINGTON} * Caller Type of Number (PRI channels) ${CALLINGTON} * Caller Type of Number (PRI channels)
${CHANNEL} * Current channel name ${CHANNEL} * Current channel name
${CONTEXT} * Current context ${CONTEXT} * Current context
${DATETIME} * Current date time in the format: YYYY-MM-DD_HH:MM:SS ${DATETIME} * Current date time in the format: YYYY-MM-DD_HH:MM:SS
${DNID} * Dialed Number Identifier ${DNID} * Dialed Number Identifier
${EPOCH} * Current unix style epoch ${EPOCH} * Current unix style epoch
${EXTEN} * Current extension ${EXTEN} * Current extension
${ENV(VAR)} * Environmental variable VAR ${ENV(VAR)} * Environmental variable VAR
${HANGUPCAUSE} * Asterisk cause of hangup (inbound/outbound) ${HANGUPCAUSE} * Asterisk cause of hangup (inbound/outbound)
${HINT} * Channel hints for this extension ${HINT} * Channel hints for this extension
${HINTNAME} * Suggested Caller*ID name for this extension ${HINTNAME} * Suggested Caller*ID name for this extension
${INVALID_EXTEN} The invalid called extension (used in the "i" extension) ${INVALID_EXTEN} The invalid called extension (used in the "i" extension)
${LANGUAGE} * Current language ${LANGUAGE} * Current language
${LEN(VAR)} * String length of VAR (integer) ${LEN(VAR)} * String length of VAR (integer)
${PRIORITY} * Current priority in the dialplan ${PRIORITY} * Current priority in the dialplan
${PRIREDIRECTREASON} Reason for redirect on PRI, if a call was directed ${PRIREDIRECTREASON} Reason for redirect on PRI, if a call was directed
${RDNIS} * Redirected Dial Number ID Service ${RDNIS} * Redirected Dial Number ID Service
${TIMESTAMP} * Current date time in the format: YYYYMMDD-HHMMSS ${TIMESTAMP} * Current date time in the format: YYYYMMDD-HHMMSS
${TRANSFER_CONTEXT} Context for transferred calls ${TRANSFER_CONTEXT} Context for transferred calls
${UNIQUEID} * Current call unique identifier ${UNIQUEID} * Current call unique identifier
Various application variables Various application variables
----------------------------- -----------------------------
${CURL} Resulting page content for curl() ${CURL} * Resulting page content for curl()
${ENUM} Result of application EnumLookup ${ENUM} * Result of application EnumLookup
${EXITCONTEXT} Context to exit to in IVR menu (app background()) ${EXITCONTEXT} Context to exit to in IVR menu (app background())
or in the RetryDial() application or in the RetryDial() application
${GROUPCOUNT} Result from groupcount() ${GROUPCOUNT} * Result from groupcount()
${MONITOR} Set to "TRUE" if the channel is/has been monitored (app monitor()) ${MONITOR} * Set to "TRUE" if the channel is/has been monitored (app monitor())
${MONITOR_EXEC} Application to execute after monitoring a call ${MONITOR_EXEC} Application to execute after monitoring a call
${MONITOR_EXEC_ARGS} Arguments to application ${MONITOR_EXEC_ARGS} Arguments to application
${MONITOR_FILENAME} File for monitoring (recording) calls in queue ${MONITOR_FILENAME} File for monitoring (recording) calls in queue
${QUEUE_PRIO} Queue priority ${QUEUE_PRIO} Queue priority
${RECORDED_FILE} Recorded file in record() ${RECORDED_FILE} * Recorded file in record()
${TALK_DETECED} Result from talkdetect() ${TALK_DETECED} * Result from talkdetect()
${TOUCH_MONITOR} The filename base to use with Touch Monitor (auto record) ${TOUCH_MONITOR} The filename base to use with Touch Monitor (auto record)
${TXTCIDNAME} Result of application TXTCIDName ${TXTCIDNAME} * Result of application TXTCIDName
${VPB_GETDTMF} chan_vpb ${VPB_GETDTMF} chan_vpb
The MeetMe Conference Bridge uses the following variables: The MeetMe Conference Bridge uses the following variables:
---------------------------------------------------------- ----------------------------------------------------------
${MEETME_RECORDINGFILE} Name of file for recording a conference with ${MEETME_RECORDINGFILE} Name of file for recording a conference with
the "r" option the "r" option
${MEETME_RECORDINGFORMAT} Format of file to be recorded ${MEETME_RECORDINGFORMAT} Format of file to be recorded
${MEETME_EXIT_CONTEXT} Context for exit out of meetme meeting ${MEETME_EXIT_CONTEXT} Context for exit out of meetme meeting
${MEETME_AGI_BACKGROUND} AGI script for Meetme (zap only) ${MEETME_AGI_BACKGROUND} AGI script for Meetme (zap only)
${MEETMESECS} * Number of seconds a user participated in a MeetMe conference
Meetme() sets the following variable:
${MEETMESECS} Number of seconds a user participated in a MeetMe conference
The voicemail() application uses the following variables: The voicemail() application uses the following variables:
--------------------------------------------------------- ---------------------------------------------------------
${VM_CATEGORY} Sets voicemail category ${VM_CATEGORY} Sets voicemail category
${VM_NAME} * Full name in voicemail
${VM_DUR} * Voicemail duration
${VM_MSGNUM} * Number of voicemail message in mailbox
${VM_CALLERID} * Voicemail Caller ID (Person leaving vm)
${VM_CIDNAME} * Voicemail Caller ID Name
${VM_CIDNUM} * Voicemail Caller ID Number
${VM_DATE} * Voicemail Date
The following variables are set by voicemail() The vmauthenticate() application uses the following variables:
${VM_NAME} Full name in voicemail
${VM_DUR} Voicemail duration
${VM_MSGNUM} Number of voicemail message in mailbox
${VM_CALLERID} Voicemail Caller ID (Person leaving vm)
${VM_CIDNAME} Voicemail Caller ID Name
${VM_CIDNUM} Voicemail Caller ID Number
${VM_DATE} Voicemail Date
The following variables are set by vmauthenticate()
${AUTH_MAILBOX} Authenticated mailbox
${AUTH_CONTEXT} Authenticated mailbox context
${DIFF_DAY} Day difference (internal use)
Dundi() uses the following variables
--------------------------------------------------------- ---------------------------------------------------------
${DUNDTECH} Technology ${AUTH_MAILBOX} * Authenticated mailbox
${DUNDDEST} Destination ${AUTH_CONTEXT} * Authenticated mailbox context
DUNDiLookup() uses the following variables
---------------------------------------------------------
${DUNDTECH} * The Technology of the result from a call to DUNDiLookup()
${DUNDDEST} * The Destination of the result from a call to DUNDiLookup()
The Zaptel channel sets the following variables: The Zaptel channel sets the following variables:
--------------------------------------------------------- ---------------------------------------------------------
${ANI2} The ANI2 Code provided by the network on the incoming call. ${ANI2} * The ANI2 Code provided by the network on the incoming call.
(ie, Code 29 identifies call as a Prison/Inmate Call) (ie, Code 29 identifies call as a Prison/Inmate Call)
${CALLTYPE} Type of call (Speech, Digital, etc) ${CALLTYPE} * Type of call (Speech, Digital, etc)
${CALLEDTON} Type of number for incoming PRI extension ${CALLEDTON} * Type of number for incoming PRI extension
i.e. 0=unknown, 1=international, 2=domestic, 3=net_specific, i.e. 0=unknown, 1=international, 2=domestic, 3=net_specific,
4=subscriber, 6=abbreviated, 7=reserved 4=subscriber, 6=abbreviated, 7=reserved
${CALLINGSUBADDR} Called PRI Subaddress ${CALLINGSUBADDR} * Called PRI Subaddress
${FAXEXTEN} The extension called before being redirected to "fax" ${FAXEXTEN} * The extension called before being redirected to "fax"
${PRIREDIRECTREASON} Reason for redirect, if a call was directed ${PRIREDIRECTREASON} * Reason for redirect, if a call was directed
The SIP channel sets the following variables: The SIP channel sets the following variables:
--------------------------------------------------------- ---------------------------------------------------------
${SIPCALLID} SIP Call-ID: header verbatim (for logging or CDR matching) ${SIPCALLID} * SIP Call-ID: header verbatim (for logging or CDR matching)
${SIPDOMAIN} SIP destination domain of an inbound call (if appropriate) ${SIPDOMAIN} * SIP destination domain of an inbound call (if appropriate)
${SIPUSERAGENT} SIP user agent ${SIPUSERAGENT} * SIP user agent
${SIPURI} SIP uri ${SIPURI} * SIP uri
The SIP channel reads the following variable:
${SIP_CODEC} Set the SIP codec for a call ${SIP_CODEC} Set the SIP codec for a call
The Agent channel uses the following variables: The Agent channel uses the following variables:
@@ -410,41 +404,37 @@ ${AGENTGOODBYE} Sound file to use for "Good Bye" when agent logs out
${AGENTACKCALL} Whether the agent should acknowledge the incoming call ${AGENTACKCALL} Whether the agent should acknowledge the incoming call
${AGENTAUTOLOGOFF} Auto logging off for an agent ${AGENTAUTOLOGOFF} Auto logging off for an agent
${AGENTWRAPUPTIME} Setting the time for wrapup between incoming calls ${AGENTWRAPUPTIME} Setting the time for wrapup between incoming calls
${AGENTNUMBER} Agent number (username) set at login ${AGENTNUMBER} * Agent number (username) set at login
${AGENTSTATUS} Status of login ( fail | on | off ) ${AGENTSTATUS} * Status of login ( fail | on | off )
${AGENTEXTEN} Extension for logged in agent ${AGENTEXTEN} * Extension for logged in agent
The Dial() application sets the following variables: The Dial() application uses the following variables:
--------------------------------------------------------- ---------------------------------------------------------
${DIALEDPEERNAME} Dialed peer name ${DIALEDPEERNAME} * Dialed peer name
${DIALEDPEERNUMBER} Dialed peer number ${DIALEDPEERNUMBER} * Dialed peer number
${DIALEDTIME} Time for the call (seconds) ${DIALEDTIME} * Time for the call (seconds)
${ANSWEREDTIME} Time from dial to answer (seconds) ${ANSWEREDTIME} * Time from dial to answer (seconds)
${DIALSTATUS} Status of the call, one of: ${DIALSTATUS} * Status of the call, one of:
CHANUNAVAIL | CONGESTION | BUSY | NOANSWER | ANSWER | CANCEL (CHANUNAVAIL | CONGESTION | BUSY | NOANSWER | ANSWER | CANCEL)
The dial() application reads the following variables
${LIMIT_PLAYAUDIO_CALLER} Soundfile for call limits ${LIMIT_PLAYAUDIO_CALLER} Soundfile for call limits
${LIMIT_PLAYAUDIO_CALLEE} Soundfile for call limits ${LIMIT_PLAYAUDIO_CALLEE} Soundfile for call limits
${LIMIT_WARNING_FILE} Soundfile for call limits ${LIMIT_WARNING_FILE} Soundfile for call limits
${LIMIT_TIMEOUT_FILE} Soundfile for call limits ${LIMIT_TIMEOUT_FILE} Soundfile for call limits
${LIMIT_CONNECT_FILE} Soundfile for call limits ${LIMIT_CONNECT_FILE} Soundfile for call limits
${OUTBOUND_GROUP} Default groups for peer channels (as in SetGroup) ${OUTBOUND_GROUP} Default groups for peer channels (as in SetGroup)
* See "show application dial" for more information * See "show application dial" for more information
The chanisavail() application sets the following variables: The chanisavail() application sets the following variables:
----------------------------------------------------------- -----------------------------------------------------------
${AVAILCHAN} return value ${AVAILCHAN} * the name of the available channel if one was found
${AVAILORIGCHAN} return value ${AVAILORIGCHAN} * the canonical channel name that was used to create the channel
${AVAILSTATUS} Status of requested channel ${AVAILSTATUS} * Status of requested channel
When using macros in the dialplan, these variables are available When using macros in the dialplan, these variables are available
--------------------------------------------------------- ---------------------------------------------------------
${MACRO_EXTEN} The calling extensions ${MACRO_EXTEN} * The calling extensions
${MACRO_CONTEXT} The calling context ${MACRO_CONTEXT} * The calling context
${MACRO_PRIORITY} The calling priority ${MACRO_PRIORITY} * The calling priority
${MACRO_OFFSET} Offset to add to priority at return from macro ${MACRO_OFFSET} Offset to add to priority at return from macro
If you compile with OSP support in the SIP channel, these If you compile with OSP support in the SIP channel, these

View File

@@ -1343,7 +1343,7 @@ static void *accept_thread(void *ignore)
continue; continue;
} }
p = getprotobyname("tcp"); p = getprotobyname("tcp");
if( p ) { if (p) {
if( setsockopt(as, p->p_proto, TCP_NODELAY, (char *)&arg, sizeof(arg) ) < 0 ) { if( setsockopt(as, p->p_proto, TCP_NODELAY, (char *)&arg, sizeof(arg) ) < 0 ) {
ast_log(LOG_WARNING, "Failed to set manager tcp connection to TCP_NODELAY mode: %s\n", strerror(errno)); ast_log(LOG_WARNING, "Failed to set manager tcp connection to TCP_NODELAY mode: %s\n", strerror(errno));
} }

View File

@@ -92,7 +92,7 @@ int odbc_smart_execute(odbc_obj *obj, SQLHSTMT stmt)
obj->up = 0; obj->up = 0;
ast_mutex_unlock(&obj->lock); ast_mutex_unlock(&obj->lock);
odbc_obj_disconnect(obj); odbc_obj_disconnect(obj);
odbc_obj_connect(obj); odbc_obj_connect(obj);
res = SQLExecute(stmt); res = SQLExecute(stmt);
} }
@@ -111,7 +111,7 @@ int odbc_smart_direct_execute(odbc_obj *obj, SQLHSTMT stmt, char *sql)
obj->up = 0; obj->up = 0;
ast_mutex_unlock(&obj->lock); ast_mutex_unlock(&obj->lock);
odbc_obj_disconnect(obj); odbc_obj_disconnect(obj);
odbc_obj_connect(obj); odbc_obj_connect(obj);
res = SQLExecDirect (stmt, sql, SQL_NTS); res = SQLExecDirect (stmt, sql, SQL_NTS);
} }