* Fixed a LOG_ERROR message referencing the config variable list v that
had previously been processed and became NULL.
* Added error return value set that was missing in an ast_append_ha()
error return path.
(closes issue ASTERISK-18743)
Reported by: Michele
Patches:
issueA18743-fix_dynamic_exclude_static_bad_host_log.patch (license #5674) patch uploaded by Walter Doekes
Tested by: Michele
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@343851 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@343637 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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.
(closes issue ASTERISK-18663)
Review: https://reviewboard.asterisk.org/r/1563/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@343621 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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.
(closes issue ASTERISK-18747)
Reported by: Gregory Hinton Nietsky
Review: https://reviewboard.asterisk.org/r/1564/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@343577 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/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@343220 65c4cc65-6c06-0410-ace0-fbb531ad65f3
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.
Reviewed by: Stefan Schmidts, Terry Wilson
Review: https://reviewboard.asterisk.org/r/1560
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@343181 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
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@342927 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This behavior matches up more closely with the way invite/register/etc are handled.
This patch also modifies some adjacent code for code style compliance. Pretty minor.
(closes issue ASTERISK-17616)
Reported by: Jeremy Kister
Patches:
chan_sip.c-options-fromuser-fix-v1.patch uploaded by Jeremy Kister (license #6232)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@342061 65c4cc65-6c06-0410-ace0-fbb531ad65f3
If a SIP dial string contains a numeric hostname that is not a peer name,
don't try to resolve it as it is unlikely that someone really means
Dial(SIP/0.0.4.26) when Dial(SIP/1050) is called. Also, make sure that
create_addr returns -1 if an address isn't resolved so that we don't
attempt to send SIP requests to an address that doesn't resolve.
(closes issue ASTERISK-17146, ASTERISK-17716)
Review: https://reviewboard.asterisk.org/r/1532/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@341314 65c4cc65-6c06-0410-ace0-fbb531ad65f3
* Fix potential deadlocks in SIP and IAX blind transfer to parking.
* Fix SIP, IAX, DAHDI analog, and MGCP channel drivers to respect the
parkext_exclusive option with transfers (Park(,,,,,exclusive_lot)
parameter). Created ast_park_call_exten() and ast_masq_park_call_exten()
to maintian API compatibility.
* Made masq_park_call() handle a failed ast_channel_masquerade() setup.
* Reduced excessive struct parkeduser.peername[] size.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@341254 65c4cc65-6c06-0410-ace0-fbb531ad65f3
If parse_uri was called with an empty URI, some pointers would be
modified and an invalid read could result. This patch avoids calling
parse_uri with an empty contact uri when parsing REGISTER requests.
AST-2011-012
(closes issue ASTERISK-18668)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@341189 65c4cc65-6c06-0410-ace0-fbb531ad65f3
RTCP is now disabled for "inactive" RTP audio streams during SIP T.38 sessions.
The ability to disable RTCP streams in res_rtp_asterisk was missing, so this
code was added to support the bug fix.
(closes issue ASTERISK-18400)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@340970 65c4cc65-6c06-0410-ace0-fbb531ad65f3
We should update the fullcontact field in the realtime table whether or
not rtcachefriends is set. There is no reason to treat a non-cached
realtime entity differently than a cached in this regard.
(closes issue ASTERISK-18446)
Reported by: wdoekes
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@340534 65c4cc65-6c06-0410-ace0-fbb531ad65f3
* Fixed deadlock potential calling dialog_unlink_all() in
__sip_autodestruct(). Found by helgrind.
* Fixed deadlock potential in handle_request_invite() after calling
sip_new(). Found by helgrind.
* The sip_new() function now returns with the created channel already
locked.
* Removed the dead code that starts a PBX in in sip_new(). No sip_new()
callers caused that code to be executed and it was a bad thing to do
anyway.
* Removed unused parameters and return value from dialog_unlink_all().
* Made dialog_unlink_all() and __sip_autodestruct() safely obtain the
owner and private channel locks without a deadlock avoidance loop.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@340284 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This patch fixes the case where an INVITE is received with c=0.0.0.0 or ::.
In this case, the call should be placed on hold. Previously, we checked for
the address being null; this patch keeps that behavior but also checks for
the ANY IP addresses.
Review: https://reviewboard.asterisk.org/r/1504/
(closes issue ASTERISK-18086)
Reported by: James Bottomley
Tested by: Matt Jordan
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@340164 65c4cc65-6c06-0410-ace0-fbb531ad65f3
* Makes chan_sip set the tag to the channel name.
* Fixes received debug message sequence number.
* Removed tx/rx debug message type since it was hard coded to 0.
* Made udptl.c logged message header consistent if possible: "UDPTL (%s): ".
* Removed unused rx_expected_seq_no from struct ast_udptl.
(closes issue ASTERISK-18401)
Reported by: Kevin P. Fleming
Patches:
jira_asterisk_18401_v1.8.patch (license #5621) patch uploaded by rmudgett
Tested by: Matthew Nicholson
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@339625 65c4cc65-6c06-0410-ace0-fbb531ad65f3
After the change in r336294, the new AST_CONTROL_UPDATE_RTP_PEER frame
is sent when a re-invite happens. If we receive a re-invite from a device
the waitstream_core was not aware of the new control frame and would drop
the call.
(closes issue ASTERISK-18610)
Reported by: Kristijan_Vrban
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@339086 65c4cc65-6c06-0410-ace0-fbb531ad65f3
ASTERISK-17486 exposed the problem for AMI parsers.
(closes issue ASTERISK-18649)
Reported by: Jacek Konieczny
Patches:
asterisk-sipshowpeer_response_end.patch (license #6298) patch uploaded by Jacek Konieczny
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@338663 65c4cc65-6c06-0410-ace0-fbb531ad65f3
The SIP_HEADER function only works on the the initial SIP INVITE. The documentation was updated
in trunk, but not in 1.8 or 10, so I'm making them match.
(Closes issue ASTERISK-18640)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@338492 65c4cc65-6c06-0410-ace0-fbb531ad65f3
(closes issue ASTERISK-18573)
Patches:
sip_mwi_lock.patch (license #5041) by Gregory Hinton Nietsky
Thanks to irrot for the reminder, to Gregory for the patch!
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@336378 65c4cc65-6c06-0410-ace0-fbb531ad65f3
In a situation involving devices on separate Asterisk trunks, the remote RTP bridge would
break when starting a call with directmedia. This patch queues a new type of control frame
so that our RTP bridge loop can properly detect when these situations occur and check to see
if peers need to be updated in order to send their media to the proper location.
(Closes issue ASTERISK-18340)
Reported by: Thomas Arimont
(Closes issue ASTERISK-17725)
Reported by: kwk
Tested by: twilson, jrose
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@336294 65c4cc65-6c06-0410-ace0-fbb531ad65f3
After the launch of 1.6 event-based MWI we have two threads handling the peer->mwipvt,
which cause issues with SIP history additions in combination with the max limit for
number of history entries.
Review: https://reviewboard.asterisk.org/r/1373/
(closes issue ASTERISK-18288)
Thanks to irrot for peer review. Work with this bug funded by IPvision AS
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@335319 65c4cc65-6c06-0410-ace0-fbb531ad65f3
When a SIP phone uses the dial application and receives a 484 Address
Incomplete response, if overlapped dialing is enabled for SIP, then
the 484 Address Incomplete is forwarded back to the SIP phone and the
HANGUPCAUSE channel variable is set to 28. Previously, the Incomplete
application dialplan logic was automatically triggered; now, explicit
dialplan usage of the application is required.
Additionally, this patch adds a new AST_CONTOL_FRAME type called
AST_CONTROL_INCOMPLETE. If a channel driver receives this control frame,
it is an indication that the dialplan expects more digits back from the
device. If the device supports overlap dialing it should attempt to
notify the device that the dialplan is waiting for more digits; otherwise,
it can handle the frame in a manner appropriate to the channel driver.
(closes issue ASTERISK-17288)
Reported by: Mikael Carlsson
Tested by: Matthew Jordan
Review: https://reviewboard.asterisk.org/r/1416/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@335064 65c4cc65-6c06-0410-ace0-fbb531ad65f3
The response of SIPshowpeer ends with "\r\n\r\n". Since other commands are
ended by using \r\n this confuses any interfacing script.
(closes issue ASTERISK-17486)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@334006 65c4cc65-6c06-0410-ace0-fbb531ad65f3
If Asterisk starts and no DNS is available, outbound registrations will fail
indefinitely. This patch copies the address from the sip_registry struct, which
will be updated, to the peer->addr when necessary.
If dnsmgr is enabled, the registration fails without the patch because even
though the address on the registry is updated via dnsmgr, the address is just
copied on the first try. Since we use ast_sockaddr_copy, dnsmgr can't update
the address that is copied to the sip_pvt or peers.
Closes issue ASTERISK-18000
Review: https://reviewboard.asterisk.org/r/1335/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@333836 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Before, having multiple subscriptions to mailboxes on a sip peer set via the mailbox
setting in sip.conf would only result in updates being sent on whichever mailbox
triggered the mwi event. Now all of them get counted regardless. Also fixes a bug
involving parsing of the mailbox option in sip.conf so that trailing and leading
spaces before/after commas are trimmed.
(closes issue ASTERISK-18067)
Reported by: aragon
(closes issue ASTERISK-15479)
Reported by: Ben Winslow
Patches: chan_sip.c-mwi_multi_mailbox_fix-1.6.2.13.diff (License #5288) patch uploaded by Ben Winslow
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@332118 65c4cc65-6c06-0410-ace0-fbb531ad65f3
setting of HASH(SIP_CAUSE,<chan name>) on the channel.
Having chan_sip set HASH(SIP_CAUSE,<chan name>) on the channel carries a
significant performance penalty because of the usage of the MASTER_CHANNEL()
dialplan function.
AST-580
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@332021 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Any SIP notify sent via AMI or CLI leaks a SIP PVT with ref count +2. Removing
the additional ref just before the invite and adding an unref following it
corrects the issue as seen via REF_DEBUG. The unref existed in a distant
revision and it appears as though the wrong ref operation was removed.
(closes issue ASTERISK-18091)
Review: https://reviewboard.asterisk.org/r/1332/
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@331517 65c4cc65-6c06-0410-ace0-fbb531ad65f3
* Add some reentrancy protection in pbx.c when creating the contexts_table
hash table.
* Fix inverted test in chan_sip.c conditional code.
* Fix uninitialized variable and use of the wrong variable in chan_iax2.c.
* Fix test of return value in app_parkandannounce.c. Explicitly testing
for -1 is bad if the function does not actually return that value when it
fails.
* Fixup some comments and add some curly braces in features.c.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@331248 65c4cc65-6c06-0410-ace0-fbb531ad65f3