From 1aba4079bcb5c22aa17a0502152c73764e1b538a Mon Sep 17 00:00:00 2001 From: file Date: Tue, 26 Dec 2006 04:34:07 +0000 Subject: Merged revisions 48964 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r48964 | file | 2006-12-25 23:31:58 -0500 (Mon, 25 Dec 2006) | 2 lines Add an API call that initializes an RTP structure. We need this because chan_sip is cheeky and uses a temporary RTP structure for codec purposes, and the API calls that are used rely on the lock. (Pointed out on asterisk-dev by Andy Wang) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@48965 f38db490-d61c-443f-a65b-d21fe96a405b --- main/rtp.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'main') diff --git a/main/rtp.c b/main/rtp.c index 88ad606da..b3fbf684a 100644 --- a/main/rtp.c +++ b/main/rtp.c @@ -1860,6 +1860,23 @@ static struct ast_rtcp *ast_rtcp_new(void) return rtcp; } +/*! + * \brief Initialize a new RTP structure. + * + */ +void ast_rtp_new_init(struct ast_rtp *rtp) +{ + ast_mutex_init(&rtp->bridge_lock); + + rtp->them.sin_family = AF_INET; + rtp->us.sin_family = AF_INET; + rtp->ssrc = ast_random(); + rtp->seqno = ast_random() & 0xffff; + ast_set_flag(rtp, FLAG_HAS_DTMF); + + return; +} + struct ast_rtp *ast_rtp_new_with_bindaddr(struct sched_context *sched, struct io_context *io, int rtcpenable, int callbackmode, struct in_addr addr) { struct ast_rtp *rtp; @@ -1870,14 +1887,9 @@ struct ast_rtp *ast_rtp_new_with_bindaddr(struct sched_context *sched, struct io if (!(rtp = ast_calloc(1, sizeof(*rtp)))) return NULL; - ast_mutex_init(&rtp->bridge_lock); + ast_rtp_new_init(rtp); - rtp->them.sin_family = AF_INET; - rtp->us.sin_family = AF_INET; rtp->s = rtp_socket(); - rtp->ssrc = ast_random(); - rtp->seqno = ast_random() & 0xffff; - ast_set_flag(rtp, FLAG_HAS_DTMF); if (rtp->s < 0) { free(rtp); ast_log(LOG_ERROR, "Unable to allocate socket: %s\n", strerror(errno)); -- cgit v1.2.3