Commit Graph

125 Commits

Author SHA1 Message Date
Joshua Colp
3ff70ed000 Don't crash if RTCP is not enabled on an RTP structure but statistics are output.
(closes issue #14234)
Reported by: jcovert
Patches:
      rtp.c.patch-1.6.0.3 uploaded by jcovert (license 551)
      rtp.c.patch-svn-165599 uploaded by jcovert (license 551)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@170239 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2009-01-22 20:02:35 +00:00
Joshua Colp
3a354c3500 Only care about a compatible codec for early bridging if we are actually bridging to another channel. If we are not we actually want to bring the audio back to us.
(closes issue #13545)
Reported by: davidw


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@165591 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-18 17:11:42 +00:00
Joshua Colp
a6edd8ba5f Increment the sequence number on the end packets for RFC2833. After reading the RFC some more and doing some testing I agree with this change.
(closes issue #12983)
Reported by: vt
Patches:
      dtmf_inc_seqnum_on_end_pkts.diff uploaded by vt (license 520)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@162653 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-10 16:05:29 +00:00
Joshua Colp
114c659195 Make sure that the timestamp for DTMF is not the same as the previous voice frame and do not send audio when transmitting DTMF as this confuses some equipment.
(closes issue #13209)
Reported by: ip-rob
Patches:
      13209.diff uploaded by file (license 11)
Tested by: ip-rob, bujones


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@162204 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-09 19:47:07 +00:00
Joshua Colp
7209e0e173 Take video into account when early bridging RTP.
(closes issue #13535)
Reported by: davidw


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@162188 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-09 19:06:14 +00:00
Jeff Peeler
ba3f49c71f (closes issue #13835)
Reported by: matt_b
Tested by: jpeeler

This mirrors a check that was present in ast_rtp_read to also be in ast_rtp_raw_write to not schedule sending the receiver report if the remote RTCP endpoint address isn't present in the RTCP structure.

Closes AST-142.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@161013 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-12-04 18:30:41 +00:00
Tilghman Lesher
9f7707dae8 Remove the potential for a division by zero error.
(Closes issue #13810)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@154060 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-11-03 21:48:21 +00:00
Mark Michelson
af35ef7d73 Allow for "G.729" if offered in an SDP even though
it is not RFC 3551 compliant. Some Cisco switches
will send this in an SDP, and it doesn't hurt to
be able to accept this.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@143337 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-09-17 18:24:15 +00:00
Mark Michelson
b48adf96dc Since adding the AST_CONTROL_SRCUPDATE frame type,
there are places where ast_rtp_new_source may be called
where the tech_pvt of a channel may not yet have an
rtp structure allocated. This caused a crash in chan_skinny,
which was fixed earlier, but now the same crash has been 
reported against chan_h323 as well. It seems that the best 
solution is to modify ast_rtp_new_source to not attempt to 
set the marker bit if the rtp structure passed in is NULL.

This change to ast_rtp_new_source also allows the removal
of what is now a redundant pointer check from chan_skinny.

(closes issue #13247)
Reported by: pj



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@136062 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-08-06 15:58:40 +00:00
Mark Michelson
e5c3ba2e73 Fix a problem where inbound rfc2833 audio would be sent to the
core instead of being P2P bridged. When the core regenerated
the rfc2833 packet for the outbound leg, the SSRC would be different
than the RTP audio on the call leg causing DTMF detection issues on
the far end.

(closes issue #12955)
Reported by: tonyredstone
Patches:
      dynamic_rtp.patch uploaded by tsearle (license 373)
Tested by: tonyredstone



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@129436 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-07-09 19:32:20 +00:00
Tilghman Lesher
9b4a5d8310 Check for rtcp structure before trying to delete schedule.
(closes issue #12872)
 Reported by: destiny6628
 Patches: 
       20080621__bug12872.diff.txt uploaded by Corydon76 (license 14)
 Tested by: destiny6628


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@125276 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-06-26 11:01:21 +00:00
Russell Bryant
4b2a679f9e Add ast_assert(), which can be used to handle fatal errors. It is only compiled
in if dev-mode is enabled, and only aborts if DO_CRASH is defined.
(inspired by issue #12650)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@116463 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-05-14 21:32:00 +00:00
Russell Bryant
b3a211bdc3 I thought I was going to be able to leave 1.4 alone, but that was not the case.
I ran into some problems with G.722 in 1.4, so I have merged in all of the fixes
in this area that I have made in trunk/1.6.0, and things are happy again.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@114550 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-22 21:14:55 +00:00
Joshua Colp
19b8841503 Don't change the SSRC when a new source comes into play, this might happen quite often and depending on the remote side... they might not like this.
(closes issue #12353)
Reported by: dimas


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@114100 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-14 13:52:49 +00:00
Joshua Colp
65767b4290 Disable Packet2Packet bridging when we need to feed DTMF frames into the core. Some implementations do not like how we switch between things.
(closes issue #12212)
Reported by: bamby


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@112209 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-04-01 18:02:43 +00:00
Joshua Colp
996d3a1c2e Make sure that the mark bit does not incorrectly cause video frame timestamps to be calculated as if they are audio frames.
(closes issue #11429)
Reported by: sperreault
Patches:
      11429-frametype.diff uploaded by qwell (license 4)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@110019 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-03-19 18:20:28 +00:00
Joshua Colp
5fda7910c6 Put a maximum limit on the number of payloads accepted, and also make sure a given payload does not exceed our maximum value.
(AST-2008-002)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@109386 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-03-18 14:58:39 +00:00
Tilghman Lesher
072171ef5d Properly initialize rtp->schedid
(Closes issue #12154)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@106606 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-03-07 15:20:52 +00:00
Joshua Colp
cd703523db Add a control frame to indicate the source of media has changed. Depending on the underlying technology it may need to change some things.
(closes issue #12148)
Reported by: jcomellas


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@106235 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-03-05 22:32:10 +00:00
Russell Bryant
d564404d73 Fix a bug that I just noticed in the RTP code. The calculation for setting the
len field in an ast_frame of audio was wrong when G.722 is in use.  The len field
represents the number of ms of audio that the frame contains.  It would have
set the value to be twice what it should be.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@105932 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-03-05 01:52:18 +00:00
Joshua Colp
be005c60d6 In addition to setting the marker bit let's change our ssrc so they know for sure it is a different source.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@105676 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-03-04 18:10:34 +00:00
Joshua Colp
36bb1f9d46 When a new source of audio comes in (such as music on hold) make sure the marker bit gets set.
(closes issue #10355)
Reported by: wdecarne
Patches:
      10355.diff uploaded by file (license 11)
(closes issue #11491)
Reported by: kanderson


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@105674 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-03-04 18:05:28 +00:00
Tilghman Lesher
4306df31b1 When a SIP channel is being auto-destroyed, it's possible for it to still be
in bridge code.  When that happens, we crash.  Delay the RTP destruction until
the bridge is ended.
(closes issue #11960)
 Reported by: norman
 Patches: 
       20080215__bug11960__2.diff.txt uploaded by Corydon76 (license 14)
 Tested by: norman


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@103780 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-02-18 17:31:52 +00:00
Tilghman Lesher
7060a6888d When deleting a task from the scheduler, ignoring the return value could
possibly cause memory to be accessed after it is freed, which causes all
sorts of random memory corruption.  Instead, if a deletion fails, wait a
bit and try again (noting that another thread could change our taskid
value).
(closes issue #11386)
 Reported by: flujan
 Patches: 
       20080124__bug11386.diff.txt uploaded by Corydon76 (license 14)
 Tested by: Corydon76, flujan, stuarth`


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@100465 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-27 21:59:53 +00:00
Joshua Colp
fa640604de Replace current spy architecture with backport of audiohooks. This should take care of current known spy issues.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@98972 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-16 20:33:47 +00:00
Joshua Colp
1379764f4c Add two more SDP names for ulaw and alaw.
(closes issue #11777)
Reported by: tootai


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@98958 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-16 15:03:14 +00:00
Russell Bryant
7a007060bd Commit a fix for some memory access errors pointed out by the valgrind2.txt
output on issue #11698.

The issue here is that it is possible for an instance of a translator to get
destroyed while the frame allocated as a part of the translator is still being
processed.  Specifically, this is possible anywhere between a call to ast_read()
and ast_frame_free(), which is _a lot_ of places in the code.  The reason this
happens is that the channel might get masqueraded during this time.  During a
masquerade, existing translation paths get destroyed.

So, this patch fixes the issue in an API and ABI compatible way.  (This one is
 for you, paravoid!)

It changes an int in ast_frame to be used as flag bits.  The 1 bit is still used
to indicate that the frame contains timing information.  Also, a second flag has
been added to indicate that the frame came from a translator.  When a frame with
this flag gets released and has this flag, a function is called in translate.c to
let it know that this frame is doing being processed.  At this point, the flag gets
cleared.  Also, if the translator was requested to be destroyed while its internal
frame still had this flag set, its destruction has been deffered until it finds out
that the frame is no longer being processed.

Admittedly, this feels like a hack.  But, it does fix the issue, and I was not able 
to think of a better solution ...


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@98943 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-15 23:26:52 +00:00
Joshua Colp
aa95b890ea If the incoming RTP stream changes codec force the bridge to break if the other side does not support it.
(closes issue #11729)
Reported by: tsearle
Patches:
      new_codec_patch_udiff.patch uploaded by tsearle (license 373)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@98325 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2008-01-11 19:51:10 +00:00
Joshua Colp
bff4a0aa3c Add G729A as another possible payload name for G729. Some devices use this instead of G729, which is perfectly normal since the payload number itself is defined and can't be used by anything else so the name doesn't matter that much.
(closes issue #11483)
Reported by: revolution
Patches:
      rtp.diff uploaded by revolution (license 346)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@92204 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-10 16:36:15 +00:00
Tilghman Lesher
af01697791 At the end of a call, when we're reporting, RTCP may already be partially torn down, so check for NULL dereference
Reported by: blitzrage
Patch by: tilghman
(Closes issue #11450)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@91637 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-07 00:52:17 +00:00
Joshua Colp
bae731053f Do not create a smoother for G723.1 frames, they need to be left alone to their native 20/24 byte size.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90588 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-12-03 20:05:42 +00:00
Olle Johansson
0c3ec937ce If we get a codec offer using a well-known payload type, but using it for another
codec that we don't know, Asterisk did not remove that codec from the list.

With this patch, we remove the codec from audio and video rtp objects and
deny it ever existed. Thanks to lasse for testing.

(closes issue #11376)
Reported by: lasse
Patches: 
      bug11376.txt uploaded by oej (license 306)
Tested by: lasse


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@89630 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-11-27 15:23:17 +00:00
Joshua Colp
0f3e461074 Bring both DTMF begin and end frames up through to the core for DTMF feature handling.
(closes issue #10826)
Reported by: dimas


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@85559 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-15 16:22:02 +00:00
Joshua Colp
3cc997694d If Monitor or a spy was added to a P2P or native bridged channel bring the channel back to the generic bridging core so the monitor or spy operations work.
(closes issue #10943)
Reported by: julianjm


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@85552 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-15 14:55:04 +00:00
Joshua Colp
ba0bb743e6 Only update codec information if the channel has a technology private structure.
(issue #10915)
Reported by: ramonpeek


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@85057 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-08 20:06:33 +00:00
Joshua Colp
3dcf938f73 Update codec information as well as address when doing hold reinvites.
(issue #10868)
Reported by: mavince


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@85023 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-08 15:37:46 +00:00
Joshua Colp
35ed1f7148 Update the remembered RTP peer information when putting an endpoint on hold or taking it off hold so that the RTP stack does not initiate a needless reinvite.
(closes issue #10868)
Reported by: mavince


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@84818 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-05 18:55:36 +00:00
Tilghman Lesher
1e9edf1338 When an RFC 2833 event is sent that we don't recognize, ignore it, don't queue a NULL digit (closes issue #10877)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@84581 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-10-03 22:59:17 +00:00
Russell Bryant
d6b8fb4dc0 gcc 4.2 has a new set of warnings dealing with cosnt pointers. This set of
changes gets all of Asterisk (minus chan_alsa for now) to compile with gcc 4.2.
(closes issue #10774, patch from qwell)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@83432 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-09-21 14:37:20 +00:00
Joshua Colp
968be2def2 (closes issue #10562)
Reported by: idkpmiller
Correct jitter value output in the CLI to be as expected.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@80974 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-27 13:20:31 +00:00
Joshua Colp
d13b192018 (closes issue #10526)
Reported by: sinistermidget
Revert commit from issue #10355 and return timestamp skew to 640. 


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@80255 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-22 16:14:38 +00:00
Joshua Colp
6dbbfcdc25 (closes issue #10440)
Reported by: irroot
(closes issue #10454)
Reported by: flo_turc
Increase maximum timestamp skew to 120. 20 was apparently far too low.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@79553 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-15 14:40:23 +00:00
Joshua Colp
88b982d7ff (closes issue #10355)
Reported by: wdecarne
Now that we pass through RTP timestamp information we need to make the allowed timestamp skew considerably less. There are situations where a source may change and due to the timestamp difference the receiver will experience an audio gap since we did not indicate by setting the marker bit that the source changed.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@78172 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-08-06 15:27:24 +00:00
Luigi Rizzo
19ec0f8fe1 set the sequence number in a frame for all frame types
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@77022 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-25 09:34:01 +00:00
Russell Bryant
c83a0b2a3c cast arguments to ast_log so that it builds without warnings for me
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@75447 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-17 20:51:25 +00:00
Joshua Colp
396e723f17 Ensure that the pointer to STUN data does not go to unaccessible memory. (ASA-2007-017)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@75439 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-07-17 20:40:57 +00:00
Russell Bryant
d528f7791d Only output debug information related to RTCP timestamps when RTCP debug
is turned on (issue #10066, patch by me)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@72112 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-27 16:34:24 +00:00
Jason Parker
8a7cb1ec48 Don't dereference a pointer that may be NULL here.
Issue 10017.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@71915 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-26 20:36:09 +00:00
Joshua Colp
164b3bca49 Do not Packet2Packet bridge if packetization settings do not allow it. (issue #9117 reported by phsultan)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@70727 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-21 15:22:39 +00:00
Joshua Colp
00a80bcb7d Put the speex packetization values back in but disable it when setting up the smoother.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@70360 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2007-06-20 17:52:57 +00:00