Commit Graph

22463 Commits

Author SHA1 Message Date
Richard Mudgett
165410c002 Make CHECK_BLOCKING() debug message more useful.
Change the displayed pthread value to hex format so it can be easily
matched with CLI core show threads or gdb.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@380611 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-31 00:22:20 +00:00
Richard Mudgett
fe20f6bb6b chan_dahdi: Fix "dahdi show channels group" for groups greater than 31.
The variable type used was not large enough to hold a group bit field.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@380572 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-30 21:41:43 +00:00
Matthew Jordan
c1ad425b5f Support building Asterisk for Raspberry Pi/Raspbian with hard-float support
Building Asterisk on Raspbian with hard-float support fails as it uses the
string 'linux-gnueabihf' for host os, as opposed to 'linux-gnueabi'. This patch
modifies the configure script for Asterisk such that it will match on any
string beginning with 'linux-gnueabi', as opposed to requiring an explicit
match.

(closes issue ASTERISK-21006)
Reported by: Christian Hesse
Tested by: Christian Hesse
patches:
  linux-gnueabihf.patch uploaded by Christian Hesse (license 6459)
  linux-gnueabihf-autoconf.patch uploaded by Christian Hesse (license 6459)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@380520 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-30 17:44:11 +00:00
Matthew Jordan
e365562f91 Perform case insensitive comparisons for T.38 attributes
RFC5347 section 2.5.2 states the following:
...
The attribute "T38MaxBitRate" was once incorrectly registered with
IANA as "T38maxBitRate" (lower-case "m"). In accordance with T.38
examples and common implementation practice, the form "T38MaxBitRate"
SHOULD be generated by implementations conforming to this package.
In general, it is RECOMMENDED that implementations of this package
accept lowercase, uppercase, and mixed upper/lowercase encodings of
all the T.38 attributes.
...

Asterisk currently does not perform case insensitive matching on the T.38
attributes. This causes the T38MaxBitRate attribute to be negotiated at
2400 baud instead of 14400 (or whatever value you actually wanted).

This patch makes it so that when we compare T.38 attributes, we do so in a case
insensitive fashion.

Note that while the issue reporter did not directly write the patch, they
contributed to it (and would have provided one themselves if the license had
gone through a tad faster), and hence get attribution for it.

(closes issue ASTERISK-20897)
Reported by: Eric Hill
Tested by: Eric Hill
patches:
  -- uploaded by Eric Hill



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@380458 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-30 14:19:14 +00:00
Matthew Jordan
bfbb5ddd7d Fix memory leak in res_calendar_icalendar
The ICalendar module had a systemic memory leak on each fetch of data from
the ICalendar source. The previous fetched data was not being properly
disposed. This patch makes it so that before each fetch of data, we dispose
of the previously fetched data.

(closes issue ASTERISK-21012)
Reported by: Joel Vandal
Tested by: Joel Vandal



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@380451 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-30 14:12:19 +00:00
Richard Mudgett
3ac20aa3e5 chan_agent: Prevent multiple channels from logging in as the same agent.
Multiple channels logging in as the same agent can result in dead channels
waiting for a condition signal that will never come because another
channel thread stole it.  A symptom is chan_sip repeatedly generating
warning messages about rescheduling autodestruction of dialogs with an
agent channel owner.

* Made only login_exec() (the app AgentLogin) clear the agent_pvt->chan
pointer to prevent multiple channels from logging in as the same agent.
agent_read(), agent_call(), and agent_set_base_channel() no longer
disconnect the agent channel from the agent_pvt.  This also eliminates the
need to keep checking for agent_pvt->chan being NULL.

* Made agent_hangup() not wake up the AgentLogin agent thread until it is
done.

* Made agent_request() not able to get the agent until he has logged in
and any wrapup time has expired.

* Made agent_request() use ast_hangup() instead of agent_hangup() to
correctly dispose of a channel.

* Removed agent_set_base_channel().  Nobody calls it and it is a bad thing
in general.

* Made only agent_devicestate() determine the current device state of an
agent.  Note: Agent group device states have never been supported.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@380364 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-29 17:22:22 +00:00
David M. Lee
de0c8bc4be Corrected crypto tag in SDP ANSWER for SRTP. (again)
The original fix (r380043) for getting Asterisk to respond with the correct
tag overlooked some corner cases, and the fact that the same code is in 1.8.

This patch moves the building of the crypto line out of
sdp_crypto_process(). Instead, it merely copies the accepted tag. The call to
sdp_crypto_offer() will build the crypto line in all cases now, using a tag of
"1" in the case of sending offers.

(closes issue ASTERISK-20849)
Reported by: José Luis Millán
Review: https://reviewboard.asterisk.org/r/2295/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@380347 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-29 17:05:18 +00:00
Matthew Jordan
d5b978e88b Update configure script to be compatible with ptlib 2.10.9
With ptlib 2.10.9, the configure script fails due to grep returning multiple
matches for the pattern it searches for. This patch updates the pattern
matching to return only the actual version for the symbol searched for,
PTLIB_VERSION.

(closes issue ASTERISK-20980)
Reported by: Stefan Reuter
patches:
  ASTERISK-20980-1.patch uploaded by Stefan Reuter (license 5339)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@380297 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-29 02:02:32 +00:00
Sean Bright
96feb8cbb0 Correct the number of available call numbers in IAX2.
There is currently an edge case where call number 32768 might be allocated for
a call, even though the IAX2 protocol requires call numbers be only 15 bits.
This resulted in some unpredictable behavior when call number 32678 is chosen.

This patch was mostly written by Richard Mudgett via ReviewBoard.  I'm just
committing it.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@380254 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-28 21:06:01 +00:00
Russell Bryant
e9afff1a51 Change cleanup ordering in filestream destructor.
This patch came about due to a problem observed where wav files had an
empty header.  The header is supposed to be updated in wav_close().  It
turns out that this was broken when the cache_record_files option from
asterisk.conf was enabled.  The cleanup code was moving the file to its
final destination *before* running the close() method of the file
destructor, so the header didn't get updated.

Another problem here is that the move was being done before actually
closing the FILE *.

Finally, the last bug fixed here is that I noticed that wav_close()
checks for stream->filename to be non-NULL.  In the previous cleanup
order, it's checking a pointer to freed memory.  This doesn't actually
cause anything to break, but it's treading on dangerous waters.  Now the
free() of stream->filename is happening after the format module's
close() method gets called, so it's safer.

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



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@380210 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-28 01:52:39 +00:00
Richard Mudgett
f2c0fc1cb5 Attempt to be more helpful when using a bad ao2 object pointer.
Backport of -r360626 with some enhancements.  Put the external obj pointer
in the message instead of the internal version.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379963 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-23 00:19:40 +00:00
Jonathan Rose
79b60d9d4b app_meetme: Use new prompts for administrator menu
The old prompts for the administrator menu were inadequate. They didn't mention
that the menu had additional options through the 8 key and pressing the 8 key
wouldn't reveal what those options were. This patch fixes all of that while
also organizing code pertaining to each individual menu type which was
previously all stored in one gigantic function along with many of the basic
conference functions.

(closes issue AST-996)
Reported by: John Bigelow
Review: http://reviewboard.digium.internal/r/360/


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379885 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-22 18:21:04 +00:00
Matthew Jordan
c5523284d1 Fix station ringback; trunk hangup issues in SLA
This patch fixes two bugs:
 * If an outbound call is made from a SLA phone using SLAStation, then there is
   no ringtone audible to the phone that originates the call. The indication of
   the ringing was not being passed to the SLA station; this patch fixes that
   by passing through the progress indications.
 * If an SLA station hangs up before the called party answers, then the channel
   to the called party continues to ring until a timeout occurs. If the called
   party manages to answer, Asterisk attempts to connect the called party to
   a non-existant MeetMe room. This patch corrects the behavior by abandoning
   the call attempt if it detects that the SLA station is no longer in use
   while attempting to call the called party.

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

(closes issue ASTERISK-20462)
Reported by: dkerr
patches:
  asterisk-11-bugid20440+20462.patch uploaded by dkerr (license 5558)
  asterisk-11-bugid20462.patch uploaded by dkerr (license 5558)

(closes issue ASTERISK-20440)
Reported by: dkerr
patches:
  asterisk-11-bugid20440.patch uploaded by dkerr (license 5558)
  asterisk-11-bugid20440+20462.patch uploaded by dkerr (license 5558)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379825 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-22 14:43:05 +00:00
Matthew Jordan
cdea85f8ac Update init.d scripts to handle stderr; readd splash screen for remote consoles
When r376428 was commited to re-order start up sequences to be more tolerant of
forking with thread primitives, a few items were changed that caused changes
in behavior on some distros. This includes:
 * Not displaying the splash screen on a remote console.
 * Displaying an error message on stderr when a remote console cannot connect
   to a running instance of Asterisk.

In the first case, the splash screen was re-added (thanks to Michael L. Young).
In the second case, the various init.d scripts were modified to pipe stderr
to /dev/null, as the error message is useful - if you execute a remote
console or a remote console command execution and it fail, it should tell
you. Note that the error message was always present, it just failed to be
printed prior to r376428.

Much thanks to the folks who quickly reported this problem, provided solutions,
and promptly tested the various init.d scripts on a variety of distros.

(closes issue ASTERISK-20945)
Reported by: Warren Selby
Tested by: Michael L. Young, Jamuel Starkey, kaldemar, Danny Nicholas, mjordan
patches:
  asterisk-20945-remote-intro-msg.diff uploaded by elguero (license 5026)
  ASTERISK-20945-1.8-mjordan.diff uploaded by mjordan (license 6283)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379760 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-21 20:19:54 +00:00
Kinsey Moore
6544f79e8a Prevent segfault for interpolated iLBC frames
When iLBC is being used with a jitter buffer and the jb has to
interpolate frames, it generates frames with a null pointer and a
non-zero datalen. This is now handled properly.

(closes issue ASTERISK-20914)
Reported By: John McEleney
Patches:
  ASTERISK-20914-1.8.diff uploaded by Matt Jordan (license 6283)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379718 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-21 18:27:58 +00:00
Andrew Latham
9cdddc3653 Add LDAP libraries to install script
Add LDAP dev package to Debian/Ubuntu install list.  Existed in Redhat already.  Merged from 11 to Trunk in 379643. Sorry for forgeting 1.8

(issue ASTERISK-20886)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379645 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-21 04:59:58 +00:00
Matthew Jordan
fcb9c5ff50 Fix crash in app_minivm when mime encoding string
An incorrect string initializations was left in ast_str_encode_mime from the
patch that converted string manipulations to use ast_str strings (r191140).
The string initialization causes a crash when ast_str_set is called on
the string later on in the function.

(closes issue ASTERISK-18697)
Reported by: Chris Boot
patches:
  minivm-null-pointer-dereference-fix.patch uploaded by bootc (license 6309)

(issue ASTERISK-20854)
Reported by: Chris Warr
Tested by: Chris Warr



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379608 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-21 04:05:29 +00:00
Walter Doekes
579ad507c8 Add builtin roundf() for systems lacking it.
(closes issue ASTERISK-16854)
Review: https://reviewboard.asterisk.org/r/2276
Reported-by: Ovidiu Sas


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379547 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-19 20:41:35 +00:00
Matthew Jordan
28f764a6d7 Fix astcanary startup problem due to wrong pid value from before daemon call
When Asterisk forks itself into the background via a call to daemon, it must
re-set the pid value of the new process. Otherwise, astcanary gets the pid
value of the process before the fork, which prevents it from running. Asterisk
eventually starts lowering its priority, as it can no longer communicate
with the proverbial canary in the coal mine.

This patch ensures that the correct process identifier is used by astcanary.

(closes issue ASTERISK-20947)
Reported by: Jakob Hirsch
Tested by: mjordan
patches:
  asterisk-10.12.0.astcanary_ppid.diff uploaded by Jakob Hirsch (license 6113)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379509 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-18 23:26:02 +00:00
David M. Lee
751a30177f Fix Record-Route parsing for large headers.
Record-Route parsing copied the header into a char[256] array, which can
be a problem if the header is longer than that. This patch parses the
header in place, without the copy, avoiding the issue.

In addition to the original patch, I added a unit test for the new
get_in_brackets_const function.

(closes issue ASTERISK-20837)
Reported by: Corey Farrell
Patches:
	chan_sip-build_route-optimized-rev1.patch uploaded by Corey Farrell (license 5909)
	(with minor changes by dlee)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379392 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-18 05:23:57 +00:00
Matthew Jordan
02c1a29aaf Fix issue where chan_mobile fails to bind to first available port
Per the bluez API, in order to bind to the first available port, the rc_channel
field of the socket addressing structure used to bind the socket should be set
to 0. Previously, Asterisk had set the rc_channel field set to 1, causing it
to connect to whatever happens to be on port 1.

We could probably not explicitly set rc_channel to 0 since we memset the struct
earlier, but explicitly setting it will hopefully prevent someone from coming
in and setting it to some explicit port in the future.

(closes issue ASTERISK-16357)
Reported by: challado
Tested by: Alexander Heinz, Nikolay Ilduganov, benjamin, eliafino, David van Geyn
patches:
  ASTERISK-16357.diff uploaded by Nikolay Ilduganov (license 6253)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379342 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-17 02:28:31 +00:00
Mark Michelson
2a06531601 Further fix misinformation in the description of manager MailboxStatus command.
The description still claimed that it returned the number of messages rather than
whether there were messages waiting.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379310 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-16 22:45:17 +00:00
Jason Parker
b4ff573966 Reduce number of packages install_prereq installs on Debian systems.
'search' will look for any package containing the name provided, so we need to
force a more exact search.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379276 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-16 21:12:36 +00:00
Richard Mudgett
1e65bfc56e chan_misdn: Fix compile error.
(issue ASTERISK-15456)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379226 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-16 17:40:37 +00:00
Matthew Jordan
bcc92a8d2d Fix parsing SMSSRC for SMS messages
The parser for SMS messages would incorrectly parse out the from number.
The parsing would incorrectly start scanning for the from number at the
same index as the first double quote ("); this would inadvertently cause
it to treat the first double quote as the terminating double quote for
the from number as well.

The SMSSRC should now populate correctly.

(closes issue ASTERISK-16822)
Reported by: menschentier
Tested by: Jonas Falck
patches:
 fixSMSSRC.patch uploaded by jonax (license 6320)

(closes issue ASTERISK-19153)
Reported by: Panos Gkikakis
patches:
  sms-sender-fix.diff uploaded by roeften (license 5884)  



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379178 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-16 04:10:15 +00:00
Matthew Jordan
718cc7381c Set the INVALID_EXTEN channel variable when chan_misdn forces the 'i' extension
The chan_misdn channel driver will send a channel with an invalid destination
to the 'i' extension itself if said extension can be reached. It forgot,
however, to set the INVALID_EXTEN channel variable when it bounces the channel
to this extension. Dialplan writers everywhere moaned at yet another
inconsistency.

This is yet another example of why duplicating logic in multiple places results
in bugs that stick around in Jira for just under three years.

Yes: ASTERISK-15456 was created on January 18th, 2010. Patch committed on
January 15th, 2013. Ouch.

(closes issue ASTERISK-15456)
Reported by: Thomas Omerzu
patches:
  chan_misdn_invalid.patch2 uploaded by Thomas Omerzu (license 5927)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379145 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-16 00:10:37 +00:00
Matthew Jordan
0838d084ab Prevent crash in ConfBridge due to race condition when channels leave bridge
When a channel leaves a bridge, a race condition existed where the
bridge_channel's pvt structure would be accessed after it was disposed of.
This patch prevents that by setting the pointer to the pvt to NULL prior
to disposing of it.

Note that this patch is a backport from Asterisk 10. This particular race
condition was fixed as part of the larger code rework that occurred for that
release.

The solution to this problem was pointed out by Gunnar Harms in ASTERISK-16640.

(closes issue ASTERISK-16640)
Reported by: thomas987

(closes issue ASTERISK-16835)
Reported by: saghul


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379091 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-15 03:46:57 +00:00
David M. Lee
37f037f444 Fix XML encoding of 'identity display' in NOTIFY messages, continued.
When r378933 was merged into 1.8, it should have also escaped
remote_display, since it will have the same XML encoding problem when
the caller/callee roles are reversed.

(closes issue ABE-2902)
Reported by: Guenther Kelleter


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379001 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-14 15:11:39 +00:00
Matthew Jordan
89e5288798 Reset RTP timestamp; sequence number on SSRC change
In r370252 for ASTERISK-18404, Asterisk's handling of RTP was modified to
better account for out of order RTP packets. This was accomplished by using the
RTP timestamp and sequence number to check for out of order packets. However,
when a SSRC change occurs, the timestamp and sequence number will no longer
have any relation to the previously received packets. The variables tracking
the timestamp and sequence number therefore have to be reset.

(closes issue ASTERISK-20906)
Reported by: Eelco Brolman
patches:
  dtmf_on_hold.patch uploaded by Eelco Brolman (license #6442)




git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378967 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-13 21:15:06 +00:00
David M. Lee
c5aee60db5 Fix XML encoding of 'identity display' in NOTIFY messages.
XML encoding in chan_sip is accomplished by naively building the XML
directly from strings. While this usually works, it fails to take into
account escaping the reserved characters in XML.

This patch adds an 'ast_xml_escape' function, which works similarly to
'ast_uri_encode'. This is used to properly escape the local_display
attribute in XML formatted NOTIFY messages.

Several things to note:
 * The Right Thing(TM) to do would probably be to replace the
   ast_build_string stuff with building an ast_xml_doc. That's a much
   bigger change, and out of scope for the original ticket, so I
   refrained myself.
 * It is with great sadness that I wrote my own ast_xml_escape
   function. There's one in libxml2, but it's knee-deep in
   libxml2-ness, and not easily used to one-off escape a
   string.
 * I only escaped the string we know is causing problems
   (local_display). At least some of the other strings are
   URI-encoded, which should be XML safe. Rather than figuring out
   what's safe and escaping what's not, it would be much cleaner to
   simply build an ast_xml_doc for the messages and let the XML
   library do the XML escaping. Like I said, that's out of scope.

(closes issue ABE-2902)
Reported by: Guenther Kelleter
Tested by: Guenther Kelleter
Review: http://reviewboard.digium.internal/r/365/

........

Merged revision 378919 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378933 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-12 06:26:34 +00:00
David M. Lee
f6404e6e15 Fix end condition in ast_rtp_lookup_mime_multiple2.
The erroneous end condition would never include the AST_RTP_CISCO_DTMF flag
in the debug output.

(closes issue ASTERISK-20772)
Reported by: Xavier Hienne


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378776 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-09 20:26:44 +00:00
David M. Lee
d1321a2a77 Replace errant tabs with spaces in causes.h.
(closes issue ASTERISK-20826)
Reported by: snuffy
Patches:
	notabs.dif uploaded by snuffy (license 5024)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378733 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-09 19:36:24 +00:00
Richard Mudgett
7ba4fe48ca app_queue: Fix multiple calls to a queue member that is in only one queue.
When ringinuse=no queue members can receive more than one call if these
calls happen at nearly the same time.

* Fix so a queue member does not receive more than one call from a queue.

NOTE: This fix does not prevent multiple calls to a member if the member
is in more than one queue.

* Did some refactoring to eliminate some code redundancy.

(issue ASTERISK-16115)
Reported by: nik600
Patches:
      jira_asterisk_16115_single_q_v1.8.patch (license #5621) patch uploaded by rmudgett
      Modified


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378663 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-08 20:22:16 +00:00
Jonathan Rose
6a94f73341 res_srtp: Prevent a crash from occurring due to srtp_create failures in srtp_create
Under some circumstances, libsrtp's srtp_create function deallocates memory that
it wasn't initially responsible for allocating. Because we weren't initially
aware of this behavior, this memory was still used in spite of being unallocated
during the course of the srtp_unprotect function. A while back I made a patch
which would set this value to NULL, but that exposed a possible condition where
we would then try to check a member of the struct which would cause a segfault.
In order to address these problems, ast_srtp_unprotect will now set an error value
when it ends without a valid SRTP session which will result in the caller of
srtp_unprotect observing this error and hanging up the relevant channel instead of
trying to keep using the invalid session address.

(closes issue ASTERISK-20499)
Reported by: Tootai
Review: https://reviewboard.asterisk.org/r/2228/diff/#index_header


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378591 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-04 22:54:31 +00:00
Michael L. Young
d06773e931 Fix SIP Notify Messages To Have The Proper IP Address In The FROM Field
On a multihomed server when sending a NOTIFY message, we were not figuring out
which network should be used to contact the peer.

This patch fixes the problem by calling ast_sip_ouraddrfor() and then
build_via() so that our NOTIFY message contains the correct IP address.

Also, a debug message is being added to help follow the call-id changes that
occur.  This was helpful for confirming that the IP address was set properly
since the call-id contains the IP address.  It also will be helpful for
troubleshooting purposes when following a call in the debug logs.

(closes issue ASTERISK-20805)
Reported by: Bryan Hunt
Tested by: Bryan Hunt, Michael L. Young
Patches:
    asterisk-20805-notify-ip-v2.diff uploaded by Michael L. Young (license 5026)

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378554 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-04 21:12:38 +00:00
Joshua Colp
f5012d8d0d Don't pass STUN packets through the SRTP unprotect function.
(closes issue AST-1036)
Reported by: jbigelow


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378553 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-04 21:12:24 +00:00
Michael L. Young
afd0961a3c Fix Queue Log Reporting Every Call COMPLETECALLER With "h" Extension Present
When the "h" extension is present within the context of the queue, all calls
are being reported COMPLETECALLER even when the agent is hanging up the call.

This patch checks to see if the agent hung-up or not instead of only relying on
checking if the queue (caller) channel hung-up or not.  It would appear that
having the h extension in the mix, the pbx goes to the h extension,
"hanging-up" the queue channel and triggering the reporting of COMPLETECALLER.

(closes issue ASTERISK-20743)
Reported by: call
Tested by: call, Michael L. Young
Patches: 
    asterisk-20743-q-cmplt-caller.diff 
                                     uploaded by Michael L. Young (license 5026)

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378514 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-03 22:09:15 +00:00
Richard Mudgett
4477902eb1 chan_agent: Fix wrapup time wait response.
* Made agent_cont_sleep() and agent_ack_sleep() stop waiting if the wrapup 
time expires.  agent_cont_sleep() had tried but returned the wrong value 
to stop waiting.  

* Made agent_ack_sleep() take a struct agent_pvt pointer instead of a void
pointer for better type safety.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378486 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-03 19:40:55 +00:00
Richard Mudgett
540cb4eedb chan_agent: Misc code cleanup.
* Fix off-nominal path resource cleanup in agent_request().

* Create agent_pvt_destroy() to eliminate inlined versions in many places.

* Pull invariant code out of loop in add_agent().

* Remove redundant module user references in login_exec().

* Remove unused struct agent_pvt logincallerid[] member.

* Remove some redundant code in agent_request().


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378456 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-03 18:39:41 +00:00
Kinsey Moore
22c5eea34b Add missing test event
This test event was missing from channel.c causing the dial_LS_options
test to fail intermittently because of a race condition where most code
paths emitted the test event but this one did not. The dial_LS_options
test should stop bouncing now.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378455 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-03 18:35:38 +00:00
Richard Mudgett
ba65f21e73 chan_agent: Fix agent_indicate() locking.
Avoid deadlock potential with local channels and simplify the locking.


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378427 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-03 17:41:46 +00:00
Matthew Jordan
eb0d0eb4d1 Prevent crashes from occurring when reading from data sources with large values
When reading configuration data from an Asterisk .conf file or when pulling
data from an Asterisk RealTime backend, Asterisk was copying the data on the
stack for manipulation. Unfortunately, it is possible to read configuration
data or realtime data from some data source that provides a large blob of
characters. This could potentially cause a crash via a stack overflow.

This patch prevents large sets of data from being read from an ARA backend or
from an Asterisk conf file.

(issue ASTERISK-20658)
Reported by: wdoekes
Tested by: wdoekes, mmichelson
patches:
 * issueA20658_dont_process_overlong_config_lines.patch uploaded by wdoekes (license 5674)
 * issueA20658_func_realtime_limit.patch uploaded by wdoekes (license 5674)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378375 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-02 21:48:57 +00:00
Richard Mudgett
1457bf7bf0 Fix AMI redirect action with two channels failing to redirect both channels.
The AMI redirect action can fail to redirect two channels that are bridged
together.  There is a race between the AMI thread redirecting the two
channels and the bridge thread noticing that a channel is hungup from the
redirects.

* Made the bridge wait for both channels to be redirected before exiting.

* Made the AMI redirect check that all required headers are present before
proceeding with the redirection.

* Made the AMI redirect require that any supplied ExtraChannel exist
before proceeding.  Previously the code fell back to a single channel
redirect operation.

(closes issue ASTERISK-18975)
Reported by: Ben Klang

(closes issue ASTERISK-19948)
Reported by: Brent Dalgleish
Patches:
      jira_asterisk_19948_v11.patch (license #5621) patch uploaded by rmudgett
Tested by: rmudgett, Thomas Sevestre, Deepak Lohani, Kayode

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378356 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-02 21:08:15 +00:00
Matthew Jordan
5996dd6a23 Prevent exhaustion of system resources through exploitation of event cache
Asterisk maintains an internal cache for devices in the event subsystem. The
device state cache holds the state of each device known to Asterisk, such that
consumers of device state information can query for the last known state for
a particular device, even if it is not part of an active call. The concept of
a device in Asterisk can include entities that do not have a physical
representation. One way that this occurred was when anonymous calls are allowed
in Asterisk. A device was automatically created and stored in the cache for
each anonymous call that occurred; this was possible in the SIP and IAX2
channel drivers and through channel drivers that utilized the
res_jabber/res_xmpp resource modules (Gtalk, Jingle, and Motif). These devices
are never removed from the system, allowing anonymous calls to potentially
exhaust a system's resources.

This patch changes the event cache subsystem and device state management to
no longer cache devices that are not associated with a physical entity.

(issue ASTERISK-20175)
Reported by: Russell Bryant, Leif Madsen, Joshua Colp
Tested by: kmoore
patches:
  event-cachability-3.diff uploaded by jcolp (license 5000)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378303 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-02 16:54:20 +00:00
Matthew Jordan
a73c5b80ff Resolve crashes due to large stack allocations when using TCP
Asterisk had several places where messages received over various network
transports may be copied in a single stack allocation. In the case of TCP,
since multiple packets in a stream may be concatenated together, this can
lead to large allocations that overflow the stack.

This patch modifies those portions of Asterisk using TCP to either
favor heap allocations or use an upper bound to ensure that the stack will not
overflow:
 * For SIP, the allocation now has an upper limit
 * For HTTP, the allocation is now a heap allocation instead of a stack
   allocation
 * For XMPP (in res_jabber), the allocation has been eliminated since it was
   unnecesary.

Note that the HTTP portion of this issue was independently found by Brandon
Edwards of Exodus Intelligence.

(issue ASTERISK-20658)
Reported by: wdoekes, Brandon Edwards
Tested by: mmichelson, wdoekes
patches:
  ASTERISK-20658_res_jabber.c.patch uploaded by mmichelson (license 5049)
  issueA20658_http_postvars_use_malloc2.patch uploaded by wdoekes (license 5674)
  issueA20658_limit_sip_packet_size3.patch uploaded by wdoekes (license 5674)



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378269 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2013-01-02 15:16:10 +00:00
Kinsey Moore
367bed142a Ensure chan_sip rejects encrypted streams without crypto info
This ensures that Asterisk rejects encrypted media streams (RTP/SAVP
audio and video) that are missing cryptographic keys and ensures that
the incoming SDP is consistent with RFC4568 as far as having a crypto
attribute present for any SAVP streams.

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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378217 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-12-31 14:41:37 +00:00
Richard Mudgett
fe02f96c77 Give the causes[] a struct name.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378164 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-12-20 21:38:01 +00:00
Mark Michelson
c9e7b549b1 Adjust RTP instance's available_formats callback to return the correct type.
The RTP engine public function that gets the available formats expects a
format_t to be returned; however when calling into an RTP instance's
callback to get the available formats, the callback returned an int.

This never was noticed in Asterisk because the two RTP engines included
do not provide an available_formats callback.

This introduces an API change, and the proposal for this change was brought
up on the Asterisk developers mailing list [1]. There was no public objection
to this change, so it is now being put in.

(closes AST-1054)
reported by Doug Bailey

[1] http://lists.digium.com/pipermail/asterisk-dev/2012-December/058058.html



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378147 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-12-20 20:26:47 +00:00
Kinsey Moore
16983cf3b5 Add test events for time limit-related hangups
This patch adds hangup-related test events in order to support testing
of time-limited bridges. This aids in testing the S() and L() bridge
options.

(issue SWP-4713)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378119 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-12-18 17:35:18 +00:00
Richard Mudgett
091b93b98e Fix potential double free when unloading a module.
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@378092 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-12-17 23:07:24 +00:00