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.
(closes issue ASTERISK-18747)
Reported by: Gregory Hinton Nietsky
Review: https://reviewboard.asterisk.org/r/1564/
........
Merged revisions 343577 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 343578 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@343579 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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.
Review: https://reviewboard.asterisk.org/r/1562/
........
Merged revisions 343220 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 343221 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@343222 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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
Review: https://reviewboard.asterisk.org/r/1549
........
Merged revisions 343157 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 343158 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@343163 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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
........
Merged revisions 342991 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@342992 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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
Review: https://reviewboard.asterisk.org/r/1395
........
Merged revisions 342927 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 342929 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@342930 65c4cc65-6c06-0410-ace0-fbb531ad65f3
* Fixed typo in format_cap.c:joint_copy_helper() using the wrong variable.
* Fix potential race between checking if an interface exists and adding it
to the container in format.c:ast_format_attr_reg_interface().
* Fixed double rwlock destroy in format.c:ast_format_attr_init() error
exit path.
* Simplified format.c:find_interface() and format.c:has_interface().
........
Merged revisions 342824 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@342825 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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
Review: https://reviewboard.asterisk.org/r/1526
........
Merged revisions 342769 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 342770 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@342771 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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
........
Merged revisions 342662 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@342663 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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
........
Merged revisions 342603 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@342604 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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
........
Merged revisions 342485 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@342486 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Despite an ominous sounding comment stating that membercount was for "logged
in" members only and thus we couldn't use ao2_container_count(), I could not
find a single place in the code where that seemed to be accurate. The only time
we decremented membercount was when we were marking something dead or actually
removing it. The only places we incremented it were either after ao2_link(), or
trying to correct for having set it to 0 during a reload. In every case where
we were correcting the value, it seemed that we were trying to make the count
actually match what ao2_container_count() would return. The only place I could
find where we made a determination about something being "logged in" or not, we
didn't trust the membercount, but instead looked at devicestate, paused, etc.
This patch removes membercount, replaces its use with ao2_container_count, and
manually adds the results of ao2_container_count to a "membercount" field for
ast_data queue query results. This patch also would fix AST-676, but as it is
slightly riskier than the previously committed fix, the two commits have been
made separately.
Reivew: https://reviewboard.asterisk.org/r/1541/
........
Merged revisions 342383 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 342384 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@342385 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/10
................
r342277 | kmoore | 2011-10-25 11:08:04 -0500 (Tue, 25 Oct 2011) | 25 lines
Merged revisions 342276 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r342276 | kmoore | 2011-10-25 11:06:57 -0500 (Tue, 25 Oct 2011) | 18 lines
Fix spool handling to allow call files to be hardlinked into place
This fixes the inotify code to handle call files being hardlinked into the
spool directory.
The smsq utility does this, instead of rename(), to ensure that it cannot
accidentally overwrite an existing spool file. A rename() might do that, but
link() will definitely not.
The inotify code had broken this, because it would wait for an IN_CLOSE_WRITE
event on the file... which was never forthcoming, since it was never opened.
Now we look for IN_OPEN events following the IN_CREATE event, and only wait
for an IN_CLOSE_WRITE if the file was actually opened.
Patch-by: dwmw2
(closes issue ASTERISK-18331)
Review: https://reviewboard.asterisk.org/r/1391/
........
................
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@342278 65c4cc65-6c06-0410-ace0-fbb531ad65f3
To use the new OBJ_KEY flag, the container hash and compare callback
functions must be updated to support OBJ_KEY. Otherwise, bad things
happen.
(issue ASTERISK-14769)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@342112 65c4cc65-6c06-0410-ace0-fbb531ad65f3
The fix for ASTERISK-12715 and ASTERISK-12685 added a check for the Park
application because the channel needed to be masqueraded to prevent a
crash. Since the Park application now always masquerades the channel into
the parking lot, the special check is no longer needed. The fix also
resulted in AGI exec Park attempting to double park the call and not honor
the Park application parameters.
* Removed no longer necessary call to ast_masq_park_call() by AGI exec for
the Park application. (Reverts -r146923)
* Fix Park application to only return 0 or -1. The AGI exec Park was
causing broken pipe error messages because the Park application returned 1
on successful park.
(closes issue ASTERISK-18737)
........
Merged revisions 341717 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 341718 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@341719 65c4cc65-6c06-0410-ace0-fbb531ad65f3
https://origsvn.digium.com/svn/asterisk/branches/10
........
r341599 | irroot | 2011-10-20 20:20:08 +0200 (Thu, 20 Oct 2011) | 8 lines
add documentation for check_state_unknown in configs/queues.conf.sample
app_queue allows calls to members in a "Unknown" state to be treated as available
setting check_state_unknown = yes will cause app_queue to query the channel driver
to better determine the state this only applies to queues with ringinuse or ignorebusy
set appropriately.
........
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@341624 65c4cc65-6c06-0410-ace0-fbb531ad65f3