Jonathan Rose [Tue, 6 Dec 2011 21:53:00 +0000 (21:53 +0000)]
Documents CHANNEL(musicclass) taking priority over m([x]) in waitExten
If waitExten specifies a music class to use with its music on hold option, it will use
CHANNEL(musicclass) instead if that channel variable has been set on the initiating
channel. This documents that behavior in the waitExten app so that this can be known
without checking the documentation of the code in function local_ast_moh_start.
(closes issue ASTERISK-18804)
........
Merged revisions 347239 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Walter Doekes [Tue, 6 Dec 2011 19:42:53 +0000 (19:42 +0000)]
Don't allow transport=tcp when tcpenable=no.
When tcpenable=no, sending to transport=tcp hosts was still allowed.
Resolving the source address wasn't possible and yielded the string
"(null)" in SIP messages. Fixed that and a couple of not-so-correct
log messages.
(closes issue ASTERISK-18837)
Reported by: Andreas Topp
Review: https://reviewboard.asterisk.org/r/1585
Reviewed by: Matt Jordan
........
Merged revisions 347166 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Walter Doekes [Tue, 6 Dec 2011 19:20:10 +0000 (19:20 +0000)]
Move setting of voicemail zonetag and locale up a bit.
The voicemail [general] zonetag and locale variables weren't loaded
until after the mailboxes were initialized. This caused the settings to
be unset for those mailboxes until a reload was performed.
(closes issue ASTERISK-18838)
Review: https://reviewboard.asterisk.org/r/1570
Reviewed by: Matt Jordan
........
Merged revisions 347111 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Matthew Jordan [Tue, 6 Dec 2011 17:24:51 +0000 (17:24 +0000)]
Fixed crash from orphaned MWI subscriptions in chan_sip
This patch resolves the issue where MWI subscriptions are orphaned
by subsequent SIP SUBSCRIBE messages. When a peer is removed, either
by pruning realtime SIP peers or by unloading / loading chan_sip, the
MWI subscriptions that were orphaned would still be on the event engine
list of valid subscriptions but have a pointer to a peer that no longer
was valid. When an MWI event would occur, this would cause a seg fault.
(closes issue ASTERISK-18663)
Reported by: Ross Beer
Tested by: Ross Beer, Matt Jordan
Patches:
blf_mwi_diff_12_06_11.txt uploaded by Matt Jordan (license 6283)
Richard Mudgett [Mon, 5 Dec 2011 17:42:36 +0000 (17:42 +0000)]
Restore call progress code for analog ports.
Extracting sig_analog from chan_dahdi lost call progress detection
functionality.
* Fix analog ports from considering a call answered immediately after
dialing has completed if the callprogress option is enabled.
(closes issue ASTERISK-18841)
Reported by: Richard Miller
Patches:
chan_dahdi.diff (license #5685) patch uploaded by Richard Miller (Modified by me)
sig_analog.c.diff (license #5685) patch uploaded by Richard Miller (Modified by me)
sig_analog.h.diff (license #5685) patch uploaded by Richard Miller
........
Merged revisions 347006 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Jonathan Rose [Mon, 5 Dec 2011 15:02:00 +0000 (15:02 +0000)]
Resolve duplicate label used in multiple priorities for the same extension.
Prior to this patch, if labels with the same name were used for different priorities in
the same extension, the new label would be accepted, but it would be unusable since
attempts to reach that label would just go to the first one. Now pbx.c detects this,
generates a warning in logs, and culls the label before adding it to the dialplan.
Kinsey Moore [Mon, 5 Dec 2011 14:46:25 +0000 (14:46 +0000)]
Fix chan_jingle/gtalk load regression introduced in r346087
Add missing symbol exports for ast_aji_client_destroy and ast_aji_buddy_destroy
for usage outside res_jabber. Testing of these changes focused on res_jabber
itself, so this problem was missed.
Reported-by: Michael Spiceland
........
Merged revisions 346951 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Walter Doekes [Sun, 4 Dec 2011 10:03:31 +0000 (10:03 +0000)]
For SIP REGISTER fix domain-only URIs and domain ACL bypass.
The code that allowed admins to create users with domain-only uri's had
stopped to work in 1.8 because of the reqresp parser rewrites. This is
fixed now: if you have a [mydomain.com] sip user, you can register with
useraddr sip:mydomain.com. Note that in that case -- if you're using
domain ACLs (a configured domain list) -- mydomain.com must be in the
allow list as well.
Reviewboard r1606 shows a list of registration combinations and which
SIP response codes are returned.
Review: https://reviewboard.asterisk.org/r/1533/
Reviewed by: Terry Wilson
Matthew Jordan [Fri, 2 Dec 2011 23:27:10 +0000 (23:27 +0000)]
Update SIP MESSAGE To parsing to correctly handle URI
The previous patch (r346040) incorrectly parsed the URI in the presence
of a port, e.g., user@hostname:port would fail as the port would be
double appended to the SIP message. This patch uses the parse_uri function
to correctly parse the URI into its username and hostname parts, and places
them in the correct fields in the sip_pvt structure.
Richard Mudgett [Thu, 1 Dec 2011 21:14:55 +0000 (21:14 +0000)]
Re-resolve the STUN address if a STUN poll fails for res_stun_monitor.
The STUN socket must remain open between polls or the external address
seen by the STUN server is likely to change. However, if the STUN request
poll fails then the STUN server address needs to be re-resolved and the
STUN socket needs to be closed and reopened.
* Re-resolve the STUN server address and create a new socket if the STUN
request poll fails.
* Fix ast_stun_request() return value consistency.
* Fix ast_stun_request() to check the received packet for expected message
type and transaction ID.
* Fix ast_stun_request() to read packets until timeout or an associated
response packet is found. The stun_purge_socket() hack is no longer
required.
* Reduce ast_stun_request() error messages to debug output.
* No longer pass in the destination address to ast_stun_request() if the
socket is already bound or connected to the destination.
Cleaning up chan_sip/tcptls file descriptor closing.
This patch attempts to eliminate various possible instances of undefined behavior caused
by invoking close/fclose in situations where fclose may have already been issued on a
tcptls_session_instance and/or closing file descriptors that don't have a valid index
for fd (-1). Thanks for more than a little help from wdoekes.
(closes issue ASTERISK-18700)
Reported by: Erik Wallin
David Vossel [Tue, 29 Nov 2011 00:00:11 +0000 (00:00 +0000)]
Fixes memory leak in message API.
The ast_msg_get_var function did not properly decrement
the ref count of the var it retrieves. The way this is
implemented is a bit tricky, as we must decrement the var and then
return the var's value. As long as the documentation for the
function is followed, this will not result in a dangling pointer as
the ast_msg structure owns its own reference to the var while it
exists in the var container.
Walter Doekes [Wed, 23 Nov 2011 20:45:35 +0000 (20:45 +0000)]
Minor cleanup in chan_sip get_msg_text() function.
In r116240, get_msg_text() got an extra parameter to fix the unwanted
addition of trailing newlines to SIP MESSAGE bodies. This caused all
linefeeds to be trimmed, which isn't right either. This is a stop-gap;
the right fix is to return the original SIP request body.
Review: https://reviewboard.asterisk.org/r/1586
Reviewed by: Matt Jordan
........
Merged revisions 346147 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Kinsey Moore [Wed, 23 Nov 2011 17:14:41 +0000 (17:14 +0000)]
Fix res_jabber resource leaks
This should fix almost all resource leaks in res_jabber that involve
ASTOBJ_CONTAINER_FIND and resolves an ambiguous situation where
ast_aji_get_client would sometimes bump an object's refcount and sometimes not.
Matthew Jordan [Wed, 23 Nov 2011 16:19:47 +0000 (16:19 +0000)]
Fixed SendMessage stripping extension from To: header in SIP MESSAGE
When using the MessageSend application to send a SIP MESSAGE to a non-peer,
chan_sip attempted to validate the hostname or IP Address. In the process,
it stripped off the extension and failed to add it back to the sip_pvt
structure before transmitting. This patch adds the full URI passed in
from the message core to the sip_pvt structure.
(closes issue ASTERISK-18903)
Reported by: Shaun Clark
Tested by: Matt Jordan
Terry Wilson [Wed, 23 Nov 2011 16:10:07 +0000 (16:10 +0000)]
Resume playing existing hold music for cached realtime MOH
As a result of the fix for ASTERISK-18039, realtime caching MOH no longer
properly resumes playing back a file between different holds in the same call.
This is because scanning for new files causes the existing file array to be
emptied and we were just comparing that the saved pointer to the filename
matched the pointer to the filename in a particular position in the array. An
easy fix is to save the filename instead of a pointer to it and then do a
strcmp instead of comparing the addresses.
Richard Mudgett [Tue, 22 Nov 2011 23:00:31 +0000 (23:00 +0000)]
Fix dnsmgr entries to ask for the same address family each time.
The dnsmgr refresh would always get the first address found regardless of
the original address family requested. So if you asked for only IPv4
addresses originally, you might get an IPv6 address on refresh.
* Saved the original address family requested by ast_dnsmgr_lookup() to be
used when the address is refreshed.
........
Merged revisions 345976 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Terry Wilson [Mon, 21 Nov 2011 21:07:22 +0000 (21:07 +0000)]
Default to nat=yes; warn when nat in general and peer differ
It is possible to enumerate SIP usernames when the general and user/peer
nat settings differ in whether to respond to the port a request is sent
from or the port listed for responses in the Via header. In 1.4 and 1.6.2,
this would mean if one setting was nat=yes or nat=route and the other was
either nat=no or nat=never. In 1.8 and 10, this would mean when one was
nat=force_rport and the other was nat=no.
In order to address this problem, it was decided to switch the default
behavior to nat=yes/force_rport as it is the most commonly used option
and to strongly discourage setting nat per-peer/user when at all possible.
For more discussion of the issue, please see:
http://lists.digium.com/pipermail/asterisk-dev/2011-November/052191.html
Tilghman Lesher [Fri, 18 Nov 2011 22:16:26 +0000 (22:16 +0000)]
Fix a change in behavior in 'database show' from 1.8.
In 1.8 and previous versions, one could use any fullword portion of the key
name, including the full key, to obtain the record. Until this patch, this
did not work for the full key.
Closes issue ASTERISK-18886
Patch: by tilghman
Review: by twilson (http://pastebin.com/7rtu6bpk) on #asterisk-dev
Jonathan Rose [Wed, 16 Nov 2011 14:49:43 +0000 (14:49 +0000)]
Guarantee messages go into the right folders with multiple recipients
Before, using the U flag in Voicemail with multiple recipients would put urgent messages
in the INBOX folder for all users past the first thanks to a bug with the message
copying function. This would also cause messages to fail to be sent if the INBOX
directory hadn't been created for that mailbox yet.
(closes issue ASTERISK-18245)
Reported by: Matt Jordan
(closes issue ASTERISK-18246)
Reported by: Matt Jordan
Richard Mudgett [Mon, 14 Nov 2011 21:59:28 +0000 (21:59 +0000)]
Restore SIP DTMF overlap dialing method.
The recent fix for ASTERISK-17288 to get RFC3578 SIP overlap support
working correctly removed a long standing ability to do overlap dialing
using DTMF in the early media phase of a call.
See ASTERISK-18702 it has a very good description of the issue.
I started with Pavel Troller's chan_sip.diff patch on issue
ASTERISK-18702.
* Added 'dtmf' enum value to sip.conf allowoverlap config option. The new
option value causes the Incomplte application to not send anything with
chan_sip so the caller can supply more digits via DTMF.
* Renames SIP_GET_DEST_PICKUP_EXTEN_FOUND to SIP_GET_DEST_EXTEN_MATCHMORE
since that is what it really means.
* Fixed get_destination() inconsistency with the pickup extension
matching.
* Fixed initialization of PAGE3 of global_flags in reload_config().
(closes issue ASTERISK-18702)
Reported by: Pavel Troller
is only valid when new_frames == 1. Otherwise we start reading into adjacent
variables declared on the stack. The read end discards what is read, so the
values don't matter but it's not a good idea to read past where we want even
though new_frames is almost always 1 and should never be large. This patch is
basically taken out of kpfleming's eventfd branch, as he mentioned that he
remembered fixing it there when I talked to him about this issue.
Jonathan Rose [Mon, 14 Nov 2011 16:12:37 +0000 (16:12 +0000)]
Moves voicemail setup password entry to the end of the setup process.
This change was made because forcegreeting and forcename settings in voicemail could be
circumvented by hanging up after entering a password, because the only way voicemail
currently observes whether a mailbox is new or not is by checking to see if the password
is the same as the mailbox number or not.
(closes issue ASTERISK-18282)
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/1581/
........
Merged revisions 345062 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Kinsey Moore [Mon, 14 Nov 2011 15:10:38 +0000 (15:10 +0000)]
Ensure that a null vmexten does not cause a segfault
When sip_send_mwi_to_peer was modified recently to avoid deadlocks, vmexten
was not expected to be null. This change handles that situation to avoid
a segfault.
........
Merged revisions 345063 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Terry Wilson [Sat, 12 Nov 2011 00:34:40 +0000 (00:34 +0000)]
Don't forget to rescan MOH files for cached realtime classes
Realtime MOH class caching was implemented because without it, you would build
a completely new MOH class and would start the music over at the beginning each
time hold was pressed in a conversation. Unfortunately, this broke re-scanning
for file changes for realtime MOH classes. This patch corrects that issue.
Walter Doekes [Fri, 11 Nov 2011 21:58:31 +0000 (21:58 +0000)]
Use __alignof__ instead of sizeof for stringfield length storage.
Kevin P Fleming suggested that r343157 should use __alignof__ instead
of sizeof. For most systems this won't be an issue, but better fix it
now while it's still fresh.
Matthew Jordan [Fri, 11 Nov 2011 21:50:07 +0000 (21:50 +0000)]
Video format was treated as audio when removed from the file playback scheduler
This patch fixes the format type check in ast_closestream and
filestream_destructor. Previously a comparison operator was used, but since
audio formats are no longer contiguous (and AST_FORMAT_AUDIO_MASK includes
formats that have a value greater than the video formats), a bitwise AND
operation is used instead. Duplicated code was also moved to filestream_close.
(closes issue ASTERISK-18682)
Reported by: Aldo Bedrij
Tested by: Matt Jordan
Walter Doekes [Fri, 11 Nov 2011 21:36:01 +0000 (21:36 +0000)]
Remove unneeded if(params) checks in reqresp_parser.
Nick Lewis added them in https://reviewboard.asterisk.org/r/549/diff/1-2/
for no apparent reason. There is no way that params could become NULL in
that piece of code, so I removed these excess checks again.
........
Merged revisions 344837 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Walter Doekes [Fri, 11 Nov 2011 21:29:05 +0000 (21:29 +0000)]
Fix bad quoting of multiline mxml opaque_data that caused invalid xml.
The opaque_data was added and enclosed in single quotes, assuming it
would be only a single line. The rest of the lines were appended after
the closing quote.
(closes issue ASTERISK-18852)
Reported by: peep_ on IRC
Kinsey Moore [Fri, 11 Nov 2011 20:14:30 +0000 (20:14 +0000)]
Fix regression introduced by SDP fixups
If capability is adjusted when switching to UDPTL during fax transmission, fax
teardown fails. Make sure capability is only touched if RTP is active. This
regression was introduced in R344385.
........
Merged revisions 344769 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Richard Mudgett [Fri, 11 Nov 2011 18:01:36 +0000 (18:01 +0000)]
Make CLI "core show channel" not hold the channel lock during console output.
Holding the channel lock while the CLI "core show channel" command is
executing can slow down the system. It could block the system if the
console output is halted or paused.
* Made capture the CLI "core show channel" output into a buffer to be
output after the channel is unlocked.
* Removed use of C++ keyword as a variable name. out renamed to obuf.
* Checked allocation of obuf for failure so will not crash.
Richard Mudgett [Thu, 10 Nov 2011 23:01:31 +0000 (23:01 +0000)]
Fix potential deadlock calling ast_call() with channel locks held.
Fixed app_queue.c:ring_entry() calling ast_call() with the channel locks
held. Chan_local attempts to do deadlock avoidance in its ast_call()
callback and could deadlock if a channel lock is already held.
........
Merged revisions 344539 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Richard Mudgett [Thu, 10 Nov 2011 22:36:47 +0000 (22:36 +0000)]
Make AMI event AgentCalled get CallerID/ConnectedLine info from the incoming channel.
It was strange that the AgentCalled AMI event would get most of its
information from the incoming channel but then get the CallerID
information from the outgoing channel. Before connected line support was
added, this information was always the same at this point.
David Vossel [Thu, 10 Nov 2011 21:54:42 +0000 (21:54 +0000)]
Fixes issue with ConfBridge participants hanging up during DTMF feature menu usage getting stuck in conference forever.
When a conference user enters the DTMF menu they are suspended from the
bridge while the channel is handed off to the DTMF feature code. If a
user entered this state and hungup, there existed a race condition where
the channel could not exit the conference because it was waiting on a
signal that would never arrive. This patch fixes that, because it would
stupid for me to talk about the problem and commit a patch for something else.
Kinsey Moore [Thu, 10 Nov 2011 21:14:52 +0000 (21:14 +0000)]
Fix another incorrect case with meetme's PIN logic and add documentation
This fixes an issue where a user of a dynamic conference was asked for a PIN
twice. This also adds documentation to assist in future modifications to the
piece of code responsible for PIN checking.
(closes issue AST-670)
........
Merged revisions 344439 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Kinsey Moore [Thu, 10 Nov 2011 18:14:20 +0000 (18:14 +0000)]
Fix several bugs with SDP parsing and well-formedness of responses
Fix bug ASTERISK-16558 which dealt with the order of responses to incoming
streams defined by SDP.
Fix unreported bug where offering multiple same-type streams would cause
Asterisk to reply with an incorrect SDP response missing one or more streams
without a proper declination.
Fix bugs related to a single non-audio stream being offered with responses
requesting codecs that were not offered in the initial invite along with an
additional audio stream that was not in the initial invite.
Terry Wilson [Wed, 9 Nov 2011 20:07:34 +0000 (20:07 +0000)]
Don't treat a host:port string as a domain
The domain matching code prior to 1.8 used to manually remove the port
from the host:port string when determining if an incoming request
matched the list of domains. When switching to the new parsing
functions, the documentation implied that the "domain" was being
returned by these functions, when instead it was returning the
"hostport" as defined by RFC 3261. This led to confusion and resulted
in 1.8+ rejecting an incoming request from x.x.x.x:xxxxx when
domain=x.x.x.x was set in sip.conf.
This patch renames the "domain" variables in the parsing functions to
"hostport" to more accurately describe what it is that they are
returning and also properly truncates the resulting hostport strings
when dealing with domain matching.
Kinsey Moore [Wed, 9 Nov 2011 17:14:28 +0000 (17:14 +0000)]
Fix pin parameter behavior regression in MeetMe
The last time this code was touched (by me), a subtlety was missed based on the
difference between needing to check a pin's validity and the need to prompt
for a pin.
(closes issue ASTERISK-18488)
........
Merged revisions 344102 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Richard Mudgett [Tue, 8 Nov 2011 21:59:49 +0000 (21:59 +0000)]
Residual changes for Asterisk v10 branch from ASTERISK-18747.
Residual changes for Asterisk v10 branch from ASTERISK-18747 after
https://reviewboard.asterisk.org/r/1564/ commit and associated dialogs
callid hash key change fix.
* Make check_rtp_timeout() return CMP_MATCH if need to delete dialog from
dialogs_rtpcheck. This is an optimization to avoid an unneeded
lock/unlock and object search when using ao2_unlink.
* Prevent crash in check_rtp_timeout() if dialog->rtp is NULL.
David Vossel [Tue, 8 Nov 2011 18:29:33 +0000 (18:29 +0000)]
Fixes regression caused by r343635
There was a missing unlock for a function return that is only
present in Asterisk 10 and Asterisk Trunk.
(closes issue ASTERISK-18839)
Reported by: Michael L. Young
Patches:
asterisk-18839-missing-lock-trunk-v2.diff (License #5026) patch uploaded by Michael L. Young
Kinsey Moore [Mon, 7 Nov 2011 22:37:10 +0000 (22:37 +0000)]
Make "sip show settings" CLI command get RPID flags from the right global page
The "Trust RPID" and "Send RPID" entries in the "sip show settings" CLI command
pulled the flags from the incorrect global flags page. These are now read from
sip global flags page 0.
Changing an object value used as a container key requires removing the
object from the container and reinserting it.
* Created change_callid_pvt() to call instead of build_callid_pvt(). The
change_callid_pvt() will correctly change the dialog callid so the ao2
conainter can explicitly unlink it.
........
Merged revisions 343637 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Kinsey Moore [Mon, 7 Nov 2011 20:31:57 +0000 (20:31 +0000)]
Prevent BLF subscriptions from causing deadlocks
Fix a locking inversion in sip_send_mwi_to_peer that was causing deadlocks.
This function now requires that both the peer and associated pvt be unlocked
before it is called for cases where peer and peer->mwipvt form a circular
reference.
Walter Doekes [Mon, 7 Nov 2011 19:55:54 +0000 (19:55 +0000)]
Correct the default udptl port range.
The udptl port range was defined as 4000-4999 in the udptl.conf.sample,
as 4500-4599 if you didn't have a config and 4500-4999 if your config
was broken. Default is now 4000-4999.
Richard Mudgett [Mon, 7 Nov 2011 19:51:42 +0000 (19:51 +0000)]
Fix deadlock if peer is destroyed while sending MWI notice.
A dialog cannot be destroyed by the ao2_callback dialog_needdestroy
because of a deadlock between the dialogs container lock and the RWLOCK of
the events subscription list.
* Create dialogs_to_destroy container to hold dialogs that will be
destroyed.
* Ensure that the event subscription callback will never happen with an
invalid peer pointer by making the event callback removal the first thing
in the peer destructor callback.
NOTE: This particular deadlock will not happen with Asterisk 10, but some
of the changes still apply.
Alexandr Anikin [Fri, 4 Nov 2011 15:11:52 +0000 (15:11 +0000)]
Final fix memleaks in GkClient codes, same for Timer codes.
(these memleaks stop development of gk codes, now i can continue)
Fix printHandler 'Unbalanced Structure' issues with locking printHandler
data for single thread.
........
Merged revisions 343281 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Walter Doekes [Thu, 3 Nov 2011 20:31:53 +0000 (20:31 +0000)]
Fix sqlite config driver segfault and broken queries
The sqlite realtime handler assumed you had a static config configured
as well. The realtime multientry handler assumed that you weren't using
dynamic realtime.
Terry Wilson [Thu, 3 Nov 2011 15:39:25 +0000 (15:39 +0000)]
Make room for the fax detect flags
The original REGISTERTRYING flag, in addition to being impossible to
check, also encroached on the space for the flag above it. This
patch moves the flags that were below REGISTERTRYING back to where
they were as though we had just removed the REGISTERTRYING option.
........
Merged revisions 343276 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Terry Wilson [Wed, 2 Nov 2011 23:03:48 +0000 (23:03 +0000)]
Remove registertrying option in chan_sip
This option is not only useless, but has been broken since inception since
the flag was never copied from the peer where it is set to the pvt where
it was checked. RFC 3261 specificially states that you should not send a
provisional response to a non-INVITE request, and if we did fix the code
so that it worked, it would cause the same kind of user enumeration
vulnerability that we've discussed with the nat= setting. This patch
removes registertrying option and any code that would have sent a 100
response to a register.
Walter Doekes [Wed, 2 Nov 2011 22:24:23 +0000 (22:24 +0000)]
Fix improper warning introduced by r342927 and more tweaks
Changeset r342927 introduced a warning which was only supposed to be
emitted when a found realtime peer had an empty (or no) name. It turned
out that there were some inconsistencies left. Now found peers with an
empty name are explicitly ignored like before r342927 but better.
Walter Doekes [Wed, 2 Nov 2011 21:37:11 +0000 (21:37 +0000)]
Ensure that string field lengths are properly aligned
Integers should always be aligned. For some platforms (ARM, SPARC) this
is more important than for others. This changeset ensures that the
string field string lengths are aligned on *all* platforms, not just on
the SPARC for which there was a workaround. It also fixes that the
length integer can be resized to 32 bits without problems if needed.
(closes issue ASTERISK-17310)
Reported by: radael, S Adrian
Reviewed by: Tzafrir Cohen, Terry Wilson
Tested by: S Adrian
Modify comments in MeetMe application documentation about DAHDI.
The MeetMe application documentation has some comments about usage of DAHDI,
and they were a bit outdated relative to modern DAHDI releases. This patch
changes the comment to just tell the user that a functional DAHDI timing
source is required, and no longer mention 'dahdi_dummy', since that module
does not exist in current DAHDI releases.
........
Merged revisions 342990 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Walter Doekes [Tue, 1 Nov 2011 20:58:18 +0000 (20:58 +0000)]
Several fixes to the chan_sip dynamic realtime peer/user lookup
There were several problems with the dynamic realtime peer/user lookup
code. The lookup logic had become rather hard to read due to lots of
incremental changes to the realtime_peer function. And, during the
addition of the sipregs functionality, several possibilities for memory
leaks had been introduced. The insecure=port matching has always been
broken for anyone using the sipregs family. And, related, the broken
implementation forced those using sipregs to *still* have an ipaddr
column on their sippeers table.
Thanks Terry Wilson for comprehensive testing and finding and fixing
unexpected behaviour from the multientry realtime call which caused
the realtime_peer to have a completely unused code path.
This changeset fixes the leaks, the lookup inconsistenties and that
you won't need an ipaddr column on your sippeers table anymore (when
you're using sipregs). Beware that when you're using sipregs, peers
with insecure=port will now start matching!
(closes issue ASTERISK-17792)
(closes issue ASTERISK-18356)
Reported by: marcelloceschia, Walter Doekes
Reviewed by: Terry Wilson
Walter Doekes [Tue, 1 Nov 2011 19:48:26 +0000 (19:48 +0000)]
Cleanup references to sipusers and sipfriends dynamic realtime families
Somewhere between 1.4 and 1.8 the sipusers family has become completely
unused. Before that, the sipfriends family had been obsoleted in favor
of separate sipusers and sippeers families. Apparently, they have been
merged back again into a single family which is now called "sippeers".
Matthew Jordan [Mon, 31 Oct 2011 16:04:35 +0000 (16:04 +0000)]
Fixed invalid memory access when adding extension to pattern match tree
When an extension is removed from a context, its entry in the pattern match
tree is not deleted. Instead, the extension is marked as deleted. When an
extension is removed and re-added, if that extension is also a prefix of
another extension, several log messages would report an error and did not
check whether or not the extension was deleted before accessing the memory.
Additionally, if the extension was already in the tree but previously
deleted, and the pattern was at the end of a match, the findonly flag was
not honored and the extension would be erroneously undeleted.
Additionaly, it was discovered that an IAX2 peer could be unregistered
via the CLI, while at the same time it could be scheduled for unregistration
by Asterisk. The unregistration method now checks to see if the peer
was already unregistered before continuing with an unregistration.
(closes issue ASTERISK-18135)
Reported by: Jaco Kroon, Henry Fernandes, Kristijan Vrban
Tested by: Matt Jordan
Richard Mudgett [Sat, 29 Oct 2011 04:26:28 +0000 (04:26 +0000)]
Fix AST_LIST_INSERT_BEFORE_CURRENT() updating the wrong variable.
AST_LIST_INSERT_BEFORE_CURRENT() could not be used twice in an iteration
or before AST_LIST_REMOVE_CURRENT() without corrupting the list.
AST_LIST_INSERT_BEFORE_CURRENT() could also corrupt the list if
AST_LIST_INSERT_BEFORE_CURRENT() or AST_LIST_REMOVE_CURRENT() is used on
the next iteration.
* Fixed cut and paste error using the wrong variable in
AST_LIST_INSERT_BEFORE_CURRENT().
* Added linked list unit tests for AST_LIST_INSERT_BEFORE_CURRENT(),
AST_LIST_APPEND_LIST(), and AST_LIST_INSERT_LIST_AFTER().
........
Merged revisions 342661 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Jonathan Rose [Thu, 27 Oct 2011 19:41:44 +0000 (19:41 +0000)]
Fix sequence number overflow over 16 bits causing codec change in RTP packets.
Sequence number was handled as an unsigned integer (usually 32 bits I think, more
depending on the architecture) and was put into the rtp packet which is basically
just a bunch of bits using an or operation. Sequence number only has 16 bits
allocated to it in an RTP packet anyway, so it would add to the next field which
just happened to be the codec. This makes sure the sequence number is set to be
a 16 bit integer regardless of architecture (hopefully) and also makes it so the
incrementing of the sequence number does bitwise or at the peak of a 16 bit number
so that the value will be set back to 0 when going beyond 65535 anyway.
(closes issue ASTERISK-18291)
Reported by: Will Schick
Review: https://reviewboard.asterisk.org/r/1542/
........
Merged revisions 342602 from http://svn.asterisk.org/svn/asterisk/branches/1.8
Jonathan Rose [Thu, 27 Oct 2011 14:17:11 +0000 (14:17 +0000)]
Cleanup reference leaks in res_jabber
res_jabber.c had a number of places where astobjs would be referenced and have their
reference counts bumped without having a dereference made before the object lost scope.
This patch adds a number of ASTOBJ_UNREFs to resolve that.
Richard Mudgett [Tue, 25 Oct 2011 21:50:21 +0000 (21:50 +0000)]
Change D-channel warning to be less confusing on non-NFAS setups.
The "No D-channels available! Using Primary channel as D-channel anyway!"
WARNING message has been confusing on non-NFAS setups. The message refers
to things that are NFAS specific.
* Changed the warning to several different warnings to be more accurate
for the situation and less confusing as a result:
"No D-channels up! Switching selected D-channel from X to Y.",
"No D-channels up!", and
"D-channel is down!".
........
Merged revisions 342484 from http://svn.asterisk.org/svn/asterisk/branches/1.8