[asterisk-commits] oej: branch oej/roibos-cng-support-1.8 r405211 - in /team/oej/roibos-cng-supp...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Jan 9 09:23:57 CST 2014
Author: oej
Date: Thu Jan 9 09:23:31 2014
New Revision: 405211
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=405211
Log:
Resetting
Modified:
team/oej/roibos-cng-support-1.8/ (props changed)
team/oej/roibos-cng-support-1.8/Makefile
team/oej/roibos-cng-support-1.8/README-SERIOUSLY.bestpractices.txt
team/oej/roibos-cng-support-1.8/UPGRADE.txt
team/oej/roibos-cng-support-1.8/addons/ooh323c/src/memheap.c
team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooCapability.c
team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooSocket.c
team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooTimer.c
team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooq931.c
team/oej/roibos-cng-support-1.8/addons/ooh323c/src/perutil.c
team/oej/roibos-cng-support-1.8/addons/ooh323cDriver.c
team/oej/roibos-cng-support-1.8/apps/app_chanspy.c
team/oej/roibos-cng-support-1.8/apps/app_meetme.c
team/oej/roibos-cng-support-1.8/apps/app_mixmonitor.c
team/oej/roibos-cng-support-1.8/apps/app_queue.c
team/oej/roibos-cng-support-1.8/apps/app_sms.c
team/oej/roibos-cng-support-1.8/apps/app_voicemail.c
team/oej/roibos-cng-support-1.8/build_tools/prep_tarball
team/oej/roibos-cng-support-1.8/cdr/cdr_adaptive_odbc.c
team/oej/roibos-cng-support-1.8/cel/cel_custom.c
team/oej/roibos-cng-support-1.8/cel/cel_pgsql.c
team/oej/roibos-cng-support-1.8/channels/chan_dahdi.c
team/oej/roibos-cng-support-1.8/channels/chan_iax2.c
team/oej/roibos-cng-support-1.8/channels/chan_mgcp.c
team/oej/roibos-cng-support-1.8/channels/chan_misdn.c
team/oej/roibos-cng-support-1.8/channels/chan_sip.c
team/oej/roibos-cng-support-1.8/channels/chan_unistim.c
team/oej/roibos-cng-support-1.8/channels/iax2-parser.c
team/oej/roibos-cng-support-1.8/channels/sig_analog.c
team/oej/roibos-cng-support-1.8/channels/sig_pri.c
team/oej/roibos-cng-support-1.8/channels/sig_ss7.c
team/oej/roibos-cng-support-1.8/channels/sip/dialplan_functions.c
team/oej/roibos-cng-support-1.8/channels/sip/include/sip.h
team/oej/roibos-cng-support-1.8/channels/sip/reqresp_parser.c
team/oej/roibos-cng-support-1.8/codecs/ilbc/doCPLC.c
team/oej/roibos-cng-support-1.8/configs/asterisk.conf.sample
team/oej/roibos-cng-support-1.8/configs/chan_dahdi.conf.sample
team/oej/roibos-cng-support-1.8/configs/h323.conf.sample
team/oej/roibos-cng-support-1.8/configs/sip.conf.sample
team/oej/roibos-cng-support-1.8/configure
team/oej/roibos-cng-support-1.8/configure.ac
team/oej/roibos-cng-support-1.8/default.exports
team/oej/roibos-cng-support-1.8/funcs/func_config.c
team/oej/roibos-cng-support-1.8/funcs/func_db.c
team/oej/roibos-cng-support-1.8/funcs/func_dialgroup.c
team/oej/roibos-cng-support-1.8/funcs/func_env.c
team/oej/roibos-cng-support-1.8/funcs/func_lock.c
team/oej/roibos-cng-support-1.8/funcs/func_math.c
team/oej/roibos-cng-support-1.8/funcs/func_realtime.c
team/oej/roibos-cng-support-1.8/funcs/func_shell.c
team/oej/roibos-cng-support-1.8/funcs/func_strings.c
team/oej/roibos-cng-support-1.8/include/asterisk/astmm.h
team/oej/roibos-cng-support-1.8/include/asterisk/frame.h
team/oej/roibos-cng-support-1.8/include/asterisk/lock.h
team/oej/roibos-cng-support-1.8/include/asterisk/logger.h
team/oej/roibos-cng-support-1.8/include/asterisk/pbx.h
team/oej/roibos-cng-support-1.8/include/asterisk/rtp_engine.h
team/oej/roibos-cng-support-1.8/include/asterisk/test.h
team/oej/roibos-cng-support-1.8/include/asterisk/utils.h
team/oej/roibos-cng-support-1.8/main/abstract_jb.c
team/oej/roibos-cng-support-1.8/main/app.c
team/oej/roibos-cng-support-1.8/main/asterisk.c
team/oej/roibos-cng-support-1.8/main/asterisk.exports.in
team/oej/roibos-cng-support-1.8/main/astfd.c
team/oej/roibos-cng-support-1.8/main/astmm.c
team/oej/roibos-cng-support-1.8/main/astobj2.c
team/oej/roibos-cng-support-1.8/main/cel.c
team/oej/roibos-cng-support-1.8/main/channel.c
team/oej/roibos-cng-support-1.8/main/cli.c
team/oej/roibos-cng-support-1.8/main/config.c
team/oej/roibos-cng-support-1.8/main/data.c
team/oej/roibos-cng-support-1.8/main/editline/readline.c
team/oej/roibos-cng-support-1.8/main/editline/term.c
team/oej/roibos-cng-support-1.8/main/event.c
team/oej/roibos-cng-support-1.8/main/features.c
team/oej/roibos-cng-support-1.8/main/heap.c
team/oej/roibos-cng-support-1.8/main/http.c
team/oej/roibos-cng-support-1.8/main/indications.c
team/oej/roibos-cng-support-1.8/main/jitterbuf.c
team/oej/roibos-cng-support-1.8/main/loader.c
team/oej/roibos-cng-support-1.8/main/lock.c
team/oej/roibos-cng-support-1.8/main/logger.c
team/oej/roibos-cng-support-1.8/main/manager.c
team/oej/roibos-cng-support-1.8/main/pbx.c
team/oej/roibos-cng-support-1.8/main/rtp_engine.c
team/oej/roibos-cng-support-1.8/main/say.c
team/oej/roibos-cng-support-1.8/main/tcptls.c
team/oej/roibos-cng-support-1.8/main/test.c
team/oej/roibos-cng-support-1.8/main/threadstorage.c
team/oej/roibos-cng-support-1.8/main/translate.c
team/oej/roibos-cng-support-1.8/main/utils.c
team/oej/roibos-cng-support-1.8/main/xmldoc.c
team/oej/roibos-cng-support-1.8/makeopts.in
team/oej/roibos-cng-support-1.8/res/res_agi.c
team/oej/roibos-cng-support-1.8/res/res_calendar.c
team/oej/roibos-cng-support-1.8/res/res_fax_spandsp.c
team/oej/roibos-cng-support-1.8/res/res_jabber.c
team/oej/roibos-cng-support-1.8/res/res_musiconhold.c
team/oej/roibos-cng-support-1.8/res/res_rtp_asterisk.c
team/oej/roibos-cng-support-1.8/res/res_rtp_multicast.c
team/oej/roibos-cng-support-1.8/res/res_security_log.c
team/oej/roibos-cng-support-1.8/sounds/Makefile
team/oej/roibos-cng-support-1.8/tests/test_dlinklists.c
team/oej/roibos-cng-support-1.8/tests/test_linkedlists.c
team/oej/roibos-cng-support-1.8/tests/test_substitution.c
team/oej/roibos-cng-support-1.8/utils/ael_main.c
team/oej/roibos-cng-support-1.8/utils/check_expr.c
team/oej/roibos-cng-support-1.8/utils/clicompat.c
team/oej/roibos-cng-support-1.8/utils/conf2ael.c
Propchange: team/oej/roibos-cng-support-1.8/
------------------------------------------------------------------------------
automerge = Is-there-life-off-net?
Propchange: team/oej/roibos-cng-support-1.8/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Thu Jan 9 09:23:31 2014
@@ -1,1 +1,1 @@
-/branches/1.8:1-396978
+/branches/1.8:1-405087
Modified: team/oej/roibos-cng-support-1.8/Makefile
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/Makefile?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/Makefile (original)
+++ team/oej/roibos-cng-support-1.8/Makefile Thu Jan 9 09:23:31 2014
@@ -170,7 +170,7 @@
_ASTCFLAGS+=-Wall
endif
-_ASTCFLAGS+=-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG)
+_ASTCFLAGS+=-Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(AST_NESTED_FUNCTIONS) $(DEBUG)
ifeq ($(AST_DEVMODE),yes)
_ASTCFLAGS+=-Werror
Modified: team/oej/roibos-cng-support-1.8/README-SERIOUSLY.bestpractices.txt
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/README-SERIOUSLY.bestpractices.txt?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/README-SERIOUSLY.bestpractices.txt (original)
+++ team/oej/roibos-cng-support-1.8/README-SERIOUSLY.bestpractices.txt Thu Jan 9 09:23:31 2014
@@ -25,6 +25,9 @@
* Manager Class Authorizations:
Recognizing potential issues with certain classes of authorization
+
+* Avoid Privilege Escalations:
+ Disable the ability to execute functions that may escalate privileges
----------------
Additional Links
@@ -344,3 +347,24 @@
not running Asterisk as root, can prevent serious problems from arising when
allowing external connections to originate calls into Asterisk.
+===========================
+Avoid Privilege Escalations
+===========================
+
+External control protocols, such as Manager, often have the ability to get and
+set channel variables; which allows the execution of dialplan functions.
+
+Dialplan functions within Asterisk are incredibly powerful, which is wonderful
+for building applications using Asterisk. But during the read or write
+execution, certain diaplan functions do much more. For example, reading the
+SHELL() function can execute arbitrary commands on the system Asterisk is
+running on. Writing to the FILE() function can change any file that Asterisk has
+write access to.
+
+When these functions are executed from an external protocol, that execution
+could result in a privilege escalation. Asterisk can inhibit the execution of
+these functions, if live_dangerously in the [options] section of asterisk.conf
+is set to no.
+
+For backwards compatibility, live_dangerously defaults to yes, and must be
+explicitly set to no to enable this privilege escalation protection.
Modified: team/oej/roibos-cng-support-1.8/UPGRADE.txt
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/UPGRADE.txt?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/UPGRADE.txt (original)
+++ team/oej/roibos-cng-support-1.8/UPGRADE.txt Thu Jan 9 09:23:31 2014
@@ -23,6 +23,18 @@
the function will be RESULT_FAILURE instead of the prior behavior of always
returning RESULT_SUCCESS even if there was an error.
+* The option "register_retry_403" has been added to chan_sip to work around
+ servers that are known to erroneously send 403 in response to valid
+ REGISTER requests and allows Asterisk to continue attepmting to connect.
+
+* Certain dialplan functions have been marked as 'dangerous', and may only be
+ executed from the dialplan. Execution from extenal sources (AMI's GetVar and
+ SetVar actions; etc.) may be inhibited by setting live_dangerously in the
+ [options] section of asterisk.conf to no. SHELL(), channel locking, and direct
+ file read/write functions are marked as dangerous. DB_DELETE() and
+ REALTIME_DESTROY() are marked as dangerous for reads, but can now safely
+ accept writes (which ignore the provided value).
+
from 1.8.22.0 to 1.8.23.0:
* The default settings for chan_sip are now overriden properly by the general
settings in sip.conf. Please look over your settings upon upgrading.
Modified: team/oej/roibos-cng-support-1.8/addons/ooh323c/src/memheap.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/addons/ooh323c/src/memheap.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/addons/ooh323c/src/memheap.c (original)
+++ team/oej/roibos-cng-support-1.8/addons/ooh323c/src/memheap.c Thu Jan 9 09:23:31 2014
@@ -726,7 +726,7 @@
OSMemLink** ppMemLink;
OSMemBlk* pMemBlk;
OSMemElemDescr* pElem;
- OSMemLink* pMemLink, *pPrevMemLink = 0;
+ OSMemLink* pMemLink;
void *newMem_p;
unsigned nbytes, nunits;
@@ -758,7 +758,6 @@
*(int*)(((char*)pMemLink) + sizeof (OSMemLink)) = nbytes_;
return pMemLink->pMemBlk;
}
- pPrevMemLink = pMemLink;
}
/* Round number of bytes to nearest 8-byte boundary */
Modified: team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooCapability.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooCapability.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooCapability.c (original)
+++ team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooCapability.c Thu Jan 9 09:23:31 2014
@@ -1104,14 +1104,12 @@
(ooH323EpCapability *epCap, OOCTXT* pctxt, int dir)
{
H245AudioCapability *pAudio=NULL;
- OOCapParams *params;
if(!epCap || !epCap->params)
{
OOTRACEERR1("Error:Invalid capability parameters to "
"ooCapabilityCreateSimpleCapability.\n");
return NULL;
}
- params =(OOCapParams*)epCap->params;
pAudio = (H245AudioCapability*)memAlloc(pctxt,
sizeof(H245AudioCapability));
if(!pAudio)
@@ -1228,7 +1226,6 @@
(ooH323EpCapability *epCap, OOCTXT* pctxt, int dir)
{
H245DataApplicationCapability *pT38=NULL;
- OOCapParams *params;
H245DataMode_application *pT38app;
if(!epCap || !epCap->params)
{
@@ -1236,7 +1233,6 @@
"ooCapabilityCreateSimpleCapability.\n");
return NULL;
}
- params =(OOCapParams*)epCap->params;
pT38 = (H245DataApplicationCapability*)memAlloc(pctxt,
sizeof(H245DataApplicationCapability));
if(!pT38)
Modified: team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooSocket.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooSocket.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooSocket.c (original)
+++ team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooSocket.c Thu Jan 9 09:23:31 2014
@@ -234,7 +234,7 @@
int ooSocketCreateUDP (OOSOCKET* psocket)
{
int on;
- struct linger linger;
+ /*struct linger linger;*/
OOSOCKET sock = socket (AF_INET,
SOCK_DGRAM,
@@ -252,9 +252,9 @@
OOTRACEERR1("Error:Failed to set socket option SO_REUSEADDR\n");
return ASN_E_INVSOCKET;
}
- linger.l_onoff = 1;
+ /*linger.l_onoff = 1;
linger.l_linger = 0;
- /*if (setsockopt (sock, SOL_SOCKET, SO_LINGER,
+ if (setsockopt (sock, SOL_SOCKET, SO_LINGER,
(const char* ) &linger, sizeof (linger)) == -1)
return ASN_E_INVSOCKET;
*/
Modified: team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooTimer.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooTimer.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooTimer.c (original)
+++ team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooTimer.c Thu Jan 9 09:23:31 2014
@@ -101,7 +101,6 @@
void ooTimerFireExpired (OOCTXT* pctxt, DList *pList)
{
OOTimer* pTimer;
- int stat;
while (pList->count > 0) {
pTimer = (OOTimer*) pList->head->data;
@@ -113,7 +112,7 @@
*/
if (pTimer->reRegister) ooTimerReset (pctxt, pList, pTimer);
- stat = (*pTimer->timeoutCB)(pTimer->cbData);
+ (*pTimer->timeoutCB)(pTimer->cbData);
if (!pTimer->reRegister) {
ooTimerDelete (pctxt, pList, pTimer);
Modified: team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooq931.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooq931.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooq931.c (original)
+++ team/oej/roibos-cng-support-1.8/addons/ooh323c/src/ooq931.c Thu Jan 9 09:23:31 2014
@@ -2183,7 +2183,7 @@
ooAliases *pNewAlias=NULL, *alias=NULL;
struct timespec ts;
struct timeval tv;
- int i=0, irand=0, ret = OO_OK;
+ int i=0, irand=0;
/* Note: We keep same callToken, for new call which is going
to replace an existing call, thus treating it as a single call.*/
@@ -2235,7 +2235,7 @@
{
/* No need to check registration status here as it is already checked for
MakeCall command */
- ret = ooGkClientSendAdmissionRequest(gH323ep.gkClient, fwdedCall, FALSE);
+ ooGkClientSendAdmissionRequest(gH323ep.gkClient, fwdedCall, FALSE);
fwdedCall->callState = OO_CALL_WAITING_ADMISSION;
ast_mutex_lock(&fwdedCall->Lock);
tv = ast_tvnow();
@@ -2249,7 +2249,7 @@
}
if (fwdedCall->callState < OO_CALL_CLEAR) {
ast_mutex_lock(&fwdedCall->Lock);
- ret = ooH323CallAdmitted (fwdedCall);
+ ooH323CallAdmitted (fwdedCall);
ast_mutex_unlock(&fwdedCall->Lock);
}
@@ -2276,7 +2276,6 @@
int ooH323MakeCall(char *dest, char *callToken, ooCallOptions *opts)
{
- OOCTXT *pctxt;
OOH323CallData *call;
int ret=OO_OK, i=0, irand=0;
char tmp[30]="\0";
@@ -2303,7 +2302,6 @@
return OO_FAILED;
}
- pctxt = call->pctxt;
if(opts)
{
if(opts->fastStart)
Modified: team/oej/roibos-cng-support-1.8/addons/ooh323c/src/perutil.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/addons/ooh323c/src/perutil.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/addons/ooh323c/src/perutil.c (original)
+++ team/oej/roibos-cng-support-1.8/addons/ooh323c/src/perutil.c Thu Jan 9 09:23:31 2014
@@ -168,7 +168,7 @@
int checkSizeConstraint(OOCTXT* pctxt, int size)
{
Asn1SizeCnst* pSize;
- ASN1UINT lower, upper;
+ ASN1UINT upper;
ASN1BOOL extbit;
int stat;
@@ -186,7 +186,6 @@
pSize = getSizeConstraint (pctxt, extbit);
- lower = (pSize) ? pSize->lower : 0;
upper = (pSize) ? pSize->upper : ASN1UINT_MAX;
if (upper < (ASN1UINT)size) {
Modified: team/oej/roibos-cng-support-1.8/addons/ooh323cDriver.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/addons/ooh323cDriver.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/addons/ooh323cDriver.c (original)
+++ team/oej/roibos-cng-support-1.8/addons/ooh323cDriver.c Thu Jan 9 09:23:31 2014
@@ -100,8 +100,10 @@
pfds[0].fd = mycthread->thePipe[0];
pfds[0].events = POLLIN;
ooSocketPoll(pfds, 1, SEC_TO_HOLD_THREAD * 1000);
- if (ooPDRead(pfds, 1, mycthread->thePipe[0]))
+ if (ooPDRead(pfds, 1, mycthread->thePipe[0])) {
res = read(mycthread->thePipe[0], &c, 1);
+ (void) res;/* Shut up compiler: Set but not used and unused return value of read. */
+ }
ast_mutex_lock(&callThreadsLock);
ast_mutex_lock(&mycthread->lock);
@@ -182,6 +184,7 @@
cur->inUse = TRUE;
cur->call = call;
res = write(cur->thePipe[1], &c, 1);
+ (void) res;/* Shut up compiler: Set but not used and unused return value of write. */
ast_mutex_unlock(&cur->lock);
}
Modified: team/oej/roibos-cng-support-1.8/apps/app_chanspy.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/apps/app_chanspy.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/apps/app_chanspy.c (original)
+++ team/oej/roibos-cng-support-1.8/apps/app_chanspy.c Thu Jan 9 09:23:31 2014
@@ -363,7 +363,7 @@
OPTION_NAME = (1 << 12), /* Say the name of the person on whom we will spy */
OPTION_DTMF_SWITCH_MODES = (1 << 13), /* Allow numeric DTMF to switch between chanspy modes */
OPTION_DTMF_EXIT = (1 << 14), /* Set DTMF to exit, added for DAHDIScan integration */
- OPTION_DTMF_CYCLE = (1 << 15), /* Custom DTMF for cycling next avaliable channel, (default is '*') */
+ OPTION_DTMF_CYCLE = (1 << 15), /* Custom DTMF for cycling next available channel, (default is '*') */
OPTION_DAHDI_SCAN = (1 << 16), /* Scan groups in DAHDIScan mode */
OPTION_STOP = (1 << 17),
OPTION_EXITONHANGUP = (1 << 18), /* Hang up when the spied-on channel hangs up. */
Modified: team/oej/roibos-cng-support-1.8/apps/app_meetme.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/apps/app_meetme.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/apps/app_meetme.c (original)
+++ team/oej/roibos-cng-support-1.8/apps/app_meetme.c Thu Jan 9 09:23:31 2014
@@ -2547,7 +2547,7 @@
* \param recordingtmp character buffer which may hold the name of the conference recording file
* \param dahdic dahdi configuration info used by the main conference loop
*/
-static void meetme_menu_admin_extended(enum menu_modes *menu_mode, int *dtmf, struct ast_conference *conf, struct ast_flags64 *confflags, struct ast_channel *chan, struct ast_conf_user *user, char *recordingtmp, struct dahdi_confinfo *dahdic)
+static void meetme_menu_admin_extended(enum menu_modes *menu_mode, int *dtmf, struct ast_conference *conf, struct ast_flags64 *confflags, struct ast_channel *chan, struct ast_conf_user *user, char *recordingtmp, int recordingtmp_size, struct dahdi_confinfo *dahdic)
{
int keepplaying;
int playednamerec;
@@ -2668,7 +2668,7 @@
}
ast_channel_unlock(chan);
if (!conf->recordingfilename) {
- snprintf(recordingtmp, sizeof(recordingtmp), "meetme-conf-rec-%s-%s", conf->confno, chan->uniqueid);
+ snprintf(recordingtmp, recordingtmp_size, "meetme-conf-rec-%s-%s", conf->confno, chan->uniqueid);
conf->recordingfilename = ast_strdup(recordingtmp);
}
if (!conf->recordingformat) {
@@ -2731,7 +2731,7 @@
* \param dahdic dahdi configuration info used by the main conference loop
*/
-static void meetme_menu(enum menu_modes *menu_mode, int *dtmf, struct ast_conference *conf, struct ast_flags64 *confflags, struct ast_channel *chan, struct ast_conf_user *user, char *recordingtmp, struct dahdi_confinfo *dahdic)
+static void meetme_menu(enum menu_modes *menu_mode, int *dtmf, struct ast_conference *conf, struct ast_flags64 *confflags, struct ast_channel *chan, struct ast_conf_user *user, char *recordingtmp, int recordingtmp_size, struct dahdi_confinfo *dahdic)
{
switch (*menu_mode) {
case MENU_DISABLED:
@@ -2746,7 +2746,7 @@
break;
}
case MENU_ADMIN_EXTENDED:
- meetme_menu_admin_extended(menu_mode, dtmf, conf, confflags, chan, user, recordingtmp, dahdic);
+ meetme_menu_admin_extended(menu_mode, dtmf, conf, confflags, chan, user, recordingtmp, recordingtmp_size, dahdic);
break;
}
}
@@ -3791,7 +3791,7 @@
}
if (dtmf > 0) {
- meetme_menu(&menu_mode, &dtmf, conf, confflags, chan, user, recordingtmp, &dahdic);
+ meetme_menu(&menu_mode, &dtmf, conf, confflags, chan, user, recordingtmp, sizeof(recordingtmp), &dahdic);
}
if (musiconhold && !menu_mode) {
@@ -4838,6 +4838,23 @@
res = -2;
goto usernotfound;
}
+ } else {
+ /* fail for commands that require a user */
+ switch (*args.command) {
+ case 'm': /* Unmute */
+ case 'M': /* Mute */
+ case 't': /* Lower user's talk volume */
+ case 'T': /* Raise user's talk volume */
+ case 'u': /* Lower user's listen volume */
+ case 'U': /* Raise user's listen volume */
+ case 'r': /* Reset user's volume level */
+ case 'k': /* Kick user */
+ res = -2;
+ ast_log(LOG_NOTICE, "No user specified!\n");
+ goto usernotfound;
+ default:
+ break;
+ }
}
switch (*args.command) {
@@ -4853,21 +4870,24 @@
case 101: /* e: Eject last user*/
{
int max_no = 0;
-
- /* If they passed in a user, disregard it */
- if (user) {
- ao2_ref(user, -1);
- }
+ struct ast_conf_user *eject_user;
ao2_callback(cnf->usercontainer, OBJ_NODATA, user_max_cmp, &max_no);
- user = ao2_find(cnf->usercontainer, &max_no, 0);
- if (!ast_test_flag64(&user->userflags, CONFFLAG_ADMIN))
- user->adminflags |= ADMINFLAG_KICKME;
- else {
+ eject_user = ao2_find(cnf->usercontainer, &max_no, 0);
+ if (!eject_user) {
+ res = -1;
+ ast_log(LOG_NOTICE, "No last user to kick!\n");
+ break;
+ }
+
+ if (!ast_test_flag64(&eject_user->userflags, CONFFLAG_ADMIN)) {
+ eject_user->adminflags |= ADMINFLAG_KICKME;
+ } else {
res = -1;
ast_log(LOG_NOTICE, "Not kicking last user, is an Admin!\n");
}
- ao2_ref(user, -1);
+
+ ao2_ref(eject_user, -1);
break;
}
case 77: /* M: Mute */
Modified: team/oej/roibos-cng-support-1.8/apps/app_mixmonitor.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/apps/app_mixmonitor.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/apps/app_mixmonitor.c (original)
+++ team/oej/roibos-cng-support-1.8/apps/app_mixmonitor.c Thu Jan 9 09:23:31 2014
@@ -590,7 +590,7 @@
ast_mutex_lock(&mixmonitor_ds->lock);
- /* closing the filestream here guarantees the file is avaliable to the dialplan
+ /* closing the filestream here guarantees the file is available to the dialplan
* after calling StopMixMonitor */
mixmonitor_ds_close_fs(mixmonitor_ds);
Modified: team/oej/roibos-cng-support-1.8/apps/app_queue.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/apps/app_queue.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/apps/app_queue.c (original)
+++ team/oej/roibos-cng-support-1.8/apps/app_queue.c Thu Jan 9 09:23:31 2014
@@ -1406,7 +1406,7 @@
ao2_lock(q);
mem_iter = ao2_iterator_init(q->members, 0);
for (; (member = ao2_iterator_next(&mem_iter)); ao2_ref(member, -1)) {
- if ((max_penalty && (member->penalty > max_penalty)) || (min_penalty && (member->penalty < min_penalty))) {
+ if ((max_penalty != INT_MAX && member->penalty > max_penalty) || (min_penalty != INT_MAX && member->penalty < min_penalty)) {
if (conditions & QUEUE_EMPTY_PENALTY) {
ast_debug(4, "%s is unavailable because his penalty is not between %d and %d\n", member->membername, min_penalty, max_penalty);
continue;
@@ -4173,23 +4173,54 @@
*/
static void update_qe_rule(struct queue_ent *qe)
{
- int max_penalty = qe->pr->max_relative ? qe->max_penalty + qe->pr->max_value : qe->pr->max_value;
- int min_penalty = qe->pr->min_relative ? qe->min_penalty + qe->pr->min_value : qe->pr->min_value;
- char max_penalty_str[20], min_penalty_str[20];
- /* a relative change to the penalty could put it below 0 */
- if (max_penalty < 0)
- max_penalty = 0;
- if (min_penalty < 0)
- min_penalty = 0;
- if (min_penalty > max_penalty)
- min_penalty = max_penalty;
- snprintf(max_penalty_str, sizeof(max_penalty_str), "%d", max_penalty);
- snprintf(min_penalty_str, sizeof(min_penalty_str), "%d", min_penalty);
- pbx_builtin_setvar_helper(qe->chan, "QUEUE_MAX_PENALTY", max_penalty_str);
- pbx_builtin_setvar_helper(qe->chan, "QUEUE_MIN_PENALTY", min_penalty_str);
- qe->max_penalty = max_penalty;
- qe->min_penalty = min_penalty;
- ast_debug(3, "Setting max penalty to %d and min penalty to %d for caller %s since %d seconds have elapsed\n", qe->max_penalty, qe->min_penalty, qe->chan->name, qe->pr->time);
+ int max_penalty = INT_MAX;
+
+ if (qe->max_penalty != INT_MAX) {
+ char max_penalty_str[20];
+
+ if (qe->pr->max_relative) {
+ max_penalty = qe->max_penalty + qe->pr->max_value;
+ } else {
+ max_penalty = qe->pr->max_value;
+ }
+
+ /* a relative change to the penalty could put it below 0 */
+ if (max_penalty < 0) {
+ max_penalty = 0;
+ }
+
+ snprintf(max_penalty_str, sizeof(max_penalty_str), "%d", max_penalty);
+ pbx_builtin_setvar_helper(qe->chan, "QUEUE_MAX_PENALTY", max_penalty_str);
+ qe->max_penalty = max_penalty;
+ ast_debug(3, "Setting max penalty to %d for caller %s since %d seconds have elapsed\n",
+ qe->max_penalty, qe->chan->name, qe->pr->time);
+ }
+
+ if (qe->min_penalty != INT_MAX) {
+ char min_penalty_str[20];
+ int min_penalty;
+
+ if (qe->pr->min_relative) {
+ min_penalty = qe->min_penalty + qe->pr->min_value;
+ } else {
+ min_penalty = qe->pr->min_value;
+ }
+
+ if (min_penalty < 0) {
+ min_penalty = 0;
+ }
+
+ if (max_penalty != INT_MAX && min_penalty > max_penalty) {
+ min_penalty = max_penalty;
+ }
+
+ snprintf(min_penalty_str, sizeof(min_penalty_str), "%d", min_penalty);
+ pbx_builtin_setvar_helper(qe->chan, "QUEUE_MIN_PENALTY", min_penalty_str);
+ qe->min_penalty = min_penalty;
+ ast_debug(3, "Setting min penalty to %d for caller %s since %d seconds have elapsed\n",
+ qe->min_penalty, qe->chan->name, qe->pr->time);
+ }
+
qe->pr = AST_LIST_NEXT(qe->pr, list);
}
@@ -4334,8 +4365,8 @@
unsigned char usepenalty = (membercount <= q->penaltymemberslimit) ? 0 : 1;
if (usepenalty) {
- if ((qe->max_penalty && (mem->penalty > qe->max_penalty)) ||
- (qe->min_penalty && (mem->penalty < qe->min_penalty))) {
+ if ((qe->max_penalty != INT_MAX && mem->penalty > qe->max_penalty) ||
+ (qe->min_penalty != INT_MAX && mem->penalty < qe->min_penalty)) {
return -1;
}
} else {
@@ -6163,10 +6194,10 @@
} else {
ast_log(LOG_WARNING, "${QUEUE_MAX_PENALTY}: Invalid value (%s), channel %s.\n",
max_penalty_str, chan->name);
- max_penalty = 0;
+ max_penalty = INT_MAX;
}
} else {
- max_penalty = 0;
+ max_penalty = INT_MAX;
}
if ((min_penalty_str = pbx_builtin_getvar_helper(chan, "QUEUE_MIN_PENALTY"))) {
@@ -6175,10 +6206,10 @@
} else {
ast_log(LOG_WARNING, "${QUEUE_MIN_PENALTY}: Invalid value (%s), channel %s.\n",
min_penalty_str, chan->name);
- min_penalty = 0;
+ min_penalty = INT_MAX;
}
} else {
- min_penalty = 0;
+ min_penalty = INT_MAX;
}
ast_channel_unlock(chan);
@@ -6352,7 +6383,7 @@
}
} else if (qe.valid_digits) {
ast_queue_log(args.queuename, chan->uniqueid, "NONE", "EXITWITHKEY",
- "%s|%d", qe.digits, qe.pos);
+ "%s|%d|%d|%ld", qe.digits, qe.pos, qe.opos, (long) time(NULL) - qe.start);
}
}
@@ -7261,9 +7292,10 @@
ao2_lock(q);
/* This check is to make sure we don't print information for realtime
* queues which have been deleted from realtime but which have not yet
- * been deleted from the in-core container
+ * been deleted from the in-core container. Only do this if we're not
+ * looking for a specific queue.
*/
- if (q->realtime) {
+ if (argc < 3 && q->realtime) {
realtime_queue = load_realtime_queue(q->name);
if (!realtime_queue) {
ao2_unlock(q);
@@ -7950,8 +7982,8 @@
case CLI_INIT:
e->command = "queue add member";
e->usage =
- "Usage: queue add member <channel> to <queue> [[[penalty <penalty>] as <membername>] state_interface <interface>]\n"
- " Add a channel to a queue with optionally: a penalty, membername and a state_interface\n";
+ "Usage: queue add member <dial string> to <queue> [[[penalty <penalty>] as <membername>] state_interface <interface>]\n"
+ " Add a dial string (Such as a channel,e.g. SIP/6001) to a queue with optionally: a penalty, membername and a state_interface\n";
return NULL;
case CLI_GENERATE:
return complete_queue_add_member(a->line, a->word, a->pos, a->n);
Modified: team/oej/roibos-cng-support-1.8/apps/app_sms.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/apps/app_sms.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/apps/app_sms.c (original)
+++ team/oej/roibos-cng-support-1.8/apps/app_sms.c Thu Jan 9 09:23:31 2014
@@ -696,7 +696,7 @@
}
while (l--) {
int v = *i++;
- if (l--) {
+ if (l && l--) {
v = (v << 8) + *i++;
}
*o++ = v;
@@ -714,6 +714,7 @@
} else if (is8bit(dcs)) {
unpacksms8(i, l, udh, udhl, ud, udl, udhi);
} else {
+ l += l % 2;
unpacksms16(i, l, udh, udhl, ud, udl, udhi);
}
return l + 1;
Modified: team/oej/roibos-cng-support-1.8/apps/app_voicemail.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/apps/app_voicemail.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/apps/app_voicemail.c (original)
+++ team/oej/roibos-cng-support-1.8/apps/app_voicemail.c Thu Jan 9 09:23:31 2014
@@ -12758,6 +12758,7 @@
{
int i, j, res = AST_TEST_PASS, syserr;
struct ast_vm_user *vmu;
+ struct ast_vm_user svm;
struct vm_state vms;
#ifdef IMAP_STORAGE
struct ast_channel *chan = NULL;
@@ -12810,7 +12811,7 @@
}
#endif
- if (!(vmu = find_user(NULL, testcontext, testmailbox)) &&
+ if (!(vmu = find_user(&svm, testcontext, testmailbox)) &&
!(vmu = find_or_create(testcontext, testmailbox))) {
ast_test_status_update(test, "Cannot create vmu structure\n");
ast_unreplace_sigchld();
Modified: team/oej/roibos-cng-support-1.8/build_tools/prep_tarball
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/build_tools/prep_tarball?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/build_tools/prep_tarball (original)
+++ team/oej/roibos-cng-support-1.8/build_tools/prep_tarball Thu Jan 9 09:23:31 2014
@@ -19,11 +19,11 @@
cd doc
echo "Downloading the PDF and HTML documentation from the Asterisk wiki (this will take a minute) ..."
-wget https://wiki.asterisk.org/wiki/download/attachments/19005471/Asterisk-Admin-Guide-$branch.pdf
+wget https://wiki.asterisk.org/wiki/download/attachments/19005471/Asterisk-$branch-Reference.pdf
+wget https://wiki.asterisk.org/wiki/download/attachments/19005471/Asterisk-Admin-Guide.pdf
wget https://wiki.asterisk.org/wiki/download/attachments/19005471/Asterisk-Admin-Guide-$branch.html.zip
echo "Extracting HTML Admin Guide"
unzip Asterisk-Admin-Guide-$branch.html.zip
mv AST/ Asterisk-Admin-Guide/
-mv Asterisk-Admin-Guide-$branch.pdf Asterisk-Admin-Guide.pdf
rm -f Asterisk-Admin-Guide-$branch.html.zip
echo "Documentation downloaded. Goodbye!"
Modified: team/oej/roibos-cng-support-1.8/cdr/cdr_adaptive_odbc.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/cdr/cdr_adaptive_odbc.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/cdr/cdr_adaptive_odbc.c (original)
+++ team/oej/roibos-cng-support-1.8/cdr/cdr_adaptive_odbc.c Thu Jan 9 09:23:31 2014
@@ -683,6 +683,11 @@
continue;
}
first = 0;
+ } else if (entry->filtervalue && entry->filtervalue[0] != '\0') {
+ ast_verb(4, "CDR column '%s' was not set and does not match filter of"
+ " '%s'. Cancelling this CDR.\n",
+ entry->cdrname, entry->filtervalue);
+ goto early_release;
}
}
Modified: team/oej/roibos-cng-support-1.8/cel/cel_custom.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/cel/cel_custom.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/cel/cel_custom.c (original)
+++ team/oej/roibos-cng-support-1.8/cel/cel_custom.c Thu Jan 9 09:23:31 2014
@@ -82,6 +82,7 @@
struct ast_config *cfg;
struct ast_variable *var;
struct ast_flags config_flags = { 0 };
+ int mappings = 0;
int res = 0;
cfg = ast_config_load(CONFIG, config_flags);
@@ -90,7 +91,10 @@
return -1;
}
- var = ast_variable_browse(cfg, "mappings");
+ if (!(var = ast_variable_browse(cfg, "mappings"))) {
+ ast_log(LOG_NOTICE, "No mappings found in " CONFIG ". Not logging CEL to custom CSVs.\n");
+ }
+
while (var) {
if (!ast_strlen_zero(var->name) && !ast_strlen_zero(var->value)) {
struct cel_config *sink = ast_calloc_with_stringfields(1, struct cel_config, 1024);
@@ -105,6 +109,8 @@
ast_string_field_build(sink, filename, "%s/%s/%s", ast_config_AST_LOG_DIR, name, var->name);
ast_mutex_init(&sink->lock);
+ ast_verb(3, "Added CEL CSV mapping for '%s'.\n", sink->filename);
+ mappings += 1;
AST_RWLIST_INSERT_TAIL(&sinks, sink, list);
} else {
ast_log(LOG_NOTICE, "Mapping must have both a filename and a format at line %d\n", var->lineno);
@@ -112,6 +118,8 @@
var = var->next;
}
ast_config_destroy(cfg);
+
+ ast_verb(1, "Added CEL CSV mapping for %d files.\n", mappings);
return res;
}
Modified: team/oej/roibos-cng-support-1.8/cel/cel_pgsql.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/cel/cel_pgsql.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/cel/cel_pgsql.c (original)
+++ team/oej/roibos-cng-support-1.8/cel/cel_pgsql.c Thu Jan 9 09:23:31 2014
@@ -334,11 +334,12 @@
static int my_unload_module(void)
{
struct columns *current;
- AST_RWLIST_WRLOCK(&psql_columns);
+
if (event_sub) {
event_sub = ast_event_unsubscribe(event_sub);
- event_sub = NULL;
- }
+ }
+
+ AST_RWLIST_WRLOCK(&psql_columns);
if (conn) {
PQfinish(conn);
conn = NULL;
@@ -541,6 +542,10 @@
return AST_MODULE_LOAD_SUCCESS;
}
+ if (reload) {
+ my_unload_module();
+ }
+
process_my_load_module(cfg);
ast_config_destroy(cfg);
@@ -561,7 +566,6 @@
static int reload(void)
{
- my_unload_module();
return my_load_module(1);
}
Modified: team/oej/roibos-cng-support-1.8/channels/chan_dahdi.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/roibos-cng-support-1.8/channels/chan_dahdi.c?view=diff&rev=405211&r1=405210&r2=405211
==============================================================================
--- team/oej/roibos-cng-support-1.8/channels/chan_dahdi.c (original)
+++ team/oej/roibos-cng-support-1.8/channels/chan_dahdi.c Thu Jan 9 09:23:31 2014
@@ -718,9 +718,9 @@
struct dahdi_pvt *oprpeer; /*!< "Operator Services" peer tech_pvt ptr */
/*! \brief Amount of gain to increase during caller id */
float cid_rxgain;
- /*! \brief Rx gain set by chan_dahdi.conf */
+ /*! \brief Software Rx gain set by chan_dahdi.conf */
float rxgain;
- /*! \brief Tx gain set by chan_dahdi.conf */
+ /*! \brief Software Tx gain set by chan_dahdi.conf */
float txgain;
float txdrc; /*!< Dynamic Range Compression factor. a number between 1 and 6ish */
@@ -1747,11 +1747,8 @@
* a failure and die, and returning 2 means no event was received. */
res = read(p->subs[index].dfd, buf, sizeof(buf));
if (res < 0) {
- if (errno != ELAST) {
- ast_log(LOG_WARNING, "read returned error: %s\n", strerror(errno));
- callerid_free(p->cs);
- return -1;
- }
+ ast_log(LOG_WARNING, "read returned error: %s\n", strerror(errno));
+ return -1;
}
if (analog_p->ringt > 0) {
@@ -11709,6 +11706,11 @@
return NULL;
}
+static void monitor_pfds_clean(void *arg) {
+ struct pollfd **pfds = arg;
+ ast_free(*pfds);
+}
+
static void *do_monitor(void *data)
{
int count, res, res2, spoint, pollres=0;
@@ -11732,6 +11734,7 @@
#endif
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL);
+ pthread_cleanup_push(monitor_pfds_clean, &pfds);
for (;;) {
/* Lock the interface list */
ast_mutex_lock(&iflock);
@@ -11988,6 +11991,7 @@
ast_mutex_unlock(&iflock);
}
/* Never reached */
+ pthread_cleanup_pop(1);
return NULL;
}
@@ -15257,8 +15261,8 @@
static char *dahdi_show_channels(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
-#define FORMAT "%7s %-10.10s %-15.15s %-10.10s %-20.20s %-10.10s %-10.10s\n"
-#define FORMAT2 "%7s %-10.10s %-15.15s %-10.10s %-20.20s %-10.10s %-10.10s\n"
+#define FORMAT "%7s %-15.15s %-15.15s %-10.10s %-20.20s %-10.10s %-10.10s\n"
+#define FORMAT2 "%7s %-15.15s %-15.15s %-10.10s %-20.20s %-10.10s %-10.10s\n"
[... 5841 lines stripped ...]
More information about the asterisk-commits
mailing list