[asterisk-commits] oej: branch oej/cancel_answer_elsewhere r68447 -
in /team/oej/cancel_answer_e...
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Fri Jun 8 00:48:04 MST 2007
Author: oej
Date: Fri Jun 8 02:48:03 2007
New Revision: 68447
URL: http://svn.digium.com/view/asterisk?view=rev&rev=68447
Log:
Reset automerge
Modified:
team/oej/cancel_answer_elsewhere/ (props changed)
team/oej/cancel_answer_elsewhere/CREDITS
team/oej/cancel_answer_elsewhere/apps/app_queue.c
team/oej/cancel_answer_elsewhere/apps/app_skel.c
team/oej/cancel_answer_elsewhere/apps/app_voicemail.c
team/oej/cancel_answer_elsewhere/channels/chan_agent.c
team/oej/cancel_answer_elsewhere/channels/chan_features.c
team/oej/cancel_answer_elsewhere/channels/chan_h323.c
team/oej/cancel_answer_elsewhere/channels/chan_iax2.c
team/oej/cancel_answer_elsewhere/channels/chan_sip.c
team/oej/cancel_answer_elsewhere/channels/chan_skinny.c
team/oej/cancel_answer_elsewhere/channels/chan_zap.c
team/oej/cancel_answer_elsewhere/contrib/asterisk-ng-doxygen
team/oej/cancel_answer_elsewhere/funcs/func_shell.c
team/oej/cancel_answer_elsewhere/include/asterisk/devicestate.h
team/oej/cancel_answer_elsewhere/include/asterisk/doxyref.h
team/oej/cancel_answer_elsewhere/include/asterisk/event.h
team/oej/cancel_answer_elsewhere/include/asterisk/http.h
team/oej/cancel_answer_elsewhere/include/asterisk/manager.h
team/oej/cancel_answer_elsewhere/include/asterisk/stringfields.h
team/oej/cancel_answer_elsewhere/include/asterisk/strings.h
team/oej/cancel_answer_elsewhere/main/devicestate.c
team/oej/cancel_answer_elsewhere/main/dnsmgr.c
team/oej/cancel_answer_elsewhere/main/manager.c
team/oej/cancel_answer_elsewhere/main/rtp.c
team/oej/cancel_answer_elsewhere/main/say.c
team/oej/cancel_answer_elsewhere/main/strcompat.c
team/oej/cancel_answer_elsewhere/res/res_config_sqlite.c
team/oej/cancel_answer_elsewhere/res/res_jabber.c
Propchange: team/oej/cancel_answer_elsewhere/
------------------------------------------------------------------------------
automerge = http://www.codename-pineapple.org/
Propchange: team/oej/cancel_answer_elsewhere/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Propchange: team/oej/cancel_answer_elsewhere/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Fri Jun 8 02:48:03 2007
@@ -1,1 +1,1 @@
-/trunk:1-68175
+/trunk:1-68446
Modified: team/oej/cancel_answer_elsewhere/CREDITS
URL: http://svn.digium.com/view/asterisk/team/oej/cancel_answer_elsewhere/CREDITS?view=diff&rev=68447&r1=68446&r2=68447
==============================================================================
--- team/oej/cancel_answer_elsewhere/CREDITS (original)
+++ team/oej/cancel_answer_elsewhere/CREDITS Fri Jun 8 02:48:03 2007
@@ -157,6 +157,8 @@
Voop AS - Financial support for a lot of work with the SIP driver and the IAX trunk MTU patch
+Philippe Sultan, INRIA - many fixes to res_jabber and gtalk/jingle channel drivers
+
=== OTHER CONTRIBUTIONS ===
John Todd - Monkey sounds and associated teletorture prompt
Michael Jerris - bug marshaling
Modified: team/oej/cancel_answer_elsewhere/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/team/oej/cancel_answer_elsewhere/apps/app_queue.c?view=diff&rev=68447&r1=68446&r2=68447
==============================================================================
--- team/oej/cancel_answer_elsewhere/apps/app_queue.c (original)
+++ team/oej/cancel_answer_elsewhere/apps/app_queue.c Fri Jun 8 02:48:03 2007
@@ -239,7 +239,7 @@
"Example: QueueLog(101|${UNIQUEID}|${AGENT}|WENTONBREAK|600)\n";
/*! \brief Persistent Members astdb family */
-static const char *pm_family = "/Queue/PersistentMembers";
+static const char *pm_family = "Queue/PersistentMembers";
/* The maximum length of each persistent member queue database entry */
#define PM_MAX_LEN 8192
@@ -3111,10 +3111,14 @@
break;
ast_mutex_unlock(&cur_queue->lock);
}
+
+ if (!cur_queue)
+ cur_queue = load_realtime_queue(queue_name);
if (!cur_queue) {
/* If the queue no longer exists, remove it from the
* database */
+ ast_log(LOG_WARNING, "Error loading persistent queue: '%s': it does not exist\n", queue_name);
ast_db_del(pm_family, queue_name);
continue;
} else
Modified: team/oej/cancel_answer_elsewhere/apps/app_skel.c
URL: http://svn.digium.com/view/asterisk/team/oej/cancel_answer_elsewhere/apps/app_skel.c?view=diff&rev=68447&r1=68446&r2=68447
==============================================================================
--- team/oej/cancel_answer_elsewhere/apps/app_skel.c (original)
+++ team/oej/cancel_answer_elsewhere/apps/app_skel.c Fri Jun 8 02:48:03 2007
@@ -20,7 +20,7 @@
*
* \brief Skeleton application
*
- * \author\verbatim <Your Name Here> <<Your Email Here>> \endvebatim
+ * \author\verbatim <Your Name Here> <<Your Email Here>> \endverbatim
*
* This is a skeleton for development of an Asterisk application
* \ingroup applications
Modified: team/oej/cancel_answer_elsewhere/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/team/oej/cancel_answer_elsewhere/apps/app_voicemail.c?view=diff&rev=68447&r1=68446&r2=68447
==============================================================================
--- team/oej/cancel_answer_elsewhere/apps/app_voicemail.c (original)
+++ team/oej/cancel_answer_elsewhere/apps/app_voicemail.c Fri Jun 8 02:48:03 2007
@@ -5096,7 +5096,7 @@
{
int cmd;
- if (!strcasecmp(chan->language, "it") || !strcasecmp(chan->language, "es") || !strcasecmp(chan->language, "fr") || !strcasecmp(chan->language, "pt") || !strcasecmp(chan->language, "pt_BR")) { /* Italian, Spanish, French or Portuguese syntax */
+ if (!strcasecmp(chan->language, "it") || !strcasecmp(chan->language, "es") || !strcasecmp(chan->language, "pt") || !strcasecmp(chan->language, "pt_BR")) { /* Italian, Spanish, French or Portuguese syntax */
cmd = ast_play_and_wait(chan, "vm-messages"); /* "messages */
return cmd ? cmd : ast_play_and_wait(chan, mbox);
} else if (!strcasecmp(chan->language, "gr")){
@@ -5569,14 +5569,14 @@
}
if (!res && vms->oldmessages) {
res = say_and_wait(chan, vms->oldmessages, chan->language);
+ if (!res)
+ res = ast_play_and_wait(chan, "vm-Old");
if (!res) {
if (vms->oldmessages == 1)
res = ast_play_and_wait(chan, "vm-message");
else
res = ast_play_and_wait(chan, "vm-messages");
}
- if (!res)
- res = ast_play_and_wait(chan, "vm-Old");
}
if (!res) {
if (!vms->oldmessages && !vms->newmessages) {
@@ -8545,6 +8545,7 @@
int recorded = 0;
int message_exists = 0;
signed char zero_gain = 0;
+ char tempfile[PATH_MAX];
char *acceptdtmf = "#";
char *canceldtmf = "";
@@ -8555,6 +8556,11 @@
ast_log(LOG_WARNING, "Error play_record_review called without duration pointer\n");
return -1;
}
+
+ if (!outsidecaller)
+ snprintf(tempfile, sizeof(tempfile), "%s.tmp", recordfile);
+ else
+ ast_copy_string(tempfile, recordfile, sizeof(tempfile));
cmd = '3'; /* Want to start by recording */
@@ -8569,9 +8575,13 @@
/* Otherwise 1 is to save the existing message */
if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 "Saving message as is\n");
+ if (!outsidecaller)
+ ast_filerename(tempfile, recordfile, NULL);
ast_stream_and_wait(chan, "vm-msgsaved", "");
- STORE(recordfile, vmu->mailbox, vmu->context, -1, chan, vmu, fmt, *duration, vms);
- DISPOSE(recordfile, -1);
+ if (!outsidecaller) {
+ STORE(recordfile, vmu->mailbox, vmu->context, -1, chan, vmu, fmt, *duration, vms);
+ DISPOSE(recordfile, -1);
+ }
cmd = 't';
return res;
}
@@ -8579,7 +8589,7 @@
/* Review */
if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 "Reviewing the message\n");
- cmd = ast_stream_and_wait(chan, recordfile, AST_DIGIT_ANY);
+ cmd = ast_stream_and_wait(chan, tempfile, AST_DIGIT_ANY);
break;
case '3':
message_exists = 0;
@@ -8601,11 +8611,15 @@
ast_channel_setoption(chan, AST_OPTION_RXGAIN, &record_gain, sizeof(record_gain), 0);
if (ast_test_flag(vmu, VM_OPERATOR))
canceldtmf = "0";
- cmd = ast_play_and_record_full(chan, playfile, recordfile, maxtime, fmt, duration, silencethreshold, maxsilence, unlockdir, acceptdtmf, canceldtmf);
+ cmd = ast_play_and_record_full(chan, playfile, tempfile, maxtime, fmt, duration, silencethreshold, maxsilence, unlockdir, acceptdtmf, canceldtmf);
if (record_gain)
ast_channel_setoption(chan, AST_OPTION_RXGAIN, &zero_gain, sizeof(zero_gain), 0);
if (cmd == -1) {
- /* User has hung up, no options to give */
+ /* User has hung up, no options to give */
+ if (!outsidecaller) {
+ /* user was recording a greeting and they hung up, so let's delete the recording. */
+ vm_delete(tempfile);
+ }
return cmd;
}
if (cmd == '0') {
@@ -8619,14 +8633,14 @@
if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 "Message too short\n");
cmd = ast_play_and_wait(chan, "vm-tooshort");
- cmd = vm_delete(recordfile);
+ cmd = vm_delete(tempfile);
break;
}
else if (vmu->review && (cmd == 2 && *duration < (maxsilence + 3))) {
/* Message is all silence */
if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 "Nothing recorded\n");
- cmd = vm_delete(recordfile);
+ cmd = vm_delete(tempfile);
cmd = ast_play_and_wait(chan, "vm-nothingrecorded");
if (!cmd)
cmd = ast_play_and_wait(chan, "vm-speakup");
@@ -8655,7 +8669,7 @@
case '*':
/* Cancel recording, delete message, offer to take another message*/
cmd = ast_play_and_wait(chan, "vm-deleted");
- cmd = vm_delete(recordfile);
+ cmd = vm_delete(tempfile);
if (outsidecaller) {
res = vm_exec(chan, NULL);
return res;
Modified: team/oej/cancel_answer_elsewhere/channels/chan_agent.c
URL: http://svn.digium.com/view/asterisk/team/oej/cancel_answer_elsewhere/channels/chan_agent.c?view=diff&rev=68447&r1=68446&r2=68447
==============================================================================
--- team/oej/cancel_answer_elsewhere/channels/chan_agent.c (original)
+++ team/oej/cancel_answer_elsewhere/channels/chan_agent.c Fri Jun 8 02:48:03 2007
@@ -134,7 +134,7 @@
#define AST_MAX_BUF 256
#define AST_MAX_FILENAME_LEN 256
-static const char pa_family[] = "/Agents"; /*!< Persistent Agents astdb family */
+static const char pa_family[] = "Agents"; /*!< Persistent Agents astdb family */
#define PA_MAX_LEN 2048 /*!< The maximum length of each persistent member agent database entry */
static int persistent_agents = 0; /*!< queues.conf [general] option */
Modified: team/oej/cancel_answer_elsewhere/channels/chan_features.c
URL: http://svn.digium.com/view/asterisk/team/oej/cancel_answer_elsewhere/channels/chan_features.c?view=diff&rev=68447&r1=68446&r2=68447
==============================================================================
--- team/oej/cancel_answer_elsewhere/channels/chan_features.c (original)
+++ team/oej/cancel_answer_elsewhere/channels/chan_features.c Fri Jun 8 02:48:03 2007
@@ -26,6 +26,9 @@
*
* \ingroup channel_drivers
*/
+/*** MODULEINFO
+ <defaultenabled>no</defaultenabled>
+ ***/
#include "asterisk.h"
Modified: team/oej/cancel_answer_elsewhere/channels/chan_h323.c
URL: http://svn.digium.com/view/asterisk/team/oej/cancel_answer_elsewhere/channels/chan_h323.c?view=diff&rev=68447&r1=68446&r2=68447
==============================================================================
--- team/oej/cancel_answer_elsewhere/channels/chan_h323.c (original)
+++ team/oej/cancel_answer_elsewhere/channels/chan_h323.c Fri Jun 8 02:48:03 2007
@@ -1937,9 +1937,10 @@
return info;
}
-/*! \brief
+/*
* Definition taken from rtp.c for rtpPayloadType because we need it here.
*/
+
struct rtpPayloadType {
int isAstFormat; /* whether the following code is an AST_FORMAT */
int code;
Modified: team/oej/cancel_answer_elsewhere/channels/chan_iax2.c
URL: http://svn.digium.com/view/asterisk/team/oej/cancel_answer_elsewhere/channels/chan_iax2.c?view=diff&rev=68447&r1=68446&r2=68447
==============================================================================
--- team/oej/cancel_answer_elsewhere/channels/chan_iax2.c (original)
+++ team/oej/cancel_answer_elsewhere/channels/chan_iax2.c Fri Jun 8 02:48:03 2007
@@ -726,12 +726,16 @@
time_t checktime;
ast_mutex_t lock;
ast_cond_t cond;
- /*! If this thread is processing a full frame, the callno for that frame
- * will be here, so we can avoid dispatching any more full frames
- * or that callno to other threads */
- unsigned short ffcallno;
- /*! Remember the peer IP/port number for a full frame in process */
- struct sockaddr_in ffsin;
+ /*! if this thread is processing a full frame,
+ some information about that frame will be stored
+ here, so we can avoid dispatching any more full
+ frames for that callno to other threads */
+ struct {
+ unsigned short callno;
+ struct sockaddr_in sin;
+ unsigned char type;
+ unsigned char csub;
+ } ffinfo;
};
/* Thread lists */
@@ -974,10 +978,8 @@
/* this thread is not processing a full frame (since it is idle),
so ensure that the field for the full frame call number is empty */
- if (thread) {
- thread->ffcallno = 0;
- memset(&thread->ffsin, 0, sizeof(thread->ffsin));
- }
+ if (thread)
+ memset(&thread->ffinfo, 0, sizeof(thread->ffinfo));
return thread;
}
@@ -6562,22 +6564,24 @@
AST_LIST_LOCK(&active_list);
AST_LIST_TRAVERSE(&active_list, cur, list) {
- if ((cur->ffcallno == ntohs(fh->scallno)) &&
- !memcmp(&cur->ffsin, &thread->iosin, sizeof(cur->ffsin)))
+ if ((cur->ffinfo.callno == ntohs(fh->scallno)) &&
+ !inaddrcmp(&cur->ffinfo.sin, &thread->iosin))
break;
}
AST_LIST_UNLOCK(&active_list);
if (cur) {
/* we found another thread processing a full frame for this call,
so we can't accept this frame */
- ast_log(LOG_WARNING, "Dropping full frame from %s (callno %d) received too rapidly\n",
- ast_inet_ntoa(thread->iosin.sin_addr), cur->ffcallno);
+ ast_log(LOG_WARNING, "Dropping frame from %s (callno %d) of type %d (subclass %d) due to frame of type %d (subclass %d) already in process\n",
+ ast_inet_ntoa(thread->iosin.sin_addr), cur->ffinfo.callno,
+ fh->type, uncompress_subclass(fh->csub),
+ cur->ffinfo.type, uncompress_subclass(cur->ffinfo.csub));
insert_idle_thread(thread);
return 1;
} else {
/* this thread is going to process this frame, so mark it */
- thread->ffcallno = ntohs(fh->scallno);
- memcpy(&thread->ffsin, &thread->iosin, sizeof(thread->ffsin));
+ thread->ffinfo.callno = ntohs(fh->scallno);
+ memcpy(&thread->ffinfo.sin, &thread->iosin, sizeof(thread->ffinfo.sin));
}
}
Modified: team/oej/cancel_answer_elsewhere/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/oej/cancel_answer_elsewhere/channels/chan_sip.c?view=diff&rev=68447&r1=68446&r2=68447
==============================================================================
--- team/oej/cancel_answer_elsewhere/channels/chan_sip.c (original)
+++ team/oej/cancel_answer_elsewhere/channels/chan_sip.c Fri Jun 8 02:48:03 2007
@@ -731,60 +731,60 @@
struct sip_auth *next; /*!< Next auth structure in list */
};
-/* New set of flags for DIALOG ONLY, not for peers/users etc
- \todo - move dialog only flags here to release bits for peer/user to dialog copying
- This goes into flags[2] in the dialog - page 3
+/*--- Various flags for the flags field in the pvt structure
+ Trying to sort these up:
+ D: Dialog only
+ DP: Dialog and peer/user
+ P: Peer/user only, not dialog
+ G: Global flag only
*/
-
-#define SIP_DIALOG_ANSWEREDELSEWHERE (1 << 0)
-
-/*--- Various flags for the flags field in the pvt structure */
-#define SIP_ALREADYGONE (1 << 0) /*!< Whether or not we've already been destroyed by our peer */
-#define SIP_NEEDDESTROY (1 << 1) /*!< if we need to be destroyed by the monitor thread */
-#define SIP_NOVIDEO (1 << 2) /*!< Didn't get video in invite, don't offer */
-#define SIP_RINGING (1 << 3) /*!< Have sent 180 ringing */
-#define SIP_PROGRESS_SENT (1 << 4) /*!< Have sent 183 message progress */
-#define SIP_NEEDREINVITE (1 << 5) /*!< Do we need to send another reinvite? */
-#define SIP_PENDINGBYE (1 << 6) /*!< Need to send bye after we ack? */
-#define SIP_GOTREFER (1 << 7) /*!< Got a refer? */
-#define SIP_PROMISCREDIR (1 << 8) /*!< Promiscuous redirection */
-#define SIP_TRUSTRPID (1 << 9) /*!< Trust RPID headers? */
-#define SIP_USEREQPHONE (1 << 10) /*!< Add user=phone to numeric URI. Default off */
-#define SIP_REALTIME (1 << 11) /*!< Flag for realtime users */
-#define SIP_USECLIENTCODE (1 << 12) /*!< Trust X-ClientCode info message */
-#define SIP_OUTGOING (1 << 13) /*!< Direction of the last transaction in this dialog */
-#define SIP_FREE_BIT (1 << 14) /*!< ---- */
-#define SIP_DEFER_BYE_ON_TRANSFER (1 << 15) /*!< Do not hangup at first ast_hangup */
-#define SIP_DTMF (3 << 16) /*!< DTMF Support: four settings, uses two bits */
-#define SIP_DTMF_RFC2833 (0 << 16) /*!< DTMF Support: RTP DTMF - "rfc2833" */
-#define SIP_DTMF_INBAND (1 << 16) /*!< DTMF Support: Inband audio, only for ULAW/ALAW - "inband" */
-#define SIP_DTMF_INFO (2 << 16) /*!< DTMF Support: SIP Info messages - "info" */
-#define SIP_DTMF_AUTO (3 << 16) /*!< DTMF Support: AUTO switch between rfc2833 and in-band DTMF */
+#define SIP_ALREADYGONE (1 << 0) /*!< D: Whether or not we've already been destroyed by our peer */
+#define SIP_NEEDDESTROY (1 << 1) /*!< D: if we need to be destroyed by the monitor thread */
+#define SIP_NOVIDEO (1 << 2) /*!< D: Didn't get video in invite, don't offer */
+#define SIP_RINGING (1 << 3) /*!< D: Have sent 180 ringing */
+#define SIP_PROGRESS_SENT (1 << 4) /*!< D: Have sent 183 message progress */
+#define SIP_NEEDREINVITE (1 << 5) /*!< D: Do we need to send another reinvite? */
+#define SIP_PENDINGBYE (1 << 6) /*!< D: Need to send bye after we ack? */
+#define SIP_GOTREFER (1 << 7) /*!< D: Got a refer? */
+#define SIP_PROMISCREDIR (1 << 8) /*!< DP: Promiscuous redirection */
+#define SIP_TRUSTRPID (1 << 9) /*!< DP: Trust RPID headers? */
+#define SIP_USEREQPHONE (1 << 10) /*!< DP: Add user=phone to numeric URI. Default off */
+#define SIP_REALTIME (1 << 11) /*!< P: Flag for realtime users */
+#define SIP_USECLIENTCODE (1 << 12) /*!< DP: Trust X-ClientCode info message */
+#define SIP_OUTGOING (1 << 13) /*!< D: Direction of the last transaction in this dialog */
+#define SIP_DIALOG_ANSWEREDELSEWHERE (1 << 14) /*!< D: This call is cancelled due to answer on another channel */
+#define SIP_DEFER_BYE_ON_TRANSFER (1 << 15) /*!< D: Do not hangup at first ast_hangup */
+#define SIP_DTMF (3 << 16) /*!< DP: DTMF Support: four settings, uses two bits */
+#define SIP_DTMF_RFC2833 (0 << 16) /*!< DP: DTMF Support: RTP DTMF - "rfc2833" */
+#define SIP_DTMF_INBAND (1 << 16) /*!< DP: DTMF Support: Inband audio, only for ULAW/ALAW - "inband" */
+#define SIP_DTMF_INFO (2 << 16) /*!< DP: DTMF Support: SIP Info messages - "info" */
+#define SIP_DTMF_AUTO (3 << 16) /*!< DP: DTMF Support: AUTO switch between rfc2833 and in-band DTMF */
/* NAT settings */
-#define SIP_NAT (3 << 18) /*!< four settings, uses two bits */
-#define SIP_NAT_NEVER (0 << 18) /*!< No nat support */
-#define SIP_NAT_RFC3581 (1 << 18) /*!< NAT RFC3581 */
-#define SIP_NAT_ROUTE (2 << 18) /*!< NAT Only ROUTE */
-#define SIP_NAT_ALWAYS (3 << 18) /*!< NAT Both ROUTE and RFC3581 */
+#define SIP_NAT (3 << 18) /*!< DP: four settings, uses two bits */
+#define SIP_NAT_NEVER (0 << 18) /*!< DP: No nat support */
+#define SIP_NAT_RFC3581 (1 << 18) /*!< DP: NAT RFC3581 */
+#define SIP_NAT_ROUTE (2 << 18) /*!< DP: NAT Only ROUTE */
+#define SIP_NAT_ALWAYS (3 << 18) /*!< DP: NAT Both ROUTE and RFC3581 */
/* re-INVITE related settings */
-#define SIP_REINVITE (7 << 20) /*!< three bits used */
-#define SIP_CAN_REINVITE (1 << 20) /*!< allow peers to be reinvited to send media directly p2p */
-#define SIP_CAN_REINVITE_NAT (2 << 20) /*!< allow media reinvite when new peer is behind NAT */
-#define SIP_REINVITE_UPDATE (4 << 20) /*!< use UPDATE (RFC3311) when reinviting this peer */
+#define SIP_REINVITE (7 << 20) /*!< DP: three bits used */
+#define SIP_CAN_REINVITE (1 << 20) /*!< DP: allow peers to be reinvited to send media directly p2p */
+#define SIP_CAN_REINVITE_NAT (2 << 20) /*!< DP: allow media reinvite when new peer is behind NAT */
+#define SIP_REINVITE_UPDATE (4 << 20) /*!< DP: use UPDATE (RFC3311) when reinviting this peer */
/* "insecure" settings */
-#define SIP_INSECURE_PORT (1 << 23) /*!< don't require matching port for incoming requests */
-#define SIP_INSECURE_INVITE (1 << 24) /*!< don't require authentication for incoming INVITEs */
+#define SIP_INSECURE_PORT (1 << 23) /*!< DP: don't require matching port for incoming requests */
+#define SIP_INSECURE_INVITE (1 << 24) /*!< DP: don't require authentication for incoming INVITEs */
/* Sending PROGRESS in-band settings */
-#define SIP_PROG_INBAND (3 << 25) /*!< three settings, uses two bits */
+#define SIP_PROG_INBAND (3 << 25) /*!< DP: three settings, uses two bits */
#define SIP_PROG_INBAND_NEVER (0 << 25)
#define SIP_PROG_INBAND_NO (1 << 25)
#define SIP_PROG_INBAND_YES (2 << 25)
-#define SIP_NO_HISTORY (1 << 27) /*!< Suppress recording request/response history */
-#define SIP_CALL_LIMIT (1 << 28) /*!< Call limit enforced for this call */
-#define SIP_SENDRPID (1 << 29) /*!< Remote Party-ID Support */
-#define SIP_INC_COUNT (1 << 30) /*!< Did this connection increment the counter of in-use calls? */
-#define SIP_G726_NONSTANDARD (1 << 31) /*!< Use non-standard packing for G726-32 data */
-
+#define SIP_NO_HISTORY (1 << 27) /*!< D: Suppress recording request/response history */
+#define SIP_CALL_LIMIT (1 << 28) /*!< D: Call limit enforced for this call */
+#define SIP_SENDRPID (1 << 29) /*!< DP: Remote Party-ID Support */
+#define SIP_INC_COUNT (1 << 30) /*!< D: Did this dialog increment the counter of in-use calls? */
+#define SIP_G726_NONSTANDARD (1 << 31) /*!< DP: Use non-standard packing for G726-32 data */
+
+/*! \brief Flags to copy from peer/user to dialog */
#define SIP_FLAGS_TO_COPY \
(SIP_PROMISCREDIR | SIP_TRUSTRPID | SIP_SENDRPID | SIP_DTMF | SIP_REINVITE | \
SIP_PROG_INBAND | SIP_USECLIENTCODE | SIP_NAT | SIP_G726_NONSTANDARD | \
@@ -792,37 +792,37 @@
/*--- a new page of flags (for flags[1] */
/* realtime flags */
-#define SIP_PAGE2_RTCACHEFRIENDS (1 << 0)
-#define SIP_PAGE2_RTUPDATE (1 << 1)
-#define SIP_PAGE2_RTAUTOCLEAR (1 << 2)
-#define SIP_PAGE2_RT_FROMCONTACT (1 << 4)
-#define SIP_PAGE2_RTSAVE_SYSNAME (1 << 5)
+#define SIP_PAGE2_RTCACHEFRIENDS (1 << 0) /*!< G: Should we keep RT objects in memory for extended time? */
+#define SIP_PAGE2_RTUPDATE (1 << 1) /*!< G: Update database with registration data for peer? */
+#define SIP_PAGE2_RTAUTOCLEAR (1 << 2) /*!< G: Should we clean memory from peers after expiry? */
+#define SIP_PAGE2_RT_FROMCONTACT (1 << 4)
+#define SIP_PAGE2_RTSAVE_SYSNAME (1 << 5) /*!< G: Save system name at registration? */
/* Space for addition of other realtime flags in the future */
-#define SIP_PAGE2_IGNOREREGEXPIRE (1 << 10)
-#define SIP_PAGE2_DEBUG (3 << 11)
-#define SIP_PAGE2_DEBUG_CONFIG (1 << 11)
-#define SIP_PAGE2_DEBUG_CONSOLE (1 << 12)
-#define SIP_PAGE2_DYNAMIC (1 << 13) /*!< Dynamic Peers register with Asterisk */
-#define SIP_PAGE2_SELFDESTRUCT (1 << 14) /*!< Automatic peers need to destruct themselves */
-#define SIP_PAGE2_VIDEOSUPPORT (1 << 15)
-#define SIP_PAGE2_ALLOWSUBSCRIBE (1 << 16) /*!< Allow subscriptions from this peer? */
-#define SIP_PAGE2_ALLOWOVERLAP (1 << 17) /*!< Allow overlap dialing ? */
-#define SIP_PAGE2_SUBSCRIBEMWIONLY (1 << 18) /*!< Only issue MWI notification if subscribed to */
-#define SIP_PAGE2_INC_RINGING (1 << 19) /*!< Did this connection increment the counter of in-use calls? */
-#define SIP_PAGE2_T38SUPPORT (7 << 20) /*!< T38 Fax Passthrough Support */
-#define SIP_PAGE2_T38SUPPORT_UDPTL (1 << 20) /*!< 20: T38 Fax Passthrough Support */
-#define SIP_PAGE2_T38SUPPORT_RTP (2 << 20) /*!< 21: T38 Fax Passthrough Support (not implemented) */
-#define SIP_PAGE2_T38SUPPORT_TCP (4 << 20) /*!< 22: T38 Fax Passthrough Support (not implemented) */
-#define SIP_PAGE2_CALL_ONHOLD (3 << 23) /*!< Call states */
-#define SIP_PAGE2_CALL_ONHOLD_ACTIVE (1 << 23) /*!< 23: Active hold */
-#define SIP_PAGE2_CALL_ONHOLD_ONEDIR (2 << 23) /*!< 23: One directional hold */
-#define SIP_PAGE2_CALL_ONHOLD_INACTIVE (3 << 23) /*!< 23: Inactive hold */
-#define SIP_PAGE2_RFC2833_COMPENSATE (1 << 25) /*!< 25: Compensate for buggy RFC2833 implementations */
-#define SIP_PAGE2_BUGGY_MWI (1 << 26) /*!< 26: Buggy CISCO MWI fix */
-#define SIP_PAGE2_NOTEXT (1 << 27) /*!< 27: Text not supported */
-#define SIP_PAGE2_TEXTSUPPORT (1 << 28) /*!< 28: Global text enable */
-#define SIP_PAGE2_DEBUG_TEXT (1 << 29) /*!< 29: Global text debug */
-#define SIP_PAGE2_OUTGOING_CALL (1 << 30) /*!< 30: Is this an outgoing call? */
+#define SIP_PAGE2_IGNOREREGEXPIRE (1 << 10) /*!< G: Ignore expiration of peer */
+#define SIP_PAGE2_DEBUG (3 << 11) /*!< G: Debug flags */
+#define SIP_PAGE2_DEBUG_CONFIG (1 << 11) /*!< G: Debug flags */
+#define SIP_PAGE2_DEBUG_CONSOLE (1 << 12) /*!< G: Debug flags */
+#define SIP_PAGE2_DYNAMIC (1 << 13) /*!< P: Dynamic Peers register with Asterisk */
+#define SIP_PAGE2_SELFDESTRUCT (1 << 14) /*!< P: Automatic peers need to destruct themselves */
+#define SIP_PAGE2_VIDEOSUPPORT (1 << 15) /*!< DP: Video supported if offered? */
+#define SIP_PAGE2_ALLOWSUBSCRIBE (1 << 16) /*!< GP: Allow subscriptions from this peer? */
+#define SIP_PAGE2_ALLOWOVERLAP (1 << 17) /*!< DP: Allow overlap dialing ? */
+#define SIP_PAGE2_SUBSCRIBEMWIONLY (1 << 18) /*!< GP: Only issue MWI notification if subscribed to */
+#define SIP_PAGE2_INC_RINGING (1 << 19) /*!< D: Did this connection increment the counter of in-use calls? */
+#define SIP_PAGE2_T38SUPPORT (7 << 20) /*!< GDP: T38 Fax Passthrough Support */
+#define SIP_PAGE2_T38SUPPORT_UDPTL (1 << 20) /*!< GDP: 20: T38 Fax Passthrough Support */
+#define SIP_PAGE2_T38SUPPORT_RTP (2 << 20) /*!< GDP: 21: T38 Fax Passthrough Support (not implemented) */
+#define SIP_PAGE2_T38SUPPORT_TCP (4 << 20) /*!< GDP: 22: T38 Fax Passthrough Support (not implemented) */
+#define SIP_PAGE2_CALL_ONHOLD (3 << 23) /*!< D: Call hold states */
+#define SIP_PAGE2_CALL_ONHOLD_ACTIVE (1 << 23) /*!< D: 23: Active hold */
+#define SIP_PAGE2_CALL_ONHOLD_ONEDIR (2 << 23) /*!< D: 23: One directional hold */
+#define SIP_PAGE2_CALL_ONHOLD_INACTIVE (3 << 23) /*!< D: 23: Inactive hold */
+#define SIP_PAGE2_RFC2833_COMPENSATE (1 << 25) /*!< DP: 25: Compensate for buggy RFC2833 implementations */
+#define SIP_PAGE2_BUGGY_MWI (1 << 26) /*!< DP: 26: Buggy CISCO MWI fix */
+#define SIP_PAGE2_NOTEXT (1 << 27) /*!< GPD: 27: Text not supported */
+#define SIP_PAGE2_TEXTSUPPORT (1 << 28) /*!< GPD: 28: Global text enable */
+#define SIP_PAGE2_DEBUG_TEXT (1 << 29) /*!< GPD: 29: Global text debug */
+#define SIP_PAGE2_OUTGOING_CALL (1 << 30) /*!< D: 30: Is this an outgoing call? */
#define SIP_PAGE2_FLAGS_TO_COPY \
(SIP_PAGE2_ALLOWSUBSCRIBE | SIP_PAGE2_ALLOWOVERLAP | SIP_PAGE2_VIDEOSUPPORT | \
@@ -863,7 +863,7 @@
#define sipdebug ast_test_flag(&global_flags[1], SIP_PAGE2_DEBUG)
#define sipdebug_config ast_test_flag(&global_flags[1], SIP_PAGE2_DEBUG_CONFIG)
#define sipdebug_console ast_test_flag(&global_flags[1], SIP_PAGE2_DEBUG_CONSOLE)
-#define sipdebug_text ast_test_flag(&global_flags[1], SIP_PAGE2_DEBUG_TEXT)
+#define sipdebug_text ast_test_flag(&global_flags[1], SIP_PAGE2_DEBUG_TEXT)
/*! \brief T38 States for a call */
enum t38state {
@@ -911,8 +911,8 @@
{ REFER_NOAUTH, "Failed - auth failure" }
} ;
-/*! \brief Structure to handle SIP transfers. Dynamically allocated when needed */
-/* OEJ: Should be moved to string fields */
+/*! \brief Structure to handle SIP transfers. Dynamically allocated when needed
+ \note OEJ: Should be moved to string fields */
struct sip_refer {
char refer_to[AST_MAX_EXTENSION]; /*!< Place to store REFER-TO extension */
char refer_to_domain[AST_MAX_EXTENSION]; /*!< Place to store REFER-TO domain */
@@ -982,7 +982,7 @@
ast_group_t callgroup; /*!< Call group */
ast_group_t pickupgroup; /*!< Pickup group */
int lastinvite; /*!< Last Cseq of invite */
- struct ast_flags flags[3]; /*!< SIP_ flags */
+ struct ast_flags flags[2]; /*!< SIP_ flags */
int timer_t1; /*!< SIP timer T1, ms rtt */
unsigned int sipoptions; /*!< Supported SIP options on the other end */
struct ast_codec_pref prefs; /*!< codec prefs */
@@ -1244,8 +1244,9 @@
/*! \brief A per-thread temporary pvt structure */
AST_THREADSTORAGE_CUSTOM(ts_temp_pvt, temp_pvt_init, temp_pvt_cleanup);
-/*! \todo Move the sip_auth list to AST_LIST */
-static struct sip_auth *authl = NULL; /*!< Authentication list for realm authentication */
+/*! \breif Authentication list for realm authentication
+ * \todo Move the sip_auth list to AST_LIST */
+static struct sip_auth *authl = NULL;
/* --- Sockets and networking --------------*/
@@ -2442,12 +2443,13 @@
\return pointer to terminated stripped string
\param tmp input string that will be modified
Examples:
-
+\verbatim
"foo" <bar> valid input, returns bar
foo returns the whole string
< "foo ... > returns the string between brackets
< "foo... bogus (missing closing bracket), returns the whole string
XXX maybe should still skip the opening bracket
+\endverbatim
*/
static char *get_in_brackets(char *tmp)
{
@@ -2496,7 +2498,9 @@
* Init pointers to empty string so we never get NULL dereferencing.
* Overwrites the string.
* return 0 on success, other values on error.
+ * \verbatim
* general form we are expecting is sip[s]:username[:password][;parameter]@host[:port][;...]
+ * \endverbatim
*/
static int parse_uri(char *uri, char *scheme,
char **ret_name, char **pass, char **domain, char **port, char **options)
@@ -3701,7 +3705,7 @@
if (option_debug)
ast_log(LOG_DEBUG, "This call was answered elsewhere");
append_history(p, "Cancel", "Call answered elsewhere");
- ast_set_flag(&p->flags[2], SIP_DIALOG_ANSWEREDELSEWHERE);
+ ast_set_flag(&p->flags[0], SIP_DIALOG_ANSWEREDELSEWHERE);
}
if (ast_test_flag(&p->flags[0], SIP_DEFER_BYE_ON_TRANSFER)) {
@@ -5939,7 +5943,9 @@
\note If the client indicates that it wishes to know the port we received from,
it adds ;rport without an argument to the topmost via header. We need to
add the port number (from our point of view) to that parameter.
+\verbatim
We always add ;received=<ip address> to the topmost via header.
+\endverbatim
Received: RFC 3261, rport RFC 3581 */
static int copy_via_headers(struct sip_pvt *p, struct sip_request *req, const struct sip_request *orig, const char *field)
{
@@ -7459,7 +7465,11 @@
/*! \brief Build REFER/INVITE/OPTIONS message and transmit it
\param init 0 = Prepare request within dialog, 1= prepare request, new branch, 2= prepare new request and new dialog. do_proxy_auth calls this with init!=2
- */
+ \param p sip_pvt structure
+ \param sdp unknown
+ \param sipmethod unknown
+
+*/
static int transmit_invite(struct sip_pvt *p, int sipmethod, int sdp, int init)
{
struct sip_request req;
@@ -8218,7 +8228,7 @@
p->invitestate = INV_CONFIRMED;
reqprep(&resp, p, sipmethod, seqno, newbranch);
- if (sipmethod == SIP_CANCEL && p->owner && ast_test_flag(&p->flags[2], SIP_DIALOG_ANSWEREDELSEWHERE))
+ if (sipmethod == SIP_CANCEL && p->owner && ast_test_flag(&p->flags[0], SIP_DIALOG_ANSWEREDELSEWHERE))
add_header(&resp, "Reason:", "SIP;cause=200;text=\"Call completed elsewhere\"");
add_header_contentLength(&resp, 0);
@@ -8956,10 +8966,12 @@
* Terminate the uri at the first ';' or space.
* Technically we should ignore escaped space per RFC3261 (19.1.1 etc)
* but don't do it for the time being. Remember the uri format is:
+ *\verbatim
*
* sip:user:password at host:port;uri-parameters?headers
* sips:user:password at host:port;uri-parameters?headers
*
+ *\endverbatim
*/
static char *terminate_uri(char *uri)
{
Modified: team/oej/cancel_answer_elsewhere/channels/chan_skinny.c
URL: http://svn.digium.com/view/asterisk/team/oej/cancel_answer_elsewhere/channels/chan_skinny.c?view=diff&rev=68447&r1=68446&r2=68447
==============================================================================
--- team/oej/cancel_answer_elsewhere/channels/chan_skinny.c (original)
+++ team/oej/cancel_answer_elsewhere/channels/chan_skinny.c Fri Jun 8 02:48:03 2007
@@ -260,15 +260,20 @@
#define START_TONE_MESSAGE 0x0082
struct start_tone_message {
uint32_t tone;
+ uint32_t space[3];
};
#define STOP_TONE_MESSAGE 0x0083
+struct stop_tone_message {
+ uint32_t space[2];
+};
#define SET_RINGER_MESSAGE 0x0085
struct set_ringer_message {
uint32_t ringerMode;
uint32_t unknown1; /* See notes in transmit_ringer_mode */
uint32_t unknown2;
+ uint32_t space[2];
};
#define SET_LAMP_MESSAGE 0x0086
@@ -293,7 +298,7 @@
struct media_qualifier {
uint32_t precedence;
uint32_t vad;
- uint32_t packets;
+ uint16_t packets;
uint32_t bitRate;
};
@@ -305,12 +310,14 @@
uint32_t packetSize;
uint32_t payloadType;
struct media_qualifier qualifier;
+ uint32_t space[16];
};
#define STOP_MEDIA_TRANSMISSION_MESSAGE 0x008B
struct stop_media_transmission_message {
uint32_t conferenceId;
uint32_t passThruPartyId;
+ uint32_t space[3];
};
#define CALL_INFO_MESSAGE 0x008F
@@ -332,6 +339,7 @@
char calledPartyVoiceMailbox[24];
char originalCalledPartyVoiceMailbox[24];
char lastRedirectingVoiceMailbox[24];
+ uint32_t space[3];
};
#define SPEED_DIAL_STAT_RES_MESSAGE 0x0091
@@ -345,8 +353,8 @@
struct line_stat_res_message {
uint32_t lineNumber;
char lineDirNumber[24];
- char lineDisplayName[42];
- uint32_t space;
+ char lineDisplayName[24];
+ uint32_t space[15];
};
#define DEFINETIMEDATE_MESSAGE 0x0094
@@ -431,7 +439,6 @@
};
#define CLEAR_NOTIFY_MESSAGE 0x0115
-#define CLEAR_PROMPT_MESSAGE 0x0113
#define CLEAR_DISPLAY_MESSAGE 0x009A
#define CAPABILITIES_REQ_MESSAGE 0x009B
@@ -467,12 +474,14 @@
uint32_t capability;
uint32_t echo;
uint32_t bitrate;
+ uint32_t space[16];
};
#define CLOSE_RECEIVE_CHANNEL_MESSAGE 0x0106
struct close_receive_channel_message {
uint32_t conferenceId;
uint32_t partyId;
+ uint32_t space[2];
};
#define SOFT_KEY_TEMPLATE_RES_MESSAGE 0x0108
@@ -662,6 +671,7 @@
uint32_t callState;
uint32_t lineInstance;
uint32_t callReference;
+ uint32_t space[3];
};
#define DISPLAY_PROMPT_STATUS_MESSAGE 0x0112
@@ -670,6 +680,12 @@
char promptMessage[32];
uint32_t lineInstance;
uint32_t callReference;
+};
+
+#define CLEAR_PROMPT_MESSAGE 0x0113
+struct clear_prompt_message {
+ uint32_t lineInstance;
+ uint32_t callReference;
};
#define DISPLAY_NOTIFY_MESSAGE 0x0114
@@ -701,6 +717,7 @@
struct button_template_res_message buttontemplate;
struct displaytext_message displaytext;
struct display_prompt_status_message displaypromptstatus;
+ struct clear_prompt_message clearpromptstatus;
struct definetimedate_message definetimedate;
struct start_tone_message starttone;
struct speed_dial_stat_res_message speeddial;
@@ -929,7 +946,7 @@
struct skinny_line {
ast_mutex_t lock;
char name[80];
- char label[42]; /* Label that shows next to the line buttons */
+ char label[24]; /* Label that shows next to the line buttons */
char accountcode[AST_MAX_ACCOUNT_CODE];
char exten[AST_MAX_EXTENSION]; /* Extension where to start */
char context[AST_MAX_CONTEXT];
@@ -1598,7 +1615,7 @@
if (!(req = req_alloc(sizeof(struct start_tone_message), START_TONE_MESSAGE)))
return;
} else {
- if (!(req = req_alloc(0, STOP_TONE_MESSAGE)))
+ if (!(req = req_alloc(sizeof(struct stop_tone_message), STOP_TONE_MESSAGE)))
return;
}
@@ -4330,6 +4347,8 @@
res = handle_speed_dial_stat_req_message(req, s);
break;
case LINE_STATE_REQ_MESSAGE:
+ if (skinnydebug)
+ ast_verbose("Received LineStatRequest\n");
res = handle_line_state_req_message(req, s);
break;
case TIME_DATE_REQ_MESSAGE:
Modified: team/oej/cancel_answer_elsewhere/channels/chan_zap.c
URL: http://svn.digium.com/view/asterisk/team/oej/cancel_answer_elsewhere/channels/chan_zap.c?view=diff&rev=68447&r1=68446&r2=68447
==============================================================================
--- team/oej/cancel_answer_elsewhere/channels/chan_zap.c (original)
+++ team/oej/cancel_answer_elsewhere/channels/chan_zap.c Fri Jun 8 02:48:03 2007
@@ -6938,7 +6938,6 @@
{
int res;
pthread_t threadid;
- pthread_attr_t attr;
struct ast_channel *chan;
/* Handle an event on a given channel for the monitor thread. */
@@ -7017,7 +7016,7 @@
case SIG_SF:
/* Check for callerid, digits, etc */
chan = zt_new(i, AST_STATE_RING, 0, SUB_REAL, 0, 0);
- if (chan && ast_pthread_create(&threadid, &attr, ss_thread, chan)) {
+ if (chan && ast_pthread_create_detached(&threadid, NULL, ss_thread, chan)) {
ast_log(LOG_WARNING, "Unable to start simple switch thread on channel %d\n", i->channel);
res = tone_zone_play_tone(i->subs[SUB_REAL].zfd, ZT_TONE_CONGESTION);
if (res < 0)
@@ -7113,7 +7112,7 @@
"CID detection on channel %d\n",
i->channel);
chan = zt_new(i, AST_STATE_PRERING, 0, SUB_REAL, 0, 0);
- if (chan && ast_pthread_create(&threadid, &attr, ss_thread, chan)) {
+ if (chan && ast_pthread_create_detached(&threadid, NULL, ss_thread, chan)) {
ast_log(LOG_WARNING, "Unable to start simple switch thread on channel %d\n", i->channel);
}
}
Modified: team/oej/cancel_answer_elsewhere/contrib/asterisk-ng-doxygen
URL: http://svn.digium.com/view/asterisk/team/oej/cancel_answer_elsewhere/contrib/asterisk-ng-doxygen?view=diff&rev=68447&r1=68446&r2=68447
==============================================================================
--- team/oej/cancel_answer_elsewhere/contrib/asterisk-ng-doxygen (original)
+++ team/oej/cancel_answer_elsewhere/contrib/asterisk-ng-doxygen Fri Jun 8 02:48:03 2007
@@ -1,4 +1,4 @@
-# Doxyfile 1.4.2
+# Doxyfile 1.5.2
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
@@ -14,11 +14,24 @@
# Project related configuration options
#---------------------------------------------------------------------------
+# This tag specifies the encoding used for all characters in the config file that
+# follow. The default is UTF-8 which is also the encoding used for all text before
+# the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into
+# libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of
+# possible encodings.
+
+DOXYFILE_ENCODING = UTF-8
+
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project.
PROJECT_NAME = "Asterisk - the Open Source PBX"
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER =
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
@@ -40,23 +53,13 @@
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
# The default language is English, other supported languages are:
[... 1224 lines stripped ...]
More information about the asterisk-commits
mailing list