Commit Graph

3186 Commits

Author SHA1 Message Date
Richard Mudgett
fe7fb3772b Fix sip_cfg.notifycid to be set with the defined enum values.
The invalid value used when notifycid was enabled was benign.  As far as
the code was concerned -1 and 1 are equivalent.

(closes issue ASTERISK-19232)
Reported by: Eike Kuiper


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@352090 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-23 17:33:34 +00:00
Mark Michelson
1f178bb083 Remove XXX comment that is not necessary.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@352016 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-21 00:08:06 +00:00
Mark Michelson
27d894d624 Fix RTP reference leak.
If a blind transfer were initiated using a REFER without a prior
reINVITE to place the call on hold, AND if Asterisk were sending
RTCP reports, then there was a reference for the RTP instance
of the transferer.

This fixes the issue by merging two similar but slightly conflicting
sections of code into a single area. It also adds a stop_media_flows()
call in the case that the transferer's UA never sends a BYE to us
like it is supposed to.

(issue ASTERISK-19192)

Review: https://reviewboard.asterisk.org/r/1681/



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@352014 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-21 00:04:13 +00:00
Jonathan Rose
e2629535cb Accidentally left off a semicolon only in 1.8 somehow for previous patch.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@351765 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-20 16:01:32 +00:00
Jonathan Rose
836e26a426 Adds setting of mwi_from field to check_auth_result check_peer_ok
(closes ASTERISK-19057)
Reported By: Yuri
Patches: 348360chan_sip.diff uploaded by Yuri (license 5242)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@351759 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-20 15:42:28 +00:00
Richard Mudgett
f3c3de4c71 Misc minor fixes in reqresp_parser.c and chan_sip.c.
* Fix corner cases in get_calleridname() parsing and ensure that the
output buffer is nul terminated.

* Make get_calleridname() truncate the name it parses if the given buffer
is too small rather than abandoning the parse and not returning anything
for the name.  Adjusted get_calleridname_test() unit test to handle the
truncation change.

* Fix get_in_brackets_test() unit test to check the results of
get_in_brackets() correctly.

* Fix parse_name_andor_addr() to not return the address of a local buffer.
This function is currently not used.

* Fix potential NULL pointer dereference in sip_sendtext().

* No need to memset(calleridname) in check_user_full() or tmp_name in
get_name_and_number() because get_calleridname() ensures that it is nul
terminated.

* Reply with an accurate response if get_msg_text() fails in
receive_message().  This is academic in v1.8 because get_msg_text() can
never fail.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@351618 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-19 23:17:31 +00:00
Jonathan Rose
5d9b4af4e2 Eliminates doubling the :port part of SIP Notify Message-Account headers.
This patch prevents the domain string from getting mangled during the initreqprep
step by moving the initialization to before its immediate use.  It also documents
this pitfall for the ast_sockaddr_stringify functions.

(issue ASTERISK-19057)
Reported by: Yuri
Review: https://reviewboard.asterisk.org/r/1678/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@351559 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-19 21:46:31 +00:00
Joshua Colp
eb10c11063 Prevent crash when an SDP offer is received with an encrypted video stream when support for video is disabled and res_srtp is loaded.
(closes issue ASTERISK-19202)
Reported by: Catalin Sanda


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@351504 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-19 21:11:12 +00:00
Stefan Schmidt
fde0147b3f The get_pai function in chan_sip.c didn't recognized a proper callerid name and
number from a P-Asserted-Identity cause the header parsing logic was wrong. 
Changing the parsing functions to the sip header parsing APIs in 
reqresp_parser.h solves this problem.

Review: https://reviewboard.asterisk.org/r/1673
Reviewed by: wdoekes2 and Mark Michelson



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@351396 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-18 14:57:30 +00:00
Mark Michelson
eae2207967 Use built-in parsing functions for Contact and Record-Route headers.
If a Contact or a Record-Route header had a quoted string with an
item in angle brackets, then we would mis-parse it. For instance,
"Bob <1234>" <1234@example.org>
would be misparsed as having the URI "1234"
The fix for this is to use parsing functions from reqresp_parser.h
since they are heavily tested and are awesome.

(issue ASTERISK-18990)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@351284 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-17 16:41:23 +00:00
Matthew Jordan
ec47280520 Fix udptl issue with initial INVITE introduced by r351027
When an inital INVITE occurs that contains image media, a channel
is not yet associated with the SIP dialog.  The file descriptor
associated with the udptl session needs to be set in
initialize_udptl or in sip_new to account for this scenario.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@351233 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-17 16:06:42 +00:00
Russell Bryant
afcb666f2e Add some missing locking in chan_sip.
This patch adds some missing locking to the function 
send_provisional_keepalive_full().  This function is called from the scheduler,
which is processed in the SIP monitor thread.  The associated channel (or pbx)
thread will also be using the same sip_pvt and ast_channel so locking must be
used.  The sip_pvt_lock_full() function is used to ensure proper locking order
in a safe manner.

In passing, document a suspected reference counting error in this function.
The "fix" is left commented out because when the "fix" is present, crashes
occur.  My theory is that fixing it is exposing a reference counting error
elsewhere, but I don't know where.  (Or my analysis of this being a problem
could have been completely wrong in the first place).  Leave the comment in
the code for so that someone may investigate it again in the future.

Also add a bit of doxygen to transmit_provisional_response().

(closes issue ASTERISK-18979)

Review: https://reviewboard.asterisk.org/r/1648


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@351182 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-17 01:37:03 +00:00
Terry Wilson
d310ccf250 Ensure ACK retransmit & hangup on non-200 response to INVITE
When handling a non-2xx final response on an INVITE transaction, we have to
keep the transaction around after we send an ACK in case we receive a
retransmission of the response so we can re-transmit the ACK, but also tear
down the ast_channel as soon as we transmit the ACK. Before this patch, we
could fail at both of these things. Calling sip_alreadygone/needdestroy
prevented us from keeping the transaction up and retransmitting the ACK, and
queueing CONGESTION was not sufficient to cause the channel to be torn down
when originating calls via the CLI, for example.

This patch queues a hangup with CONGESTION instead of just queueing CONGESTION
for these responses and removes the sip_alreadygone and sip_needdestroy calls
from handle_response_invite on non-2xx responses. It relies on the hangup
calling sip_scheddestroy.

For more information, see section 17.1.1.1 of RFC 3261.

(closes issue ASTERISK-17717)
Review: https://reviewboard.asterisk.org/r/1672/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@351130 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-16 21:12:53 +00:00
Terry Wilson
1dbaee36b5 Don't prematurely stop SIP session timer
When Asterisk is the UAS (incoming call, endpoint is re-inviting) the SIP session timer expires after half the time the sip endpoint indicates in the Session-expires header in proc_session_timer(). The session timer was being stopped totally and being handled as an error case instead of running again until the second expiry. This patch treats the half-time expiry as a non-error case and continues the timer until the true expiry.

(closes issue ASTERISK-18996)
Reported by: Thomas Arimont
Tested by: Thomas Arimont
Patches: session_timer_fix.diff by Terry Wilson (License #5357)
  based on session_timer.patch by Thomas Arimont (License #5525)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@351080 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-16 20:06:45 +00:00
Matthew Jordan
51079c6f08 Create and initialize udptl only when dialog negotiates for image media
Prior to this patch, the udptl struct was allocated and initialized when a
dialog was associated with a peer that supported T.38, when a new SIP
channel was allocated, or what an INVITE request was received.  This resulted
in any dialog associated with a peer that supported T.38 having udptl support
assigned to it, including the UDP ports needed for communication.  This
occurred even in non-INVITE dialogs that would never send image media.

This patch creates and initializes the udptl structure only when the SDP
for a dialog specifies that image media is supported, or when Asterisk
indicates through the appropriate control frame that a dialog is to support
T.38.

(closes issue ASTERISK-16698)
Reported by: under
Tested by: Stefan Schmidt
Patches: udptl_20120113.diff uploaded by mjordan (License #6283)

(closes issue ASTERISK-16794)
Reported by: Elazar Broad
Tested by: Stefan Schmidt

review: https://reviewboard.asterisk.org/r/1668/




git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@351027 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-16 19:09:45 +00:00
Terry Wilson
96770386a7 Don't leak CID in From header when presentation=unavailable
When someone does Set(CALLERPRES()=unavailable) (or
Set(CALLERID(pres)=unavailable)) when sendrpid=no, the From header shows
"Anonymous" <anonymous@anonymous.invalid>. When sendrpid=yes/pai, the From
header will still display the callerid info, even though we supply an rpid
header with the anonymous info. It seems like we shouldn't leak that info in
any case. Skimming http://tools.ietf.org/html/draft-ietf-sip-privacy-04 seems
to indicate that one shouldn't send identifying info in the From in this case.

This patch anonymizes the From header as well even when sendrpid=yes/pai.

(closes issue ASTERISK-16538)

Review: https://reviewboard.asterisk.org/r/1649/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@349968 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-06 23:17:24 +00:00
Jonathan Rose
21fa14919d Adds Subscription-State header to notify with call completion. per RFC3265
(Closes issue ASTERISK-17953)
Reported by: George Konopacki
Patches:
	19400.patch uploaded by mmichelson (license 5049)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@349482 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-04 19:27:26 +00:00
Richard Mudgett
9698383360 Fix extension state callback references in chan_sip.
Chan_sip gives a dialog reference to the extension state callback and
assumes that when ast_extension_state_del() returns, the callback cannot
happen anymore.  Chan_sip then reduces the dialog reference count
associated with the callback.  Recent changes (ASTERISK-17760) have
resulted in the potential for the callback to happen after
ast_extension_state_del() has returned.  For chan_sip, this could be very
bad because the dialog pointer could have already been destroyed.

* Added ast_extension_state_add_destroy() so chan_sip can account for the
sip_pvt reference given to the extension state callback when the extension
state callback is deleted.

* Fix pbx.c awkward statecbs handling in ast_extension_state_add_destroy()
and handle_statechange() now that the struct ast_state_cb has a destructor
to call.

* Ensure that ast_extension_state_add_destroy() will never return -1 or 0
for a successful registration.

* Fixed pbx.c statecbs_cmp() to compare the correct information.  The
passed in value to compare is a change_cb function pointer not an object
pointer.

* Make pbx.c ast_merge_contexts_and_delete() not perform callbacks with
AST_EXTENSION_REMOVED with locks held.  Chan_sip is notorious for
deadlocking when those locks are held during the callback.

* Removed unused lock declaration for the pbx.c store_hints list.

(closes issue ASTERISK-18844)
Reported by: rmudgett

Review: https://reviewboard.asterisk.org/r/1635/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@348940 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-23 02:09:16 +00:00
Stefan Schmidt
9d53f3352b Fix possible misshandling of an incoming SIP response as a peer poke response.
Also make sure peer has even qualify enabled when handle a peer poke response.

(closes issue ASTERISK-18940)
Reported by: Vitaliy
Tested by: Vitaliy and UnixDev

Review: https://reviewboard.asterisk.org/r/1620
Reviewed by: David Vossel



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@348048 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-13 15:16:50 +00:00
Walter Doekes
3240b06b10 Fix regression when using tcpenable=no and tlsenable=yes.
The tlsenable settings are tucked away in main/tcptls.c, so I missed
them when resolving ASTERISK-18837. This should resolve the test suite
breakage of the sip tls tests.

Review: https://reviewboard.asterisk.org/r/1615
Reviewed by: Matt Jordan


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@347718 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-08 21:28:57 +00:00
Terry Wilson
d47e5f261f Don't crash on INFO automon request with no channel
AST-2011-014. When automon was enabled in features.conf, it was possible
to crash Asterisk by sending an INFO request if no channel had been
created yet.

(closes issue ASTERISK-18805)
........

Merged revisions 347530 from http://svn.asterisk.org/svn/asterisk/branches/1.6.2


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@347531 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-08 16:19:03 +00:00
Richard Mudgett
dc8125726e Make SIP INFO messages for dtmf-relay signals case insensitive.
(closes issue ASTERISK-18924)
Reported by: Kevin Taylor


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@347292 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-06 23:47:50 +00:00
Walter Doekes
954398172b 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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@347166 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-06 19:39:26 +00:00
Matthew Jordan
7c0ead6cb8 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)

Review: https://reviewboard.asterisk.org/r/1610/



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@347058 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-06 17:05:05 +00:00
Walter Doekes
fb00056373 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

(closes issue ASTERISK-18389)
(closes issue ASTERISK-18741)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@346899 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-04 09:57:02 +00:00
Jonathan Rose
78ea605bd2 Change 183 Ringing in sipfrag body to 180 ringing. 183 Ringing isn't even a thing.
183 is actually a session progress message.

(closes issue ASTERISK-18925)
Reported by: Sebastian Denz
Tested by: jrose
Patches:
	asterisk18-use_180_instead_of_183_in_sipfrag.diff by Sebastian Denz (License #6139)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@346697 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-01 20:36:34 +00:00
Jonathan Rose
458691a830 r346525 | jrose | 2011-11-30 15:10:38 -0600 (Wed, 30 Nov 2011) | 18 lines
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

(issue ASTERISK-18345)
Reported by: Stephane Cazelas

(issue ASTERISK-18342)
Reported by: Stephane Chazelas

Review: https://reviewboard.asterisk.org/r/1576/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@346564 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-11-30 21:41:31 +00:00
Walter Doekes
546e7517c5 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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@346147 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-11-23 20:15:00 +00:00
Terry Wilson
da4f0afd6f 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

(closes issue ASTERISK-18862)
Review: https://reviewboard.asterisk.org/r/1591/
........

Merged revisions 345776 from http://svn.asterisk.org/svn/asterisk/branches/1.4
........

Merged revisions 345800 from http://svn.asterisk.org/svn/asterisk/branches/1.6.2


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@345828 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-11-21 20:53:47 +00:00
Richard Mudgett
f435f45c50 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

Review: https://reviewboard.asterisk.org/r/1517/

Review: https://reviewboard.asterisk.org/r/1582/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@345273 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-11-14 21:43:39 +00:00
Kinsey Moore
4fcd52bc88 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.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@345063 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-11-14 15:08:12 +00:00
Kinsey Moore
5d102d9ee9 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.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@344769 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-11-11 20:10:58 +00:00
Richard Mudgett
85970b9b3b Check sip.conf maxforwards parameter for range 1 <= x <= 255.
JIRA AST-710


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@344715 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-11-11 18:35:09 +00:00
Kinsey Moore
47cff21b6d 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.

Review: https://reviewboard.asterisk.org/r/1516/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@344385 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-11-10 18:12:43 +00:00
Richard Mudgett
ae5c675720 Fix deadlock during dialplan reload.
Another deadlock between the conlock/hints and channels/channel locking
orders.

* Don't hold the channel and private lock in sip_new() when calling
ast_exists_extension().

(closes issue ASTERISK-18740)
Reported by: Byron Clark
Patches:
      sip_exists_exten_dlock_3.diff (license #5041) patch uploaded by Gregory Hinton Nietsky
      ASTERISK-18740.patch (license #6157) patch uploaded by Byron Clark
Tested by: Byron Clark


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@344268 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-11-09 20:37:53 +00:00
Terry Wilson
a2a11ee737 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.

Review: https://reviewboard.asterisk.org/r/1574/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@344215 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-11-09 19:57:04 +00:00
Richard Mudgett
d63e58203a Fixed reference to incorrect variable if unknown host configured crash.
* 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
2011-11-08 17:58:21 +00:00
Matthew Nicholson
59f002fd67 respect case changes in peer names on sip reload
ASTERISK-18669


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@343690 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-11-07 21:40:51 +00:00
Richard Mudgett
71769a3245 Fix __sip_subscribe_mwi_do() incorectly changing dialogs hash key callid.
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
2011-11-07 21:13:21 +00:00
Kinsey Moore
dc3ca68670 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.

(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
2011-11-07 20:27:38 +00:00
Richard Mudgett
3864c4083c 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.

(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
2011-11-07 19:36:56 +00:00
Terry Wilson
5844133aba 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.

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
2011-11-02 22:59:36 +00:00
Walter Doekes
fb50c1db4b 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.

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
2011-11-02 22:21:40 +00:00
Walter Doekes
ab2dacb555 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

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
2011-11-01 20:53:37 +00:00
Jonathan Rose
2adb133feb Outbound SIP OPTIONS messages will now include fromuser of related peer.
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
2011-10-24 19:49:51 +00:00
Terry Wilson
8eb030a3a2 Don't use is_int() since it doesn't link well on all platforms
Just create an normal API function in strings.h that does the same thing
just to be safe.

ASTERISK-17146


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@341379 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-10-19 07:38:52 +00:00
Stefan Schmidt
eae454ca3f Don't sent in-dialog requests like UPDATE when Asterisk has not yet received a Contact URI from a UAS
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@341366 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-10-19 07:15:51 +00:00
Terry Wilson
432657163f Don't resolve numeric hosts or contact unresolved hosts
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
2011-10-18 23:37:57 +00:00
Richard Mudgett
f2b371fedf More parking issues.
* 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
2011-10-18 21:03:04 +00:00
Terry Wilson
2426e2604e Initialize variables before calling parse_uri
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
2011-10-17 17:35:23 +00:00