Commit Graph

7128 Commits

Author SHA1 Message Date
Mark Michelson
202d83c42c Fix regressions with regards to route-set creation on early dialogs.
This fixes two main issues:

1. Asterisk would send a CANCEL to the route created by the provisional response
   instead of using the same destination it did in the initial INVITE.
2. If a new route set arrives in a 200 OK than was in the 1XX response (perfectly
   possible if our outbound INVITE gets forked), then the route set in the 200 OK
   needs to overwrite the route set in the 1XX response.

(closes issue ASTERISK-19358)
Reported by: Karsten Wemheuer
Tested by: Karsten Wemheuer
patches:
   ASTERISK-19358.patch uploaded by Mark Michelson (license 5049)
   ASTERISK-19358.patch uploaded by Stefan Schmidt (license 6034)

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



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@355732 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-17 18:57:28 +00:00
Sean Bright
dfe4ff5337 When IAX2 debugging is enabled, make sure to log 'apathetic' messages too.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@355529 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-15 19:26:38 +00:00
Sean Bright
314dcc01bc Only use maxtrunkcall and maxnontrunkcall in chan_iax2 if IAX_OLD_FIND is specified.
These variables are only accessed from the IAX_OLD_FIND path, so there is no reason
to keep them updated otherwise.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@355458 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-15 18:19:46 +00:00
Sean Bright
62b7e35b71 Use TRUNK_CALL_START as originally intended.
Back in r646, TRUNK_CALL_START was added and defined as 0x4000.  That same value
was also hard-coded in one part of the IAX2 code instead of using the #define.

TRUNK_CALL_START has changed over the years (for dealing with LOW_MEMORY), but
the hard-coded usage was never updated to match.  This patch fixes that.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@355448 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-15 17:24:22 +00:00
Mark Michelson
a5d76e1c11 Properly invert the return of a strncmp call.
This was causing identification that should have been
made private to be public.

(closes issue AST-814)
reported by Patrick Anderson

Patches:
	chan_sip.c.diff uploaded by Patrick Anderson (license 5430)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@355268 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-14 16:26:49 +00:00
Sean Bright
94ade43b56 Clear the high order bit from the destination call number before sending.
send_apathetic_reply takes the incoming frame's source call number as the
destination call number for the outgoing frame.  If the incoming frame was a
full frame, then the high order bit of the source call number is set and will be
interpreted as a retransmit when sent back out as the destination call number.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@355182 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-14 13:33:09 +00:00
Kinsey Moore
7d5836ca78 Fix parsing of SIP headers where compact and non-compact headers are mixed
Change parsing of SIP headers so that compactness of the header no longer
influences which header will be chosen.  Previously, a non-compact header
would be chosen instead of a preceeding compact-form header.

(closes issue ASTERISK-17192)
Review: https://reviewboard.asterisk.org/r/1728/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@354702 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-09 20:49:59 +00:00
Matthew Jordan
004babb20d Clean-up of minor formatting issues in r354542/3/4
rmudgett pointed out some formatting issues in the check-in for
ASTERISK-19290.  This cleans those up.

Review: https://reviewboards.asterisk.org/r/1722/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@354547 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-09 17:07:35 +00:00
Matthew Jordan
ead2b47907 Fix SIP INFO DTMF handling for non-numeric codes
In ASTERISK-18924, SIP INFO DTMF handlingw as changed to account for both
lowercase alphatbetic DTMF events, as well as uppercase alphabetic DTMF
events.  When this occurred, the comparison of the character buffer containing
the event code was changed such that the buffer was first compared again '0'
and '9' to determine if it was numeric.  Unfortunately, since the first
character in the buffer will typically be '1' in the case of non-numeric
event codes (10-16), this caused those codes to be converted to a DTMF event
of '1'.  This patch fixes that, and cleans up handling of both
application/dtmf-relay and application/dtmf content types.

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

(closes issue ASTERISK-19290)
Reported by: Ira Emus
Tested by: mjordan



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@354542 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-09 16:30:56 +00:00
Terry Wilson
15d28cfdad Fix multiple SIP realtime issues
1. Set lastms to 0 when clearing instead of ""
2. Don't set ipaddr or port to the string "(null)" when they are empty
3. Add missing required fields, set default for lastms to 0, and modify
   the length of the ipaddr field to 45 in the Postgresql realtime.sql
   file.

(closes issue ASTERISK-19172)
Review: https://reviewboard.asterisk.org/r/1703/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@354348 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-07 20:53:02 +00:00
Jonathan Rose
65360e2ae5 Fixes deadlocks occuring in chan_agent due to r335976
Bad locking order was added to chan_agent to prevent segfaults from having no locking
in a patch by irroot. This patch addresses the bad locking order by releasing locks before
getting the right locking order to stop deadlocks from occuring when doing multiple
interactions with agents.

(closes issue ASTERISK-19285)
Reported by: Alex Villacis Lasso
Review: https://reviewboard.asterisk.org/r/1708/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@353999 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-03 21:24:45 +00:00
Kinsey Moore
ea4fa3227f Ensure entering T.38 passthrough does not cause an infinite loop
After R340970 Asterisk was still polling the RTCP file descriptor after RTCP is
shut down and removed. If the descriptor happened to have data ready when the
removal occured then Asterisk would go into an infinite loop trying to read
data that it can never actually access. This change disables the audio RTCP
file descriptor for the duration of the T.38 transaction.

(closes issue ASTERISK-18951)
Reported-by: Kristijan Vrban


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@353915 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-02 22:26:50 +00:00
Richard Mudgett
c5fc58c3a0 Restore the 'w' modifier support for ISDN spans. Dial(DAHDI/g0/1234w888)
This feature also causes the sending complete ie to be sent for switch
types that do not automatically send the ie.  (EuroISDN/ETSI)

The main difference between dialing Dial(DAHDI/g0/1234w888) and
Dial(DAHDI/g0/1234,,D(888)) is the sending of the sending complete ie.

(closes issue ASTERISK-19176)
Reported by: rmudgett
Tested by: rmudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@353867 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-02 20:01:00 +00:00
Jonathan Rose
ad24624751 Fix sip show peers port output, align columns, and fix ami port output.
A previous patch I committed from ASTERISK-16930 unexpectedly changed some output for
the AMI action "sippeers" which this patch changes back. Also, this aligns the output
for the cli command "sip show peers" and fixes another issue that patch introduced by
using ast_sockaddr_stringify calls multiple times without immediately using the pointer.
I also went ahead and did a little janitorial work to clean up whitespace in
_sip_show_peers.

(issue ASTERISK-16930)
(closes issue ASTERISK-19281)
Reported by: Patrick El Youssef
Patches:
	ASTERISK-19281.diff uploaded by Walter Doekes (license 5674)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@353769 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-02 16:57:36 +00:00
Jonathan Rose
3c1a9894e8 Use ast_sockaddr_stringify_fmt wrappers for various functions in chan_sip
There are a number of cleaner looking wrappers for ast_sockaddr_stringify_fmt
available which are slightly more readable than using a direct call to
ast_sockaddr_stringify_fmt. This patch switches a number of those calls in
chan_sip to use those wrappers and is generally harmless.

(Closes issue ASTERISK-16930)
Reported by: Michael L. Young
Patches:
	chan_sip-broken-registration-1.8.diff uploaded by Michael L. Young (license 5026)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@353720 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-02-01 21:05:26 +00:00
Terry Wilson
d699845a55 Re-link peers by IP when dnsmgr changes the IP
Asterisk's dnsmgr currently takes a pointer to an ast_sockaddr and updates it
anytime an address resolves to something different. There are a couple of
issues with this. First, the ast_sockaddr is usually the address of an
ast_sockaddr inside a refcounted struct and we never bump the refcount of those
structs when using dnsmgr. This makes it possible that a refresh could happen
after the destructor for that object is called (despite ast_dnsmgr_release
being called in that destructor). Second, the module using dnsmgr cannot be
aware of an address changing without polling for it in the code. If an action
needs to be taken on address update (like re-linking a SIP peer in the
peers_by_ip table), then polling for this change negates many of the benefits
of having dnsmgr in the first place.

This patch adds a function to the dnsmgr API that calls an update callback
instead of blindly updating the address itself. It also moves calls to
ast_dnsmgr_release outside of the destructor functions and into cleanup
functions that are called when we no longer need the objects and increments the
refcount of the objects using dnsmgr since those objects are stored on the
ast_dnsmgr_entry struct. A helper function for returning the proper default SIP
port (non-tls vs tls) is also added and used.

This patch also incorporates changes from a patch posted by Timo Teräs to
ASTERISK-19106 for related dnsmgr issues.

(closes issue ASTERISK-19106)

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@353371 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-30 23:17:16 +00:00
Alec L Davis
a61f99f985 prevent debug messsges displaying -ve Cseq numbers. Missed in R353320
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@353368 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-30 22:40:40 +00:00
Alec L Davis
8fc0050b54 RFC3261 Section 8.1.1.5. The sequence number value MUST be expressible as a 32-bit unsigned integer
* fix: use %u instead of %d when dealing with CSeq numbers - to remove possibility of -ve numbers.

* fix: change all uses of seqno and friends (ocseq icseq) from 'int' or 'unsigned int' to uint32_t.

Summary of CSeq numbers.
An initial CSeq number must be less than 2^31
A CSeq number can increase in value up to 2^32-1
An incrementing CSeq number must not wrap around to 0.

Tested with Asterisk 1.8.8.2 with Grandstream phones.
 
alecdavis (license 585)
Tested by: alecdavis
 
Review: https://reviewboard.asterisk.org/r/1699/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@353320 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-30 21:57:49 +00:00
Kevin P. Fleming
2281ba7cef Clarify log WARNING message when port-zero SDP 'm' lines received.
Previously, if an m-line in an SDP offer or answer had a port number of zero,
that line was skipped, and resulted in an 'Unsupported SDP media type...'
warning message. This was misleading, as the media type was not unsupported,
but was ignored because the m-line indicated that the media stream had been
rejected (in an answer) or was not going to be used (in an offer).



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@353260 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-30 12:42:16 +00:00
Richard Mudgett
a55030f4fa Audit of ao2_iterator_init() usage for v1.8.
Fixes numerous reference leaks and missing ao2_iterator_destroy() calls as
a result.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@352955 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-27 18:22:39 +00:00
Alec L Davis
4d2f8a9cfd rfc4235 - Section 4.1: Versions MUST be representable using a non-negative 32 bit integer.
If a BLF subscription exists for long enough, using %d may print negative version numbers.
Unlikely, as 2^32 at 1 update per second is ~137 years, or half that before the versions number started going negative.

Tested with Asterisk 1.8.8.2 with Grandstream phones.
 
alecdavis (license 585)
Tested by: alecdavis
 
Review: https://reviewboard.asterisk.org/r/1694/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@352862 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-27 00:05:30 +00:00
Jonathan Rose
301cc6b1c0 Copy amaflags to sip_pvt from peer during create_addr_from_peer
For whatever reason, we don't have a single function for copying data like this
from SIP peers to the SIP pvt. This patch adds the copying of amaflags to the
sip_pvt, but it would probably be worth discussing this function along with
the others that essentially just copy some amount of data from a peer to a
private.

(Closes issue ASTERISK-19029)
Reported by: Matt Lehner


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@352755 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-26 19:06:05 +00:00
Alec L Davis
bd8d057dee Cleanup dialog-info+xml Notify dialog
Make similar to other Notify messages.

sample output:

<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="715" state="full" entity="sip:8523@192.168.x.xx">
<dialog id="8523">
<state>terminated</state>
</dialog>
</dialog-info>

Tested with Asterisk 1.8.8.2 with Grandstream phones.
 
alecdavis (license 585)
Tested by: alecdavis
 
Review: https://reviewboard.asterisk.org/r/1693/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@352704 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-26 06:27:07 +00:00
Terry Wilson
054c466a2f Remove some extraneous debugging from registry memleak fix
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@352551 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-25 17:28:29 +00:00
Terry Wilson
f1dc1012ae Clean up some SIP registry-related memory leaks
1) Be sure and free at unload the epa_backend we allocate at startup
2) Do the same sip_registry cleanup at unload we do at reload

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@352514 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-25 16:46:56 +00:00
Mark Michelson
7c7615e399 Don't do a DNS lookup on an outbound REGISTER host if there is an outbound proxy configured.
(closes issue ASTERISK-16550)
reported by: Olle Johansson



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@352424 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-24 22:17:46 +00:00
Joshua Colp
d7a25693c9 Move RTP timeout check to before bridged channel check so it is actually executed.
(issue ASTERISK-19179)
Reported by: TSAREGORODTSEV Yury

(closes issue ASTERISK-14534)
Reported by: kriborgen
Patches:
	chan_sip.patch uploaded by kriborgen (license 6138)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@352287 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-24 16:30:36 +00:00
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
Kevin P. Fleming
3bfed7039f Correct some 'set-but-not-used' variable warnings.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@350789 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-14 15:23:32 +00:00
Mark Michelson
f7876c1dfe Set port to a default sane value if a bogus one is provided when parsing hostnames.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@350679 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-13 20:29:03 +00:00
Richard Mudgett
fb6b399324 Fix joinable thread terminating without joiner memory leak in chan_iax.c.
The iax2_process_thread() can exit without anyone waiting to join the
thread.  If noone is waiting to join the thread then a large memory leak
occurs.

* Made iax2_process_thread() deatach itself if nobody is waiting to join
the thread.

(closes issue ASTERISK-17339)
Reported by: Tzafrir Cohen
Patches:
      asterisk-1.8.4.4-chan_iax2-detach-thread-on-non-stop-exit.patch (license #5617) patch uploaded by Alex Villacis Lasso (modified)

(closes issue ASTERISK-17825)
Reported by: wangjin


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@350220 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-09 21:54:01 +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
Richard Mudgett
6f7d995edc Fix segfault in chan_dahdi for CHANNEL(dahdi_span) evaluation on hangup.
* Added NULL private pointer checks in the following chan_dahdi channel
callbacks: dahdi_func_read(), dahdi_func_write(), dahdi_setoption(), and
dahdi_queryoption().

(closes issue ASTERISK-19142)
Reported by: Diego Aguirre
Tested by: rmudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@349558 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-01-04 20:46:20 +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
Richard Mudgett
fc96f6eb9d Fix chan_iax2 to not report an RDNIS number if it is blank.
Some ISDN switches complain or block the call if the RDNIS number is
empty.

* Made chan_iax2 not save a RDNIS number into the ast_channel if the
string is blank.  This is what other channel drivers do.

(closes issue ASTERISK-17152)
Reported by: rmudgett


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@348735 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-12-20 23:08:21 +00:00