[asterisk-commits] dvossel: branch group/aoc r252527 - in /team/group/aoc: ./ addons/ addons/ooh...

SVN commits to the Asterisk project asterisk-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 asterisk-commits mailing list