From: Automerge script Date: Thu, 11 May 2006 09:10:58 +0000 (+0000) Subject: automerge commit X-Git-Tag: 1.2.8-netsec~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e9ee611581df2f97b9944308bd1822896de03a5c;p=thirdparty%2Fasterisk.git automerge commit git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@26798 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 1c3fdbb500..b1387ba18e 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -6502,6 +6502,9 @@ static int register_verify(struct sip_pvt *p, struct sockaddr_in *sin, struct si switch (parse_register_contact(p, peer, req)) { case PARSE_REGISTER_FAILED: ast_log(LOG_WARNING, "Failed to parse contact info\n"); + transmit_response_with_date(p, "400 Bad Request", req); + peer->lastmsgssent = -1; + res = 0; break; case PARSE_REGISTER_QUERY: transmit_response_with_date(p, "200 OK", req); @@ -6524,11 +6527,13 @@ static int register_verify(struct sip_pvt *p, struct sockaddr_in *sin, struct si peer = temp_peer(name); if (peer) { ASTOBJ_CONTAINER_LINK(&peerl, peer); - peer->lastmsgssent = -1; sip_cancel_destroy(p); switch (parse_register_contact(p, peer, req)) { case PARSE_REGISTER_FAILED: ast_log(LOG_WARNING, "Failed to parse contact info\n"); + transmit_response_with_date(p, "400 Bad Request", req); + peer->lastmsgssent = -1; + res = 0; break; case PARSE_REGISTER_QUERY: transmit_response_with_date(p, "200 OK", req); diff --git a/rtp.c b/rtp.c index 2df27e287a..677e19d884 100644 --- a/rtp.c +++ b/rtp.c @@ -90,6 +90,7 @@ struct ast_rtp { unsigned char rawdata[8192 + AST_FRIENDLY_OFFSET]; /*! Synchronization source, RFC 3550, page 10. */ unsigned int ssrc; + unsigned int rxssrc; unsigned int lastts; unsigned int lastdigitts; unsigned int lastrxts; @@ -440,6 +441,7 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp) int ext; int x; char iabuf[INET_ADDRSTRLEN]; + unsigned int ssrc; unsigned int timestamp; unsigned int *rtpheader; static struct ast_frame *f, null_frame = { AST_FRAME_NULL, }; @@ -496,6 +498,14 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp) ext = seqno & (1 << 28); seqno &= 0xffff; timestamp = ntohl(rtpheader[1]); + ssrc = ntohl(rtpheader[2]); + + if (!mark && rtp->rxssrc && rtp->rxssrc != ssrc) { + ast_log(LOG_WARNING, "Forcing Marker bit, because SSRC has changed\n"); + mark = 1; + } + + rtp->rxssrc = ssrc; if (padding) { /* Remove padding bytes */