Make calltoken support work with realtime users and peers.
In the course of this, I also found that the results of ast_gethostbyname
were being used incorrectly in both chan_iax2 and chan_sip, so both have
been fixed.
Richard Mudgett [Thu, 10 Sep 2009 22:31:12 +0000 (22:31 +0000)]
Cleaned up chan_dahdi iflist handling and locking.
* Fixed walking the iflist so it is always done with the iflock locked.
* Simplified iflist walking routines.
* Created chan_dahdi iflist insertion and extraction routines.
* Fixed duplicate_pseudo() malloc fail handling.
* Fixed infinite loop in action_dahdishowchannels() when showing a single channel.
The IAX2 Call Token security patch inadvertently broke the use of
encryption due to the reorganization of code in the socket_process()
function. When encryption is used, an incoming full frame must first
be decrypted before the information elements can be parsed. The
security release mistakenly moved IE parsing before decryption in
order to process the new Call Token IE. To resolve this, decryption
of full frames is once again done before looking into the frame. This
involves searching for an existing callno, checking the pvt to see if
encryption is turned on, and decrypting the packet before the internal
fields of the full frame are accessed.
Jeff Peeler [Thu, 10 Sep 2009 20:18:30 +0000 (20:18 +0000)]
Stop caller id transmission when offhook event detected.
This fixes the problem that would occur if an analog phone was picked up while
the caller id was being sent. The caller id before sent the whole spill even
after pickup and is now corrected.
Remove harmful code that causes endless loops.
Remove code that causes loops in registrations.
We have agreed that the patch that this code was part of was bad. I am ripping out the code that causes
the issue. putnopvut needs to check the rest of the patch, if it needs to be changed as well.
This solves the issue reported in #15540, but needs more work before we close it (as described above).
When MOH is playing on the channel, announcements sent through the conference are not heard.
(closes issue #14588)
Reported by: voipas
Patches:
20090716__issue14588__2.diff.txt uploaded by tilghman (license 14)
Tested by: lmadsen, twisted, tilghman
........
Russell Bryant [Tue, 8 Sep 2009 18:06:57 +0000 (18:06 +0000)]
Fix audio problems with format_mp3.
This problem was introduced when the AST_FRIENDLY_OFFSET patch was merged.
I'm surprised that nobody noticed any trouble when testing that patch, but this
fixes the code that fills in the buffer to start filling in after the offset
portion of the buffer.
(closes issue #15850)
Reported by: 99gixxer
Patches:
issue15850.diff1.txt uploaded by russell (license 2)
Tested by: 99gixxer
Ensure that the default autoconf CFLAGS are not used.
A recent change to the configure script that allows the user to specify
CFLAGS and/or LDFLAGS to the script had the unfortunate side effect of
letting autoconf's default CFLAGS (-g -O2) feed in to the rest of the build
system, thereby overriding the DONT_OPTIMIZE setting in menuselect. That
problem is now corrected.
live_ast: Fix asterisk.conf instead of regenerating it
* Don't write asterisk.conf from scratch. Fix the existing one.
* Pass extra 'make' command-line arguments to 'install' and 'samples'.
* Fix some extra typos.
David Vossel [Tue, 8 Sep 2009 14:26:30 +0000 (14:26 +0000)]
caller id number empty
parse_uri was not being given the correct scheme's, as
a result, uri parsing did not parse the username correctly.
One of the side effects of this is an empty caller id.
Olle Johansson [Mon, 7 Sep 2009 18:24:04 +0000 (18:24 +0000)]
- Doxygen additions
- Remove unused string in sip_registry -- "random"
- Someone added a function in the middle of all forward declarations... Weird. Moved it out of that
section.
Olle Johansson [Mon, 7 Sep 2009 18:00:48 +0000 (18:00 +0000)]
Clean up the "offered_media" code
- Add variable for number of known media streams instead of hardcoding in definition of sip_pvt
- Rename "text" to "codecs" - beacuse it's what it is
- Add documentation for future developers so that we make sure that we define new sdp media types
for SRTP-variants
David Vossel [Fri, 4 Sep 2009 19:32:07 +0000 (19:32 +0000)]
sip peer matching by address only with TCP/TLS
This patch removes the contact header matching logic and
adds logic to match all tcp/tls connections by ip only.
Thanks to oej for finding the issue and suggesting solutions.
Enable turning off the application delimiter warning with the 'dontwarn' option.
Suggested on the -dev list, and implemented in an alternate way by me.
Make apps send PROGRESS control frame for early media and fix too early media issue in SIP
The issue at hand is that some legacy (dying) PBX systems send empty media frames on PRI
links *before* any call progress. The SIP channel receives these frames and by default
signals 183 Session progress and starts sending media. This will cause phones to
play silence and ignore the later 180 ringing message. A bad user experience.
The fix is twofold:
- We discovered that asterisk apps that support early media ("noanswer") did not send
any PROGRESS frame to indicate early media. Fixed.
- We introduce a setting in chan_sip so that users can disable any relay of media frames
before the outbound channel actually indicates any sort of call progress.
In 1.4, 1.6.0 and 1.6.1, this will be disabled for backward compatibility. In later versions
of Asterisk, this will be enabled. We don't assume that it will change your Asterisk
phone experience - only for the better.
We encourage third-party application developers to make sure that if they have applications
that wants to send early media, add a PROGRESS control frame transmission to make sure that
all channel drivers actually will start sending early media. This has not been the default
in Asterisk previous to this patch, so if you got inspiration from our code, you need to
update accordingly. Sorry for the trouble and thanks for your support.
This code has been running for a few months in a large scale installation (over 250
servers with PRI and/or BRI links to old PBX systems).
That's no proof that this is an excellent patch, but, well, it's tested :-)
Russell Bryant [Fri, 4 Sep 2009 13:14:25 +0000 (13:14 +0000)]
Do not treat every SIP peer as if they were configured with insecure=port.
There was a problem in the function responsible for doing peer matching by
IP address and port number such that during the second pass for checking for
a peer configured with insecure=port, it would end up treating every peer as
if it had been configured that way. These changes fix the logic in the peer
IP and port comparison callback to handle insecure=port checking properly.
This problem was introduced when SIP peers were converted to astobj2. Many
thanks to dvossel for noticing this while working on another peer matching
issue.
Olle Johansson [Fri, 4 Sep 2009 12:05:46 +0000 (12:05 +0000)]
Adding to the janitor list.
For new readers: The janitor list is a list of tasks we need help with in the Asterisk project. Taking up
one of these is often a good way to get into Asterisk development and getting a lot of developers in
the project to be grateful. It's stuff we could spend time on when the bug tracker is empty, when our
employers hasn't filled our task lists and our servers is running bugfree and happily without any issues.
If you want to start working on one of these small projects, feel free to ask for help in the #asterisk-dev
channel on IRC or asterisk-dev mailing list. We'll be more than happy to help you to start and reach
goal.
Added detection DTMF CID without polarity change alert.
Added detection of DTMF tone energy levels on FXO channels in chan_dahdi
monitoring loop so DTMF CID can be detected without the need of a polarity
change precursor.
This patch adds a document describing the language prompt submission process,
licensing terms and other issues related to that process. In addition, it
modifies the sound file searching process to support language codes with
any number of suffices (not limited to just "xx" or "xx_YY"), so that prompts
can be named with gender, customer/company, etc. suffices as well.
Revert attempt to standardize with _POSIX_C_SOURCE.
This did not function in the way that was intended, causing more compatibility
issues than it solved. It is best, therefore, that it be simply removed.
(Discussed with kpfleming; agreement to remove was reached.)
Re-send non-100 provisional responses to prevent cancellation
From section 13.3.1.1 of RFC 3261:
If the UAS desires an extended period of time to answer the INVITE,
it will need to ask for an "extension" in order to prevent proxies
from canceling the transaction. A proxy has the option of canceling
a transaction when there is a gap of 3 minutes between responses in a
transaction. To prevent cancellation, the UAS MUST send a non-100
provisional response at every minute, to handle the possibility of
lost provisional responses.
David Vossel [Wed, 2 Sep 2009 21:39:31 +0000 (21:39 +0000)]
port string to int conversion using sscanf
There are several instances where a port is parsed
from a uri or some other source and converted to
an int value using atoi(), if for some reason the
port string is empty, then a standard port is used.
This logic is used over and over, so I created a function
to handle it in a safer way using sscanf().
- lock channel before looking for a channel variable
- Init the parkings list member of struct parkinglot.
Thanks Sean for the explanation why this should be here.
Fix issue where DTMF CID detect was placing channels into signed linear mode
made analog_set_linear_mode return back the mode that was being overwritten
so it could be restored later.
Close up to the soft open file limit (same on Linux, but varies drastically on OS X).
Also, a Makefile fix for Darwin (OS X).
(closes issue #14542)
Reported by: jtodd
Patches:
20090901__issue14542.diff.txt uploaded by tilghman (license 14)
Tested by: jtodd, tilghman
Change-type: bugfix
David Vossel [Wed, 2 Sep 2009 17:26:40 +0000 (17:26 +0000)]
SIP uri parsing cleanup
Now, the scheme passed to parse_uri can either be a
single scheme, or a list of schemes ',' delimited.
This gets rid of the whole problem of having to create
two buffers and calling parse_uri twice to check for
separate schemes.
like in chan_sip's sip_new skinny should copy the configured parkinglot from a line to the newly created channel.
This makes callparking honor the configured parkinglot for skinny lines as well.
David Vossel [Wed, 2 Sep 2009 16:08:00 +0000 (16:08 +0000)]
SIP support for keep-alive event
keep-alive events are used by Sipura/Linksys for NAT keepalive.
There currently don't appear to be any problems with NAT, but
everytime a keep-alive event is received, Asterisk responds with a
"489 Bad event". This error may indicate to a user that NAT
problems exist just because this even is not supported. Now,
rather than respond with an error, the packet is consumed and
a "200 ok" is sent just to indicate we received the packet.
(issue #15084)
Patches:
chan_sip.keepalive.v1.diff uploaded by IgorG (license 20)
Honor configured parkinglot when parking and retrieving parked calls
Thank oej for pointing out the fact that sip_new did not copy parkinglot from the peer
into the newly created channel.
(closes issue #15538)
Reported by: gracedman
Patches:
2009090100_sipnewparkinglot-161.diff.txt uploaded by mvanbaak (license 7)
With mod by me to also fix callparking as well (this uploaded patch only fixed retrieving a parked call)
Tested by: gracedman, mvanbaak
Use strrchr() so SoftHangup will correctly truncate multi-hyphen channel names
In general channel names are in the form Foo/Bar-Z, but the channel name
could have multiple hyphens and look like Foo/B-a-r-Z. Use strrchr to
truncate the channel name at the last hyphen.
Russell Bryant [Tue, 1 Sep 2009 20:44:13 +0000 (20:44 +0000)]
Fix memory corruption caused by format_mp3.
format_mp3 claimed that it provided AST_FRIENDLY_OFFSET in frames returned by
read(). However, it lied. This means that other parts of the code that
attempted to make use of the offset buffer would end up corrupting the fields
in the ast_filestream structure. This resulted in quite a few crashes due to
unexpected values for fields in ast_filestream.
This patch closes out quite a few bugs. However, some of these bugs have been
open for a while and have been an area where more than one bug has been
discussed. So with that said, anyone that is following one of the issues
closed here, if you still have a problem, please open a new bug report for the
specific problem you are still having. If you do, please ensure that the bug
report is based on the newest version of Asterisk, and that this patch is
applied if format_mp3 is in use. Thanks!
Also unlock the "other" channel, when returning, due to glare.
(closes issue #15787)
Reported by: tim_ringenbach
Patches:
chan_local.diff uploaded by tim ringenbach (license 540)
Tested by: tim_ringenbach
........