[svn-commits] dvossel: branch group/aoc r252527 - in /team/group/aoc: ./ addons/ addons/ooh...
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Mon Mar 15 14:37:06 CDT 2010
Author: dvossel
Date: Mon Mar 15 14:37:00 2010
New Revision: 252527
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=252527
Log:
automerge conflict resolution
Added:
team/group/aoc/contrib/init.d/org.asterisk.asterisk.plist
- copied unchanged from r252488, trunk/contrib/init.d/org.asterisk.asterisk.plist
team/group/aoc/tests/test_time.c
- copied unchanged from r252488, trunk/tests/test_time.c
Modified:
team/group/aoc/ (props changed)
team/group/aoc/Makefile
team/group/aoc/addons/chan_ooh323.c
team/group/aoc/addons/ooh323c/src/ooCalls.h
team/group/aoc/addons/ooh323c/src/ooSocket.c
team/group/aoc/addons/ooh323c/src/ooh245.c
team/group/aoc/addons/ooh323c/src/ooh245.h
team/group/aoc/addons/ooh323c/src/ooh323.c
team/group/aoc/addons/ooh323c/src/ooq931.c
team/group/aoc/addons/ooh323c/src/ootypes.h
team/group/aoc/cdr/cdr_sqlite3_custom.c
team/group/aoc/cel/cel_sqlite3_custom.c
team/group/aoc/channels/chan_dahdi.c
team/group/aoc/channels/chan_h323.c
team/group/aoc/channels/chan_mgcp.c
team/group/aoc/channels/chan_sip.c
team/group/aoc/channels/chan_skinny.c
team/group/aoc/channels/sip/include/sip.h
team/group/aoc/codecs/gsm/Makefile
team/group/aoc/configs/chan_ooh323.conf.sample
team/group/aoc/configs/sip.conf.sample
team/group/aoc/include/asterisk/frame.h
team/group/aoc/include/asterisk/rtp_engine.h
team/group/aoc/main/app.c
team/group/aoc/main/asterisk.c
team/group/aoc/main/channel.c
team/group/aoc/main/rtp_engine.c
team/group/aoc/res/res_rtp_asterisk.c
Propchange: team/group/aoc/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Propchange: team/group/aoc/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Mon Mar 15 14:37:00 2010
@@ -1,1 +1,1 @@
-/trunk:1-252001
+/trunk:1-252526
Modified: team/group/aoc/Makefile
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/Makefile?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/Makefile (original)
+++ team/group/aoc/Makefile Mon Mar 15 14:37:00 2010
@@ -851,6 +851,8 @@
elif [ -f /etc/arch-release -o -f /etc/arch-release ]; then \
cat contrib/init.d/rc.archlinux.asterisk | sed 's|__ASTERISK_ETC_DIR__|$(ASTETCDIR)|;s|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > $(DESTDIR)/etc/rc.d/asterisk ;\
chmod 755 $(DESTDIR)/etc/rc.d/asterisk;\
+ elif [ -d $(DESTDIR)/Library/LaunchDaemons -a ! -f $(DESTDIR)/Library/LaunchDaemons/org.asterisk.asterisk.plist ]; then \
+ $(INSTALL) -m 644 contrib/init.d/org.asterisk.asterisk.plist $(DESTDIR)/Library/LaunchDaemons/org.asterisk.asterisk.plist; \
elif [ -f /etc/slackware-version ]; then \
echo "Slackware is not currently supported, although an init script does exist for it."; \
else \
Modified: team/group/aoc/addons/chan_ooh323.c
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/addons/chan_ooh323.c?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/addons/chan_ooh323.c (original)
+++ team/group/aoc/addons/chan_ooh323.c Mon Mar 15 14:37:00 2010
@@ -187,6 +187,7 @@
struct ast_dsp *vad;
struct OOH323Regex *rtpmask; /* rtp ip regexp */
char rtpmaskstr[120];
+ int rtdrcount, rtdrinterval; /* roundtripdelayreq */
struct ooh323_pvt *next; /* Next entity */
} *iflist = NULL;
@@ -212,6 +213,7 @@
char mIP[20];
struct OOH323Regex *rtpmask;
char rtpmaskstr[120];
+ int rtdrcount, rtdrinterval;
struct ooh323_user *next;
};
@@ -238,6 +240,7 @@
int rtptimeout;
struct OOH323Regex *rtpmask;
char rtpmaskstr[120];
+ int rtdrcount,rtdrinterval;
struct ooh323_peer *next;
};
@@ -302,6 +305,7 @@
static int gOutgoingLimit = 1024;
OOBOOL gH323Debug = FALSE;
static int gTRCLVL = OOTRCLVLERR;
+static int gRTDRCount = 0, gRTDRInterval = 0;
static int t35countrycode = 0;
static int t35extensions = 0;
@@ -502,6 +506,8 @@
pvt->faxmode = 0;
pvt->t38support = gT38Support;
pvt->rtptimeout = gRTPTimeout;
+ pvt->rtdrinterval = gRTDRInterval;
+ pvt->rtdrcount = gRTDRCount;
pvt->call_reference = callref;
if (callToken)
@@ -627,6 +633,12 @@
p->rtpmask = peer->rtpmask;
ast_copy_string(p->rtpmaskstr, peer->rtpmaskstr, sizeof(p->rtpmaskstr));
}
+
+ if (peer->rtdrinterval) {
+ p->rtdrinterval = peer->rtdrinterval;
+ p->rtdrcount = peer->rtdrcount;
+ }
+
ast_copy_string(p->accountcode, peer->accountcode, sizeof(p->accountcode));
p->amaflags = peer->amaflags;
} else {
@@ -635,6 +647,8 @@
p->t38support = gT38Support;
p->rtptimeout = gRTPTimeout;
p->capability = gCapability;
+ p->rtdrinterval = gRTDRInterval;
+ p->rtdrcount = gRTDRCount;
memcpy(&p->prefs, &gPrefs, sizeof(struct ast_codec_pref));
p->username = strdup(dest);
@@ -1206,10 +1220,12 @@
ooManualRingback(callToken);
}
break;
- case AST_CONTROL_SRCUPDATE:
- ast_rtp_instance_new_source(p->rtp);
+ case AST_CONTROL_SRCUPDATE:
+ ast_rtp_instance_update_source(p->rtp);
break;
-
+ case AST_CONTROL_SRCCHANGE:
+ ast_rtp_instance_change_source(p->rtp);
+ break;
case AST_CONTROL_CONNECTED_LINE:
if (gH323Debug)
ast_log(LOG_DEBUG, "Sending connected line info for %s (%s)\n",
@@ -1719,6 +1735,10 @@
ast_copy_string(p->rtpmaskstr, user->rtpmaskstr,
sizeof(p->rtpmaskstr));
}
+ if (user->rtdrcount > 0 && user->rtdrinterval > 0) {
+ p->rtdrcount = user->rtdrcount;
+ p->rtdrinterval = user->rtdrinterval;
+ }
if (user->incominglimit) user->inUse++;
ast_mutex_unlock(&user->lock);
} else {
@@ -2127,6 +2147,8 @@
} else if (!strcasecmp(v->name, "accountcode")) {
strncpy(user->accountcode, v->value,
sizeof(user->accountcode)-1);
+ } else if (!strcasecmp(v->name, "roundtrip")) {
+ sscanf(v->value, "%d,%d", &user->rtdrcount, &user->rtdrinterval);
} else if (!strcasecmp(v->name, "rtptimeout")) {
user->rtptimeout = atoi(v->value);
if (user->rtptimeout < 0)
@@ -2286,6 +2308,8 @@
tcodecs, 1);
} else if (!strcasecmp(v->name, "amaflags")) {
peer->amaflags = ast_cdr_amaflags2int(v->value);
+ } else if (!strcasecmp(v->name, "roundtrip")) {
+ sscanf(v->value, "%d,%d", &peer->rtdrcount, &peer->rtdrinterval);
} else if (!strcasecmp(v->name, "dtmfmode")) {
if (!strcasecmp(v->value, "rfc2833"))
peer->dtmfmode = H323_DTMF_RFC2833;
@@ -2429,6 +2453,8 @@
gRasGkMode = RasNoGatekeeper;
gGatekeeper[0] = '\0';
gRTPTimeout = 60;
+ gRTDRInterval = 0;
+ gRTDRCount = 0;
strcpy(gAccountcode, DEFAULT_H323ACCNT);
gFastStart = 1;
gTunneling = 1;
@@ -2486,6 +2512,8 @@
ooH323EpEnableH245Tunneling();
else
ooH323EpDisableH245Tunneling();
+ } else if (!strcasecmp(v->name, "roundtrip")) {
+ sscanf(v->value, "%d,%d", &gRTDRCount, &gRTDRInterval);
} else if (!strcasecmp(v->name, "trybemaster")) {
gBeMaster = ast_true(v->value);
if (gBeMaster)
@@ -2755,6 +2783,8 @@
ast_cli(a->fd, "%-15.15s%d\n", "rtptimeout: ", peer->rtptimeout);
if (peer->rtpmaskstr[0])
ast_cli(a->fd, "%-15.15s%s\n", "rtpmask: ", peer->rtpmaskstr);
+ if (peer->rtdrcount && peer->rtdrinterval)
+ ast_cli(a->fd, "%-15.15s%d,%d\n", "RoundTrip: ", peer->rtdrcount, peer->rtdrinterval);
ast_mutex_unlock(&peer->lock);
} else {
ast_cli(a->fd, "Peer %s not found\n", a->argv[3]);
@@ -2898,6 +2928,8 @@
if (user->rtpmaskstr[0])
ast_cli(a->fd, "%-15.15s%s\n", "rtpmask: ", user->rtpmaskstr);
ast_mutex_unlock(&user->lock);
+ if (user->rtdrcount && user->rtdrinterval)
+ ast_cli(a->fd, "%-15.15s%d,%d\n", "RoundTrip: ", user->rtdrcount, user->rtdrinterval);
} else {
ast_cli(a->fd, "User %s not found\n", a->argv[3]);
ast_cli(a->fd, "\n");
@@ -3064,6 +3096,9 @@
else if (gT38Support == T38_FAXGW)
ast_cli(a->fd, "%s\n", "faxgw/chan_sip compatible");
+ if (gRTDRCount && gRTDRInterval)
+ ast_cli(a->fd, "%-15.15s%d,%d\n", "RoundTrip: ", gRTDRCount, gRTDRInterval);
+
ast_cli(a->fd, "%-20s%ld\n", "Call counter: ", callnumber);
ast_cli(a->fd, "%-20s%s\n", "AccountCode: ", gAccountcode);
@@ -3807,6 +3842,13 @@
}
ast_rtp_instance_set_prop(p->rtp, AST_RTP_PROPERTY_RTCP, 1);
+ }
+
+ if (p->rtdrcount) {
+ if (gH323Debug)
+ ast_verbose("Setup RTDR info: %d, %d\n", p->rtdrinterval, p->rtdrcount);
+ call->rtdrInterval = p->rtdrinterval;
+ call->rtdrCount = p->rtdrcount;
}
Modified: team/group/aoc/addons/ooh323c/src/ooCalls.h
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/addons/ooh323c/src/ooCalls.h?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/addons/ooh323c/src/ooCalls.h (original)
+++ team/group/aoc/addons/ooh323c/src/ooCalls.h Mon Mar 15 14:37:00 2010
@@ -219,6 +219,8 @@
char rtpMaskStr[120];
char lastDTMF;
ASN1UINT nextDTMFstamp;
+ int rtdrInterval, rtdrCount; /* roundTripDelay interval and unreplied count */
+ ASN1UINT rtdrSend, rtdrRecv; /* last sended/replied RTD request */
void *usrData; /*!<User can set this to user specific data*/
struct OOH323CallData* next;
struct OOH323CallData* prev;
Modified: team/group/aoc/addons/ooh323c/src/ooSocket.c
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/addons/ooh323c/src/ooSocket.c?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/addons/ooh323c/src/ooSocket.c (original)
+++ team/group/aoc/addons/ooh323c/src/ooSocket.c Mon Mar 15 14:37:00 2010
@@ -611,6 +611,7 @@
struct ifconf ifc;
int ifNum;
OOInterface *pIf=NULL;
+ struct sockaddr_in sin;
OOTRACEDBGA1("Retrieving local interfaces\n");
if(ooSocketCreateUDP(&sock)!= ASN_OK)
@@ -686,7 +687,8 @@
memFreePtr(pctxt, pIf);
continue;
}
- strcpy(addr, ast_inet_ntoa(((struct sockaddr_in*)&ifReq.ifr_addr)->sin_addr));
+ memcpy(&sin, &ifReq.ifr_addr, sizeof(struct sockaddr_in));
+ strcpy(addr, ast_inet_ntoa(sin.sin_addr));
OOTRACEDBGA2("\tIP address is %s\n", addr);
pIf->addr = (char*)memAlloc(pctxt, strlen(addr)+1);
if(!pIf->addr)
@@ -709,7 +711,8 @@
memFreePtr(pctxt, pIf);
continue;
}
- strcpy(mask, ast_inet_ntoa(((struct sockaddr_in *)&ifReq.ifr_netmask)->sin_addr));
+ memcpy(&sin, &ifReq.ifr_netmask, sizeof(struct sockaddr_in));
+ strcpy(mask, ast_inet_ntoa(sin.sin_addr));
OOTRACEDBGA2("\tMask is %s\n", mask);
pIf->mask = (char*)memAlloc(pctxt, strlen(mask)+1);
if(!pIf->mask)
Modified: team/group/aoc/addons/ooh323c/src/ooh245.c
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/addons/ooh323c/src/ooh245.c?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/addons/ooh323c/src/ooh245.c (original)
+++ team/group/aoc/addons/ooh323c/src/ooh245.c Mon Mar 15 14:37:00 2010
@@ -2409,6 +2409,132 @@
return ret;
}
+int ooSendRoundTripDelayRequest(OOH323CallData *call)
+{
+ int ret=0;
+ H245Message *ph245msg=NULL;
+ H245RequestMessage *request = NULL;
+ OOCTXT *pctxt=NULL;
+ H245RoundTripDelayRequest *rtdr;
+ ooTimerCallback *cbData=NULL;
+
+ if (call->rtdrSend > call->rtdrRecv + call->rtdrCount) {
+ if(call->callState < OO_CALL_CLEAR) {
+ call->callState = OO_CALL_CLEAR;
+ call->callEndReason = OO_REASON_UNKNOWN;
+ call->q931cause = Q931RecoveryOnTimerExpiry;
+ }
+ return OO_FAILED;
+ }
+
+ ret = ooCreateH245Message(call, &ph245msg,
+ T_H245MultimediaSystemControlMessage_request);
+ if(ret != OO_OK)
+ {
+ OOTRACEERR3("ERROR:Memory allocation for RoundTripDelayResponse message "
+ "failed (%s, %s)\n", call->callType, call->callToken);
+ return OO_FAILED;
+ }
+
+ pctxt = call->msgctxt;
+ ph245msg->msgType = OORequestDelayRequest;
+ request = ph245msg->h245Msg.u.request;
+ request->t = T_H245RequestMessage_roundTripDelayRequest;
+ request->u.roundTripDelayRequest = (H245RoundTripDelayRequest *)ASN1MALLOC
+ (pctxt, sizeof(H245RoundTripDelayRequest));
+ if(!request->u.roundTripDelayRequest)
+ {
+ OOTRACEERR3("ERROR:Failed to allocate memory for H245RoundTripDelayRequest "
+ "message (%s, %s)\n", call->callType, call->callToken);
+ return OO_FAILED;
+ }
+ rtdr = request->u.roundTripDelayRequest;
+ memset(rtdr, 0, sizeof(H245RoundTripDelayRequest));
+ rtdr->sequenceNumber = ++call->rtdrSend;
+
+ OOTRACEDBGA3("Built RoundTripDelayRequest message (%s, %s)\n",
+ call->callType, call->callToken);
+ ret = ooSendH245Msg(call, ph245msg);
+ if(ret != OO_OK)
+ {
+ OOTRACEERR3("Error:Failed to enqueue RoundTripDelayRequest to outbound queue. (%s, %s)\n",
+ call->callType, call->callToken);
+ return OO_FAILED;
+ } else {
+ cbData = (ooTimerCallback*) memAlloc(call->pctxt,
+ sizeof(ooTimerCallback));
+ if(!cbData)
+ {
+ OOTRACEERR3("Error:Unable to allocate memory for timer callback data."
+ "(%s, %s)\n", call->callType, call->callToken);
+ return OO_FAILED;
+ }
+ cbData->call = call;
+ cbData->timerType = OO_RTD_TIMER;
+ if(!ooTimerCreate(call->pctxt, &call->timerList, &ooRTDTimerExpired,
+ call->rtdrInterval, cbData, FALSE))
+ {
+ OOTRACEERR3("Error:Unable to create RTDR timer. "
+ "(%s, %s)\n", call->callType, call->callToken);
+ memFreePtr(call->pctxt, cbData);
+ return OO_FAILED;
+ }
+
+ }
+
+ ooFreeH245Message(call, ph245msg);
+
+ return ret;
+}
+
+int ooOnReceivedRoundTripDelayRequest(OOH323CallData *call,
+ H245SequenceNumber sequenceNumber)
+{
+ int ret=0;
+ H245Message *ph245msg=NULL;
+ H245ResponseMessage *response = NULL;
+ OOCTXT *pctxt=NULL;
+ H245RoundTripDelayResponse *rtdr;
+
+ ret = ooCreateH245Message(call, &ph245msg,
+ T_H245MultimediaSystemControlMessage_response);
+ if(ret != OO_OK)
+ {
+ OOTRACEERR3("ERROR:Memory allocation for RoundTripDelayResponse message "
+ "failed (%s, %s)\n", call->callType, call->callToken);
+ return OO_FAILED;
+ }
+
+ pctxt = call->msgctxt;
+ ph245msg->msgType = OORequestDelayResponse;
+ response = ph245msg->h245Msg.u.response;
+ response->t = T_H245ResponseMessage_roundTripDelayResponse;
+ response->u.roundTripDelayResponse = (H245RoundTripDelayResponse *)ASN1MALLOC
+ (pctxt, sizeof(H245RoundTripDelayResponse));
+ if(!response->u.roundTripDelayResponse)
+ {
+ OOTRACEERR3("ERROR:Failed to allocate memory for H245RoundTripDelayResponse "
+ "message (%s, %s)\n", call->callType, call->callToken);
+ return OO_FAILED;
+ }
+ rtdr = response->u.roundTripDelayResponse;
+ memset(rtdr, 0, sizeof(H245RoundTripDelayResponse));
+ rtdr->sequenceNumber = sequenceNumber;
+
+ OOTRACEDBGA3("Built RoundTripDelayResponse message (%s, %s)\n",
+ call->callType, call->callToken);
+ ret = ooSendH245Msg(call, ph245msg);
+ if(ret != OO_OK)
+ {
+ OOTRACEERR3("Error:Failed to enqueue RoundTripDelayResponse to outbound queue. (%s, %s)\n",
+ call->callType, call->callToken);
+ }
+
+ ooFreeH245Message(call, ph245msg);
+
+ return ret;
+}
+
/*
We clear channel here. Ideally the remote endpoint should send
CloseLogicalChannel and then the channel should be cleared. But there's no
@@ -2609,6 +2735,11 @@
ooOnReceivedRequestChannelClose(call,
request->u.requestChannelClose);
break;
+ case T_H245RequestMessage_roundTripDelayRequest:
+ OOTRACEINFO4("Received roundTripDelayRequest - %d (%s, %s)\n",
+ request->u.roundTripDelayRequest->sequenceNumber, call->callType, call->callToken);
+ ooOnReceivedRoundTripDelayRequest(call, request->u.roundTripDelayRequest->sequenceNumber);
+ break;
default:
;
} /* End of Request Message */
@@ -2833,6 +2964,11 @@
ooOnReceivedRequestChannelCloseReject(call,
response->u.requestChannelCloseReject);
break;
+ case T_H245ResponseMessage_roundTripDelayResponse:
+ OOTRACEINFO4("Received roundTripDelayResponse - %d (%s, %s)\n",
+ response->u.roundTripDelayResponse->sequenceNumber, call->callType, call->callToken);
+ call->rtdrRecv = response->u.roundTripDelayResponse->sequenceNumber;
+ break;
default:
;
}
@@ -3932,6 +4068,18 @@
return OO_OK;
}
+int ooRTDTimerExpired(void *data)
+{
+ ooTimerCallback *cbData = (ooTimerCallback*)data;
+ OOH323CallData *call = cbData->call;
+ OOTRACEINFO3("Time to send new RTD request. (%s, %s)\n",
+ call->callType, call->callToken);
+ ASN1MEMFREEPTR(call->pctxt, cbData);
+ ooSendRoundTripDelayRequest(call);
+ return OO_OK;
+
+}
+
int ooOpenLogicalChannelTimerExpired(void *pdata)
{
ooTimerCallback *cbData = (ooTimerCallback*)pdata;
Modified: team/group/aoc/addons/ooh323c/src/ooh245.h
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/addons/ooh323c/src/ooh245.h?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/addons/ooh323c/src/ooh245.h (original)
+++ team/group/aoc/addons/ooh323c/src/ooh245.h Mon Mar 15 14:37:00 2010
@@ -631,6 +631,7 @@
/**
* @}
*/
+int ooRTDTimerExpired(void *pdata);
int ooHandleRequestMode(OOH323CallData* call,
H245RequestMode *requestMode);
@@ -642,6 +643,12 @@
H245SequenceNumber sequenceNumber);
void ooOnReceivedRequestModeAck(OOH323CallData* call, H245RequestModeAck * requestModeAck);
+
+int ooOnReceivedRoundTripDelayRequest(OOH323CallData *call,
+ H245SequenceNumber sequenceNumber);
+
+int ooSendRoundTripDelayRequest(OOH323CallData *call);
+
#ifdef __cplusplus
}
Modified: team/group/aoc/addons/ooh323c/src/ooh323.c
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/addons/ooh323c/src/ooh323.c?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/addons/ooh323c/src/ooh323.c (original)
+++ team/group/aoc/addons/ooh323c/src/ooh323.c Mon Mar 15 14:37:00 2010
@@ -1542,6 +1542,10 @@
}
}
+ }
+ call->callState = OO_CALL_CONNECTED;
+ if (call->rtdrCount > 0 && call->rtdrInterval > 0) {
+ return ooSendRoundTripDelayRequest(call);
}
return OO_OK;
}
@@ -2239,7 +2243,8 @@
}
switch(pAlias->type)
{
- case T_H225AliasAddress_dialedDigits:
+ /* Don't populate DialedDigits as alias they populate as prefixes
+ case T_H225AliasAddress_dialedDigits:
pAliasEntry->t = T_H225AliasAddress_dialedDigits;
pAliasEntry->u.dialedDigits = (ASN1IA5String)memAlloc(pctxt,
strlen(pAlias->value)+1);
@@ -2252,7 +2257,7 @@
}
strcpy(*(char**)&pAliasEntry->u.dialedDigits, pAlias->value);
bValid = TRUE;
- break;
+ break; */
case T_H225AliasAddress_h323_ID:
pAliasEntry->t = T_H225AliasAddress_h323_ID;
pAliasEntry->u.h323_ID.nchars = strlen(pAlias->value);
Modified: team/group/aoc/addons/ooh323c/src/ooq931.c
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/addons/ooh323c/src/ooq931.c?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/addons/ooh323c/src/ooq931.c (original)
+++ team/group/aoc/addons/ooh323c/src/ooq931.c Mon Mar 15 14:37:00 2010
@@ -2003,6 +2003,11 @@
/* memReset(&gH323ep.msgctxt); */
memReset(call->msgctxt);
+ call->callState = OO_CALL_CONNECTED;
+
+ if (call->rtdrCount > 0 && call->rtdrInterval > 0) {
+ return ooSendRoundTripDelayRequest(call);
+ }
return OO_OK;
}
@@ -3669,7 +3674,9 @@
"OOUserInputIndication",
"OORequestModeAck",
"OORequestModeReject",
- "OORequestMode"
+ "OORequestMode",
+ "OORequestDelayResponse",
+ "OORequestDelayRequest"
};
int idx = msgType - OO_MSGTYPE_MIN;
return ooUtilsGetText (idx, msgTypeText, OONUMBEROF(msgTypeText));
Modified: team/group/aoc/addons/ooh323c/src/ootypes.h
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/addons/ooh323c/src/ootypes.h?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/addons/ooh323c/src/ootypes.h (original)
+++ team/group/aoc/addons/ooh323c/src/ootypes.h Mon Mar 15 14:37:00 2010
@@ -188,8 +188,10 @@
#define OORequestModeAck 131
#define OORequestModeReject 132
#define OORequestMode 133
-
-#define OO_MSGTYPE_MAX 133
+#define OORequestDelayResponse 134
+#define OORequestDelayRequest 135
+
+#define OO_MSGTYPE_MAX 135
/* Timer types */
#define OO_CALLESTB_TIMER (1<<0)
@@ -200,6 +202,7 @@
#define OO_RCC_TIMER (1<<5)
#define OO_SESSION_TIMER (1<<6)
#define OO_H245CONNECT_TIMER (1<<7)
+#define OO_RTD_TIMER (1<<8)
/** Maximum length for received messages */
#define MAXMSGLEN 4096
Modified: team/group/aoc/cdr/cdr_sqlite3_custom.c
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/cdr/cdr_sqlite3_custom.c?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/cdr/cdr_sqlite3_custom.c (original)
+++ team/group/aoc/cdr/cdr_sqlite3_custom.c Mon Mar 15 14:37:00 2010
@@ -219,7 +219,7 @@
}
}
-static int sqlite3_log(struct ast_cdr *cdr)
+static int write_cdr(struct ast_cdr *cdr)
{
int res = 0;
char *error = NULL;
@@ -329,7 +329,7 @@
}
}
- res = ast_cdr_register(name, desc, sqlite3_log);
+ res = ast_cdr_register(name, desc, write_cdr);
if (res) {
ast_log(LOG_ERROR, "Unable to register custom SQLite3 CDR handling\n");
free_config(0);
Modified: team/group/aoc/cel/cel_sqlite3_custom.c
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/cel/cel_sqlite3_custom.c?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/cel/cel_sqlite3_custom.c (original)
+++ team/group/aoc/cel/cel_sqlite3_custom.c Mon Mar 15 14:37:00 2010
@@ -226,7 +226,7 @@
}
}
-static void sqlite3_log(const struct ast_event *event, void *userdata)
+static void write_cel(const struct ast_event *event, void *userdata)
{
char *error = NULL;
char *sql = NULL;
@@ -336,7 +336,7 @@
}
}
- event_sub = ast_event_subscribe(AST_EVENT_CEL, sqlite3_log, "CEL sqlite3 custom backend", NULL, AST_EVENT_IE_END);
+ event_sub = ast_event_subscribe(AST_EVENT_CEL, write_cel, "CEL sqlite3 custom backend", NULL, AST_EVENT_IE_END);
if (!event_sub) {
ast_log(LOG_ERROR, "Unable to register custom SQLite3 CEL handling\n");
free_config();
Modified: team/group/aoc/channels/chan_dahdi.c
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/channels/chan_dahdi.c?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/channels/chan_dahdi.c (original)
+++ team/group/aoc/channels/chan_dahdi.c Mon Mar 15 14:37:00 2010
@@ -16595,6 +16595,8 @@
confp->mfcr2.forced_release = ast_true(v->value) ? 1 : 0;
} else if (!strcasecmp(v->name, "mfcr2_immediate_accept")) {
confp->mfcr2.immediate_accept = ast_true(v->value) ? 1 : 0;
+ } else if (!strcasecmp(v->name, "mfcr2_skip_category")) {
+ confp->mfcr2.skip_category_request = ast_true(v->value) ? 1 : 0;
} else if (!strcasecmp(v->name, "mfcr2_call_files")) {
confp->mfcr2.call_files = ast_true(v->value) ? 1 : 0;
} else if (!strcasecmp(v->name, "mfcr2_max_ani")) {
Modified: team/group/aoc/channels/chan_h323.c
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/channels/chan_h323.c?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/channels/chan_h323.c (original)
+++ team/group/aoc/channels/chan_h323.c Mon Mar 15 14:37:00 2010
@@ -914,7 +914,11 @@
res = 0;
break;
case AST_CONTROL_SRCUPDATE:
- ast_rtp_instance_new_source(pvt->rtp);
+ ast_rtp_instance_update_source(pvt->rtp);
+ res = 0;
+ break;
+ case AST_CONTROL_SRCCHANGE:
+ ast_rtp_instance_change_source(pvt->rtp);
res = 0;
break;
case AST_CONTROL_PROCEEDING:
Modified: team/group/aoc/channels/chan_mgcp.c
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/channels/chan_mgcp.c?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/channels/chan_mgcp.c (original)
+++ team/group/aoc/channels/chan_mgcp.c Mon Mar 15 14:37:00 2010
@@ -1456,7 +1456,10 @@
ast_moh_stop(ast);
break;
case AST_CONTROL_SRCUPDATE:
- ast_rtp_instance_new_source(sub->rtp);
+ ast_rtp_instance_update_source(sub->rtp);
+ break;
+ case AST_CONTROL_SRCCHANGE:
+ ast_rtp_instance_change_source(sub->rtp);
break;
case AST_CONTROL_PROGRESS:
case AST_CONTROL_PROCEEDING:
Modified: team/group/aoc/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/channels/chan_sip.c?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/channels/chan_sip.c (original)
+++ team/group/aoc/channels/chan_sip.c Mon Mar 15 14:37:00 2010
@@ -3906,7 +3906,6 @@
if (dialog->rtp) { /* Audio */
ast_rtp_instance_set_prop(dialog->rtp, AST_RTP_PROPERTY_DTMF, ast_test_flag(&dialog->flags[0], SIP_DTMF) == SIP_DTMF_RFC2833);
ast_rtp_instance_set_prop(dialog->rtp, AST_RTP_PROPERTY_DTMF_COMPENSATE, ast_test_flag(&dialog->flags[1], SIP_PAGE2_RFC2833_COMPENSATE));
- ast_rtp_instance_set_prop(dialog->rtp, AST_RTP_PROPERTY_CONSTANT_SSRC, ast_test_flag(&dialog->flags[1], SIP_PAGE2_CONSTANT_SSRC));
ast_rtp_instance_set_timeout(dialog->rtp, peer->rtptimeout);
ast_rtp_instance_set_hold_timeout(dialog->rtp, peer->rtpholdtimeout);
/* Set Frame packetization */
@@ -3916,7 +3915,6 @@
if (dialog->vrtp) { /* Video */
ast_rtp_instance_set_timeout(dialog->vrtp, peer->rtptimeout);
ast_rtp_instance_set_hold_timeout(dialog->vrtp, peer->rtpholdtimeout);
- ast_rtp_instance_set_prop(dialog->vrtp, AST_RTP_PROPERTY_CONSTANT_SSRC, ast_test_flag(&dialog->flags[1], SIP_PAGE2_CONSTANT_SSRC));
}
if (dialog->trtp) { /* Realtime text */
ast_rtp_instance_set_timeout(dialog->trtp, peer->rtptimeout);
@@ -4973,7 +4971,7 @@
ast_setstate(ast, AST_STATE_UP);
ast_debug(1, "SIP answering channel: %s\n", ast->name);
- ast_rtp_instance_new_source(p->rtp);
+ ast_rtp_instance_update_source(p->rtp);
res = transmit_response_with_sdp(p, "200 OK", &p->initreq, XMIT_CRITICAL, FALSE, TRUE);
ast_set_flag(&p->flags[1], SIP_PAGE2_DIALOG_ESTABLISHED);
}
@@ -5005,7 +5003,7 @@
if ((ast->_state != AST_STATE_UP) &&
!ast_test_flag(&p->flags[0], SIP_PROGRESS_SENT) &&
!ast_test_flag(&p->flags[0], SIP_OUTGOING)) {
- ast_rtp_instance_new_source(p->rtp);
+ ast_rtp_instance_update_source(p->rtp);
if (!global_prematuremediafilter) {
p->invitestate = INV_EARLY_MEDIA;
transmit_provisional_response(p, "183 Session Progress", &p->initreq, TRUE);
@@ -5336,11 +5334,11 @@
res = -1;
break;
case AST_CONTROL_HOLD:
- ast_rtp_instance_new_source(p->rtp);
+ ast_rtp_instance_update_source(p->rtp);
ast_moh_start(ast, data, p->mohinterpret);
break;
case AST_CONTROL_UNHOLD:
- ast_rtp_instance_new_source(p->rtp);
+ ast_rtp_instance_update_source(p->rtp);
ast_moh_stop(ast);
break;
case AST_CONTROL_VIDUPDATE: /* Request a video frame update */
@@ -5359,7 +5357,10 @@
}
break;
case AST_CONTROL_SRCUPDATE:
- ast_rtp_instance_new_source(p->rtp);
+ ast_rtp_instance_update_source(p->rtp);
+ break;
+ case AST_CONTROL_SRCCHANGE:
+ ast_rtp_instance_change_source(p->rtp);
break;
case AST_CONTROL_CONNECTED_LINE:
update_connectedline(p, data, datalen);
@@ -12104,15 +12105,30 @@
/* URI not found */
if (res == AUTH_PEER_NOT_DYNAMIC) {
transmit_response(p, "403 Forbidden", &p->initreq);
- if (global_authfailureevents)
- manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "ChannelType: SIP\r\nPeer: SIP/%s\r\nPeerStatus: Rejected\r\nCause: AUTH_PEER_NOT_DYNAMIC\r\nAddress: %s\r\nPort: %d\r\n",
+ if (global_authfailureevents) {
+ manager_event(EVENT_FLAG_SYSTEM, "PeerStatus",
+ "ChannelType: SIP\r\n"
+ "Peer: SIP/%s\r\n"
+ "PeerStatus: Rejected\r\n"
+ "Cause: AUTH_PEER_NOT_DYNAMIC\r\n"
+ "Address: %s\r\n"
+ "Port: %d\r\n",
name, ast_inet_ntoa(sin->sin_addr), ntohs(sin->sin_port));
}
- else
+ } else {
transmit_response(p, "404 Not found", &p->initreq);
- if (global_authfailureevents)
- manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "ChannelType: SIP\r\nPeer: SIP/%s\r\nPeerStatus: Rejected\r\nCause: %s\r\nAddress: %s\r\nPort: %d\r\n",
- name, (res == AUTH_USERNAME_MISMATCH) ? "AUTH_USERNAME_MISMATCH" : "URI_NOT_FOUND", ast_inet_ntoa(sin->sin_addr), ntohs(sin->sin_port));
+ if (global_authfailureevents) {
+ manager_event(EVENT_FLAG_SYSTEM, "PeerStatus",
+ "ChannelType: SIP\r\n"
+ "Peer: SIP/%s\r\n"
+ "PeerStatus: Rejected\r\n"
+ "Cause: %s\r\n"
+ "Address: %s\r\n"
+ "Port: %d\r\n",
+ name, (res == AUTH_USERNAME_MISMATCH) ? "AUTH_USERNAME_MISMATCH" : "URI_NOT_FOUND",
+ ast_inet_ntoa(sin->sin_addr), ntohs(sin->sin_port));
+ }
+ }
}
break;
case AUTH_BAD_TRANSPORT:
@@ -19297,12 +19313,6 @@
res = -1;
goto request_invite_cleanup;
}
- if (p->rtp) {
- ast_rtp_instance_set_prop(p->rtp, AST_RTP_PROPERTY_CONSTANT_SSRC, ast_test_flag(&p->flags[1], SIP_PAGE2_CONSTANT_SSRC));
- }
- if (p->vrtp) {
- ast_rtp_instance_set_prop(p->vrtp, AST_RTP_PROPERTY_CONSTANT_SSRC, ast_test_flag(&p->flags[1], SIP_PAGE2_CONSTANT_SSRC));
- }
} else { /* No SDP in invite, call control session */
p->jointcapability = p->capability;
ast_debug(2, "No SDP in Invite, third party call control\n");
@@ -22661,9 +22671,6 @@
} else if (!strcasecmp(v->name, "buggymwi")) {
ast_set_flag(&mask[1], SIP_PAGE2_BUGGY_MWI);
ast_set2_flag(&flags[1], ast_true(v->value), SIP_PAGE2_BUGGY_MWI);
- } else if (!strcasecmp(v->name, "constantssrc")) {
- ast_set_flag(&mask[1], SIP_PAGE2_CONSTANT_SSRC);
- ast_set2_flag(&flags[1], ast_true(v->value), SIP_PAGE2_CONSTANT_SSRC);
} else
res = 0;
Modified: team/group/aoc/channels/chan_skinny.c
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/channels/chan_skinny.c?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/channels/chan_skinny.c (original)
+++ team/group/aoc/channels/chan_skinny.c Mon Mar 15 14:37:00 2010
@@ -4304,7 +4304,10 @@
case AST_CONTROL_PROCEEDING:
break;
case AST_CONTROL_SRCUPDATE:
- ast_rtp_instance_new_source(sub->rtp);
+ ast_rtp_instance_update_source(sub->rtp);
+ break;
+ case AST_CONTROL_SRCCHANGE:
+ ast_rtp_instance_change_source(sub->rtp);
break;
case AST_CONTROL_CONNECTED_LINE:
update_connectedline(sub, data, datalen);
Modified: team/group/aoc/channels/sip/include/sip.h
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/channels/sip/include/sip.h?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/channels/sip/include/sip.h (original)
+++ team/group/aoc/channels/sip/include/sip.h Mon Mar 15 14:37:00 2010
@@ -308,7 +308,6 @@
#define SIP_PAGE2_Q850_REASON (1 << 4) /*!< DP: Get/send cause code via Reason header */
/* Space for addition of other realtime flags in the future */
-#define SIP_PAGE2_CONSTANT_SSRC (1 << 7) /*!< GDP: Don't change SSRC on reinvite */
#define SIP_PAGE2_SYMMETRICRTP (1 << 8) /*!< GDP: Whether symmetric RTP is enabled or not */
#define SIP_PAGE2_STATECHANGEQUEUE (1 << 9) /*!< D: Unsent state pending change exists */
@@ -346,7 +345,7 @@
SIP_PAGE2_VIDEOSUPPORT | SIP_PAGE2_T38SUPPORT | SIP_PAGE2_RFC2833_COMPENSATE | \
SIP_PAGE2_BUGGY_MWI | SIP_PAGE2_TEXTSUPPORT | SIP_PAGE2_FAX_DETECT | \
SIP_PAGE2_UDPTL_DESTINATION | SIP_PAGE2_VIDEOSUPPORT_ALWAYS | SIP_PAGE2_PREFERRED_CODEC | \
- SIP_PAGE2_RPID_IMMEDIATE | SIP_PAGE2_RPID_UPDATE | SIP_PAGE2_SYMMETRICRTP | SIP_PAGE2_CONSTANT_SSRC |\
+ SIP_PAGE2_RPID_IMMEDIATE | SIP_PAGE2_RPID_UPDATE | SIP_PAGE2_SYMMETRICRTP |\
SIP_PAGE2_Q850_REASON)
Modified: team/group/aoc/codecs/gsm/Makefile
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/codecs/gsm/Makefile?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/codecs/gsm/Makefile (original)
+++ team/group/aoc/codecs/gsm/Makefile Mon Mar 15 14:37:00 2010
@@ -37,17 +37,19 @@
######### ppro's, etc, as well as the AMD K6 and K7. The compile will
######### probably require gcc.
-ifeq (, $(findstring $(OSARCH) , Darwin SunOS ))
-ifeq (, $(findstring $(PROC) , x86_64 amd64 ultrasparc sparc64 arm armv5b armeb ppc powerpc ppc64 ia64 s390 bfin mipsel mips))
-ifeq (, $(findstring $(shell uname -m) , ppc ppc64 alpha armv4l s390 ))
-ifeq ($(shell /usr/bin/sw_vers -productVersion | cut -c1-4),10.6)
-# Wow... Snow Leopard is BROKEN!
-OPTIMIZE+=-mtune=native
+ifeq (,$(findstring $(OSARCH),Darwin SunOS))
+ ifeq (,$(strip $(findstring $(PROC) ,"x86_64 amd64 ultrasparc sparc64 arm armv5b armeb ppc powerpc ppc64 ia64 s390 bfin mipsel mips ")))
+ ifeq (,$(strip $(findstring $(shell uname -m) ,"ppc ppc64 alpha armv4l s390 ")))
+ OPTIMIZE+=-march=$(PROC)
+ endif
+ endif
else
-OPTIMIZE+=-march=$(PROC)
-endif
-endif
-endif
+ ifneq (,$(findstring $(OSARCH),Darwin))
+ ifeq ($(shell /usr/bin/sw_vers -productVersion | cut -c1-4),10.6)
+ # Snow Leopard reports i386, even though it's really x86_64
+ OPTIMIZE+=-mtune=native
+ endif
+ endif
endif
#The problem with sparc is the best stuff is in newer versions of gcc (post 3.0) only.
Modified: team/group/aoc/configs/chan_ooh323.conf.sample
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/configs/chan_ooh323.conf.sample?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/configs/chan_ooh323.conf.sample (original)
+++ team/group/aoc/configs/chan_ooh323.conf.sample Mon Mar 15 14:37:00 2010
@@ -116,6 +116,11 @@
; h245alphanumeric, h245signal.
;Default - rfc 2833
dtmfmode=rfc2833
+;
+; round trip delay request, default = 0,0 (not send)
+; x - count of unreplied requests before hangup, y - interval in sec between requests
+;
+;roundtrip=x,y
; User/peer/friend definitions:
; User config options Peer config options
Modified: team/group/aoc/configs/sip.conf.sample
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/configs/sip.conf.sample?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/configs/sip.conf.sample (original)
+++ team/group/aoc/configs/sip.conf.sample Mon Mar 15 14:37:00 2010
@@ -788,8 +788,6 @@
; also contains the Asterisk version.
;sdpowner=root ; Allows you to change the username field in the SDP owner string, (o=)
; This field MUST NOT contain spaces
-
-;constantssrc=yes ; Don't change the RTP SSRC when our media stream changes
;----------------------------------------- REALTIME SUPPORT ------------------------
; For additional information on ARA, the Asterisk Realtime Architecture,
@@ -1009,7 +1007,6 @@
; timerb
; qualifyfreq
; t38pt_usertpsource
-; constantssrc
; contactpermit ; Limit what a host may register as (a neat trick
; contactdeny ; is to register at the same IP as a SIP provider,
; ; then call oneself, and get redirected to that
Modified: team/group/aoc/include/asterisk/frame.h
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/include/asterisk/frame.h?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/include/asterisk/frame.h (original)
+++ team/group/aoc/include/asterisk/frame.h Mon Mar 15 14:37:00 2010
@@ -85,7 +85,8 @@
* \arg \b HOLD Call is placed on hold
* \arg \b UNHOLD Call is back from hold
* \arg \b VIDUPDATE Video update requested
- * \arg \b SRCUPDATE The source of media has changed
+ * \arg \b SRCUPDATE The source of media has changed (RTP marker bit must change)
+ * \arg \b SRCCHANGE Media source has changed (RTP marker bit and SSRC must change)
* \arg \b CONNECTED_LINE Connected line has changed
* \arg \b REDIRECTING Call redirecting information has changed.
*/
@@ -323,7 +324,8 @@
AST_CONTROL_CONNECTED_LINE = 22,/*!< Indicate connected line has changed */
AST_CONTROL_REDIRECTING = 23, /*!< Indicate redirecting id has changed */
AST_CONTROL_T38_PARAMETERS = 24, /*! T38 state change request/notification with parameters */
- AST_CONTROL_AOC = 25, /*!< Advice of Charge with encoded generic AOC payload */
+ AST_CONTROL_SRCCHANGE = 25, /*!< Media source has changed and requires a new RTP SSRC */
+ AST_CONTROL_AOC = 26, /*!< Advice of Charge with encoded generic AOC payload */
};
enum ast_control_t38 {
Modified: team/group/aoc/include/asterisk/rtp_engine.h
URL: http://svnview.digium.com/svn/asterisk/team/group/aoc/include/asterisk/rtp_engine.h?view=diff&rev=252527&r1=252526&r2=252527
==============================================================================
--- team/group/aoc/include/asterisk/rtp_engine.h (original)
+++ team/group/aoc/include/asterisk/rtp_engine.h Mon Mar 15 14:37:00 2010
@@ -92,8 +92,6 @@
AST_RTP_PROPERTY_STUN,
/*! Enable RTCP support */
AST_RTP_PROPERTY_RTCP,
- /*! Don't force a new SSRC on new source */
- AST_RTP_PROPERTY_CONSTANT_SSRC,
/*!
* \brief Maximum number of RTP properties supported
@@ -322,10 +320,10 @@
int (*dtmf_begin)(struct ast_rtp_instance *instance, char digit);
/*! Callback for stopping RFC2833 DTMF transmission */
int (*dtmf_end)(struct ast_rtp_instance *instance, char digit);
- /*! Callback to indicate that a new source of media has come in */
- void (*new_source)(struct ast_rtp_instance *instance);
- /*! Callback to tell new_source not to change SSRC */
- void (*constant_ssrc_set)(struct ast_rtp_instance *instance);
[... 347 lines stripped ...]
More information about the svn-commits
mailing list