Compare commits

...

10 Commits

Author SHA1 Message Date
Leif Madsen
9418c1ae89 Importing release summary for 1.4.41 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.4.41@315208 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-04-25 17:57:24 +00:00
Leif Madsen
d44cb3e5f7 Remove incorrect summary files in preparation for rebuilding.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.4.41@315207 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-04-25 17:55:38 +00:00
Leif Madsen
6c86622761 Importing release summary for 1.4.41 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.4.41@315206 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-04-25 17:44:38 +00:00
Leif Madsen
5ba7d1d6d8 Merge changes for AST-2011-005 and AST-2011-006
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.4.41@315205 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-04-25 17:35:58 +00:00
Leif Madsen
74f9372ac3 Merge changes for AST-2011-005 and AST-2011-006, update .version and ChangeLog
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.4.41@315204 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-04-25 17:33:41 +00:00
Leif Madsen
15929c9257 Create Asterisk 1.4.41 from 1.4.41-rc1
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.4.41@315203 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-04-25 17:28:21 +00:00
Leif Madsen
dce2e0b730 Use autotagged externals
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.4.41-rc1@308628 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-02-23 23:56:59 +00:00
Leif Madsen
ed34cb861c Importing release summary for 1.4.41-rc1 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.4.41-rc1@308627 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-02-23 23:56:56 +00:00
Leif Madsen
1d99327eb4 Importing files for 1.4.41-rc1 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.4.41-rc1@308626 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-02-23 23:56:52 +00:00
Leif Madsen
16232b6f40 Creating tag for the release of asterisk-1.4.41-rc1
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/1.4.41-rc1@308625 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2011-02-23 23:56:11 +00:00
11 changed files with 32464 additions and 9 deletions

1
.lastclean Normal file
View File

@@ -0,0 +1 @@
33

1
.version Normal file
View File

@@ -0,0 +1 @@
1.4.41

31616
ChangeLog Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,257 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Release Summary - asterisk-1.4.41</title></head>
<body>
<h1 align="center"><a name="top">Release Summary</a></h1>
<h3 align="center">asterisk-1.4.41</h3>
<h3 align="center">Date: 2011-04-25</h3>
<h3 align="center">&lt;asteriskteam@digium.com&gt;</h3>
<hr/>
<h2 align="center">Table of Contents</h2>
<ol>
<li><a href="#summary">Summary</a></li>
<li><a href="#contributors">Contributors</a></li>
<li><a href="#issues">Closed Issues</a></li>
<li><a href="#commits">Other Changes</a></li>
<li><a href="#diffstat">Diffstat</a></li>
</ol>
<hr/>
<a name="summary"><h2 align="center">Summary</h2></a>
<center><a href="#top">[Back to Top]</a></center><br/><p>This release includes only bug fixes. The changes included were made only to address problems that have been identified in this release series. Users should be able to safely upgrade to this version if this release series is already in use. Users considering upgrading from a previous release series are strongly encouraged to review the UPGRADE.txt document as well as the CHANGES document for information about upgrading to this release series.</p>
<p>The data in this summary reflects changes that have been made since the previous release, asterisk-1.4.40.</p>
<hr/>
<a name="contributors"><h2 align="center">Contributors</h2></a>
<center><a href="#top">[Back to Top]</a></center><br/><p>This table lists the people who have submitted code, those that have tested patches, as well as those that reported issues on the issue tracker that were resolved in this release. For coders, the number is how many of their patches (of any size) were committed into this release. For testers, the number is the number of times their name was listed as assisting with testing a patch. Finally, for reporters, the number is the number of issues that they reported that were closed by commits that went into this release.</p>
<table width="100%" border="0">
<tr>
<td width="33%"><h3>Coders</h3></td>
<td width="33%"><h3>Testers</h3></td>
<td width="33%"><h3>Reporters</h3></td>
</tr>
<tr valign="top">
<td>
12 rmudgett<br/>
8 jpeeler<br/>
7 qwell<br/>
6 lmadsen<br/>
6 twilson<br/>
4 mnicholson<br/>
2 russell<br/>
2 seanbright<br/>
2 tilghman<br/>
1 gbour<br/>
1 mmichelson<br/>
</td>
<td>
7 rmudgett<br/>
2 wimpy<br/>
1 jacco<br/>
1 lmadsen<br/>
1 loloski<br/>
1 oej<br/>
1 qwell<br/>
1 russell<br/>
1 wedhorn<br/>
</td>
<td>
1 bluefox<br/>
1 gbour<br/>
1 gelo<br/>
1 gincantalupo<br/>
1 grecco<br/>
1 iskatel<br/>
1 jacco<br/>
1 JJCinAZ<br/>
1 jvandal<br/>
1 kerframil<br/>
1 mcallist<br/>
1 oej<br/>
1 shawkris<br/>
1 shihchuan<br/>
1 vrban<br/>
1 wimpy<br/>
</td>
</tr>
</table>
<hr/>
<a name="issues"><h2 align="center">Closed Issues</h2></a>
<center><a href="#top">[Back to Top]</a></center><br/><p>This is a list of all issues from the issue tracker that were closed by changes that went into this release.</p>
<h3>Category: Applications/app_dial</h3><br/>
<a href="https://issues.asterisk.org/view.php?id=18264">#18264</a>: [patch] Dail L(x) shows "Setting call duration limit to x seconds" in CLI<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=302916">302916</a><br/>
Reporter: jacco<br/>
Testers: lmadsen, jacco<br/>
Coders: lmadsen<br/>
<br/>
<a href="https://issues.asterisk.org/view.php?id=18379">#18379</a>: attended transfer weird behaviour<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=302671">302671</a><br/>
Reporter: gincantalupo<br/>
Testers: rmudgett<br/>
Coders: rmudgett<br/>
<br/>
<h3>Category: Applications/app_queue</h3><br/>
<a href="https://issues.asterisk.org/view.php?id=18747">#18747</a>: [regression] changeset 298596 harm the ring/moh logic in queues<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=308002">308002</a><br/>
Reporter: vrban<br/>
Coders: qwell<br/>
<br/>
<h3>Category: Applications/app_voicemail</h3><br/>
<a href="https://issues.asterisk.org/view.php?id=18486">#18486</a>: [patch] Voicemail files out of sequence<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=303676">303676</a><br/>
Reporter: bluefox<br/>
Coders: jpeeler<br/>
<br/>
<a href="https://issues.asterisk.org/view.php?id=18498">#18498</a>: [patch] [regression] Resequencing of mailbox not working as expected.<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=303676">303676</a><br/>
Reporter: JJCinAZ<br/>
Coders: jpeeler<br/>
<br/>
<h3>Category: Applications/app_voicemail/IMAP</h3><br/>
<a href="https://issues.asterisk.org/view.php?id=18718">#18718</a>: [regression] Implicit declaration of copy yields broken app_voicemail when building with IMAP support<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=306960">306960</a><br/>
Reporter: kerframil<br/>
Coders: jpeeler<br/>
<br/>
<h3>Category: Channels/General</h3><br/>
<a href="https://issues.asterisk.org/view.php?id=18585">#18585</a>: [patch] AMI redirect from meetme - calls fail<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=303546">303546</a><br/>
Reporter: oej<br/>
Testers: oej, wedhorn, russell<br/>
Coders: russell<br/>
<br/>
<h3>Category: Channels/chan_dahdi</h3><br/>
<a href="https://issues.asterisk.org/view.php?id=17085">#17085</a>: [patch] [regression] Overlap dialing to PSTN failing after #16789<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=303765">303765</a><br/>
Reporter: shawkris<br/>
Testers: wimpy, rmudgett<br/>
Coders: rmudgett<br/>
<br/>
<a href="https://issues.asterisk.org/view.php?id=17273">#17273</a>: atxfer *2 channel dahdi FXS no hangup<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=302172">302172</a><br/>
Reporter: grecco<br/>
Testers: rmudgett<br/>
Coders: rmudgett<br/>
<br/>
<a href="https://issues.asterisk.org/view.php?id=18509">#18509</a>: [patch] Sending out unnecessary PROCEEDING messages breaks overlap dialing<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=303765">303765</a><br/>
Reporter: wimpy<br/>
Testers: wimpy, rmudgett<br/>
Coders: rmudgett<br/>
<br/>
<h3>Category: Channels/chan_sip/General</h3><br/>
<a href="https://issues.asterisk.org/view.php?id=18371">#18371</a>: [patch] asterisk crash when dialing SIP/${var} where var is empty or not set<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=305252">305252</a><br/>
Reporter: gbour<br/>
Coders: gbour<br/>
<br/>
<h3>Category: Core/PBX</h3><br/>
<a href="https://issues.asterisk.org/view.php?id=17999">#17999</a>: Issues with DTMF triggered attended transfers<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=302172">302172</a><br/>
Reporter: iskatel<br/>
Testers: rmudgett<br/>
Coders: rmudgett<br/>
<br/>
<h3>Category: Features</h3><br/>
<a href="https://issues.asterisk.org/view.php?id=18395">#18395</a>: C should not receive request call again after C cancel if B blind transfer using atxfer call C<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=302172">302172</a><br/>
Reporter: shihchuan<br/>
Testers: rmudgett<br/>
Coders: rmudgett<br/>
<br/>
<h3>Category: Resources/res_features</h3><br/>
<a href="https://issues.asterisk.org/view.php?id=17096">#17096</a>: C keeps ringing when hanging A and B after blind transfer using atxfer<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=302172">302172</a><br/>
Reporter: gelo<br/>
Testers: rmudgett<br/>
Coders: rmudgett<br/>
<br/>
<a href="https://issues.asterisk.org/view.php?id=18637">#18637</a>: [patch] No MOH on Call Park and Exceptionally long voice queue length ...<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=306120">306120</a><br/>
Reporter: jvandal<br/>
Coders: jpeeler<br/>
<br/>
<h3>Category: Resources/res_musiconhold</h3><br/>
<a href="https://issues.asterisk.org/view.php?id=18457">#18457</a>: [patch] moh reload leaks file descriptors to dahdi timing channel<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=305471">305471</a><br/>
Reporter: mcallist<br/>
Testers: qwell, loloski<br/>
Coders: qwell<br/>
<br/>
<hr/>
<a name="commits"><h2 align="center">Commits Not Associated with an Issue</h2></a>
<center><a href="#top">[Back to Top]</a></center><br/><p>This is a list of all changes that went into this release that did not directly close an issue from the issue tracker. The commits may have been marked as being related to an issue. If that is the case, the issue numbers are listed here, as well.</p>
<table width="100%" border="1">
<tr><td><b>Revision</b></td><td><b>Author</b></td><td><b>Summary</b></td><td><b>Issues Referenced</b></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=302087">302087</a></td><td>twilson</td><td>Only offer codecs both sides support for directmedia</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=302311">302311</a></td><td>mnicholson</td><td>URI encode the user part of the contact header.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=302663">302663</a></td><td>tilghman</td><td>Add some API documentation</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=303007">303007</a></td><td>jpeeler</td><td>Add new queue strategy to preserve behavior for when queue members moved to ao2.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=303284">303284</a></td><td>qwell</td><td>Reset configuration before parsing users.conf.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=303552">303552</a></td><td>russell</td><td>Fix a couple of mistakes in the backport of this patch to 1.4.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=303747">303747</a></td><td>rmudgett</td><td>Backport the Proceeding application.</td>
<td><a href="https://issues.asterisk.org/view.php?id=17085">#17085</a>, <a href="https://issues.asterisk.org/view.php?id=18509">#18509</a></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=303906">303906</a></td><td>twilson</td><td>Guard against retransmitting BYEs indefinitely</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=304005">304005</a></td><td>rmudgett</td><td>DTMF attended transfers sometimes fail for no apparent reason.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=304159">304159</a></td><td>seanbright</td><td>Make sure the sample queues.conf is properly commented.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=304241">304241</a></td><td>mnicholson</td><td>This patch modifies chan_sip to route responses to the address the request came from. It also modifies chan_sip to respect the maddr parameter in the Via header.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=304242">304242</a></td><td>mmichelson</td><td>Get rid of unused 'verbose' field in ast_udptl</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=304247">304247</a></td><td>mnicholson</td><td>Convert from network to host byte ordering before checking if an IP is a multicast address.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=304460">304460</a></td><td>qwell</td><td>Rerun bootstrap.sh with no changes, so that it is more obvious what my next commit changes.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=304464">304464</a></td><td>qwell</td><td>Fix default prefix=/usr regression on non-Linux systems.</td>
<td><a href="https://issues.asterisk.org/view.php?id=17013">#17013</a></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=304820">304820</a></td><td>seanbright</td><td>Backport MeetMe related reference leaks fixes from 1.6.2/1.8/trunk.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=304952">304952</a></td><td>tilghman</td><td>Fix compilation when ODBC_STORAGE is defined.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=305129">305129</a></td><td>qwell</td><td>Set file descriptors to -1 on creation, so that we don't see weirdness later.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=305341">305341</a></td><td>rmudgett</td><td>Obtain the pri lock for PRI queue counters.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=305888">305888</a></td><td>rmudgett</td><td>Minor AST_FRAME_TEXT related issues.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=306119">306119</a></td><td>twilson</td><td>Set hangup cause in local_hangup</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=306617">306617</a></td><td>twilson</td><td>Don't allow a REFER w/replaces to replace its own dialog</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=306672">306672</a></td><td>twilson</td><td>Don't try to pickup a call in the middle of a masquerade</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=306864">306864</a></td><td>jpeeler</td><td>make this safer and fully correct, pointed out by Steve Davis</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=306964">306964</a></td><td>jpeeler</td><td>clean this up, sorry my brain is not really working</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=306965">306965</a></td><td>jpeeler</td><td>fix this line again</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=306972">306972</a></td><td>twilson</td><td>Fix comparison for REFER Replaces tags with pedantic=yes</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=307534">307534</a></td><td>qwell</td><td>Remove color when executing commands via a remote console.</td>
<td><a href="https://issues.asterisk.org/view.php?id=18776">#18776</a></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=307623">307623</a></td><td>rmudgett</td><td>Reentrancy problem if outgoing call gets different B channel than requested.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=308413">308413</a></td><td>mnicholson</td><td>Properly check the bounds of arrays when decoding UDPTL packets. Also, remove broken support for receiving UDPTL packets larger than 16k. That shouldn't ever happen anyway.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=315203">315203</a></td><td>lmadsen</td><td>Create Asterisk 1.4.41 from 1.4.41-rc1</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=315204">315204</a></td><td>lmadsen</td><td>Merge changes for AST-2011-005 and AST-2011-006, update .version and ChangeLog</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=315205">315205</a></td><td>lmadsen</td><td>Merge changes for AST-2011-005 and AST-2011-006</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=315206">315206</a></td><td>lmadsen</td><td>Importing release summary for 1.4.41 release.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.4?view=revision&revision=315207">315207</a></td><td>lmadsen</td><td>Remove incorrect summary files in preparation for rebuilding.</td>
<td></td></tr></table>
<hr/>
<a name="diffstat"><h2 align="center">Diffstat Results</h2></a>
<center><a href="#top">[Back to Top]</a></center><br/><p>This is a summary of the changes to the source code that went into this release that was generated using the diffstat utility.</p>
<pre>
.version | 2
ChangeLog | 14
apps/app_dial.c | 6
apps/app_meetme.c | 28 -
apps/app_queue.c | 58 ++
apps/app_sendtext.c | 2
apps/app_voicemail.c | 64 ++
asterisk-1.4.41-rc1-summary.html | 242 -----------
asterisk-1.4.41-rc1-summary.txt | 356 ----------------
channels/chan_dahdi.c | 468 ++++++++++++++++-----
channels/chan_local.c | 1
channels/chan_sip.c | 234 ++++++++++
channels/chan_skinny.c | 75 +++
configs/http.conf.sample | 7
configs/manager.conf.sample | 11
configs/queues.conf.sample | 2
configs/skinny.conf.sample | 9
configure.ac | 6
include/asterisk/astdb.h | 21
include/asterisk/autoconfig.h.in | 53 +-
include/asterisk/channel.h | 23 +
main/asterisk.c | 2
main/channel.c | 40 +
main/http.c | 25 +
main/manager.c | 87 +++-
main/pbx.c | 26 -
main/udptl.c | 54 +-
res/res_features.c | 844 +++++++++++++++++++++++++++------------
res/res_musiconhold.c | 7
29 files changed, 1677 insertions(+), 1090 deletions(-)
</pre><br/>
<hr/>
</body>
</html>

384
asterisk-1.4.41-summary.txt Normal file
View File

@@ -0,0 +1,384 @@
Release Summary
asterisk-1.4.41
Date: 2011-04-25
<asteriskteam@digium.com>
----------------------------------------------------------------------
Table of Contents
1. Summary
2. Contributors
3. Closed Issues
4. Other Changes
5. Diffstat
----------------------------------------------------------------------
Summary
[Back to Top]
This release includes only bug fixes. The changes included were made only
to address problems that have been identified in this release series.
Users should be able to safely upgrade to this version if this release
series is already in use. Users considering upgrading from a previous
release series are strongly encouraged to review the UPGRADE.txt document
as well as the CHANGES document for information about upgrading to this
release series.
The data in this summary reflects changes that have been made since the
previous release, asterisk-1.4.40.
----------------------------------------------------------------------
Contributors
[Back to Top]
This table lists the people who have submitted code, those that have
tested patches, as well as those that reported issues on the issue tracker
that were resolved in this release. For coders, the number is how many of
their patches (of any size) were committed into this release. For testers,
the number is the number of times their name was listed as assisting with
testing a patch. Finally, for reporters, the number is the number of
issues that they reported that were closed by commits that went into this
release.
Coders Testers Reporters
12 rmudgett 7 rmudgett 1 bluefox
8 jpeeler 2 wimpy 1 gbour
7 qwell 1 jacco 1 gelo
6 lmadsen 1 lmadsen 1 gincantalupo
6 twilson 1 loloski 1 grecco
4 mnicholson 1 oej 1 iskatel
2 russell 1 qwell 1 jacco
2 seanbright 1 russell 1 JJCinAZ
2 tilghman 1 wedhorn 1 jvandal
1 gbour 1 kerframil
1 mmichelson 1 mcallist
1 oej
1 shawkris
1 shihchuan
1 vrban
1 wimpy
----------------------------------------------------------------------
Closed Issues
[Back to Top]
This is a list of all issues from the issue tracker that were closed by
changes that went into this release.
Category: Applications/app_dial
#18264: [patch] Dail L(x) shows "Setting call duration limit to x seconds"
in CLI
Revision: 302916
Reporter: jacco
Testers: lmadsen, jacco
Coders: lmadsen
#18379: attended transfer weird behaviour
Revision: 302671
Reporter: gincantalupo
Testers: rmudgett
Coders: rmudgett
Category: Applications/app_queue
#18747: [regression] changeset 298596 harm the ring/moh logic in queues
Revision: 308002
Reporter: vrban
Coders: qwell
Category: Applications/app_voicemail
#18486: [patch] Voicemail files out of sequence
Revision: 303676
Reporter: bluefox
Coders: jpeeler
#18498: [patch] [regression] Resequencing of mailbox not working as
expected.
Revision: 303676
Reporter: JJCinAZ
Coders: jpeeler
Category: Applications/app_voicemail/IMAP
#18718: [regression] Implicit declaration of copy yields broken
app_voicemail when building with IMAP support
Revision: 306960
Reporter: kerframil
Coders: jpeeler
Category: Channels/General
#18585: [patch] AMI redirect from meetme - calls fail
Revision: 303546
Reporter: oej
Testers: oej, wedhorn, russell
Coders: russell
Category: Channels/chan_dahdi
#17085: [patch] [regression] Overlap dialing to PSTN failing after #16789
Revision: 303765
Reporter: shawkris
Testers: wimpy, rmudgett
Coders: rmudgett
#17273: atxfer *2 channel dahdi FXS no hangup
Revision: 302172
Reporter: grecco
Testers: rmudgett
Coders: rmudgett
#18509: [patch] Sending out unnecessary PROCEEDING messages breaks overlap
dialing
Revision: 303765
Reporter: wimpy
Testers: wimpy, rmudgett
Coders: rmudgett
Category: Channels/chan_sip/General
#18371: [patch] asterisk crash when dialing SIP/${var} where var is empty
or not set
Revision: 305252
Reporter: gbour
Coders: gbour
Category: Core/PBX
#17999: Issues with DTMF triggered attended transfers
Revision: 302172
Reporter: iskatel
Testers: rmudgett
Coders: rmudgett
Category: Features
#18395: C should not receive request call again after C cancel if B blind
transfer using atxfer call C
Revision: 302172
Reporter: shihchuan
Testers: rmudgett
Coders: rmudgett
Category: Resources/res_features
#17096: C keeps ringing when hanging A and B after blind transfer using
atxfer
Revision: 302172
Reporter: gelo
Testers: rmudgett
Coders: rmudgett
#18637: [patch] No MOH on Call Park and Exceptionally long voice queue
length ...
Revision: 306120
Reporter: jvandal
Coders: jpeeler
Category: Resources/res_musiconhold
#18457: [patch] moh reload leaks file descriptors to dahdi timing channel
Revision: 305471
Reporter: mcallist
Testers: qwell, loloski
Coders: qwell
----------------------------------------------------------------------
Commits Not Associated with an Issue
[Back to Top]
This is a list of all changes that went into this release that did not
directly close an issue from the issue tracker. The commits may have been
marked as being related to an issue. If that is the case, the issue
numbers are listed here, as well.
+------------------------------------------------------------------------+
| Revision | Author | Summary | Issues |
| | | | Referenced |
|----------+------------+-------------------------------+----------------|
| 302087 | twilson | Only offer codecs both sides | |
| | | support for directmedia | |
|----------+------------+-------------------------------+----------------|
| 302311 | mnicholson | URI encode the user part of | |
| | | the contact header. | |
|----------+------------+-------------------------------+----------------|
| 302663 | tilghman | Add some API documentation | |
|----------+------------+-------------------------------+----------------|
| | | Add new queue strategy to | |
| 303007 | jpeeler | preserve behavior for when | |
| | | queue members moved to ao2. | |
|----------+------------+-------------------------------+----------------|
| 303284 | qwell | Reset configuration before | |
| | | parsing users.conf. | |
|----------+------------+-------------------------------+----------------|
| | | Fix a couple of mistakes in | |
| 303552 | russell | the backport of this patch to | |
| | | 1.4. | |
|----------+------------+-------------------------------+----------------|
| 303747 | rmudgett | Backport the Proceeding | #17085, #18509 |
| | | application. | |
|----------+------------+-------------------------------+----------------|
| 303906 | twilson | Guard against retransmitting | |
| | | BYEs indefinitely | |
|----------+------------+-------------------------------+----------------|
| | | DTMF attended transfers | |
| 304005 | rmudgett | sometimes fail for no | |
| | | apparent reason. | |
|----------+------------+-------------------------------+----------------|
| | | Make sure the sample | |
| 304159 | seanbright | queues.conf is properly | |
| | | commented. | |
|----------+------------+-------------------------------+----------------|
| | | This patch modifies chan_sip | |
| | | to route responses to the | |
| 304241 | mnicholson | address the request came | |
| | | from. It also modifies | |
| | | chan_sip to respect the maddr | |
| | | parameter in the Via header. | |
|----------+------------+-------------------------------+----------------|
| 304242 | mmichelson | Get rid of unused 'verbose' | |
| | | field in ast_udptl | |
|----------+------------+-------------------------------+----------------|
| | | Convert from network to host | |
| 304247 | mnicholson | byte ordering before checking | |
| | | if an IP is a multicast | |
| | | address. | |
|----------+------------+-------------------------------+----------------|
| | | Rerun bootstrap.sh with no | |
| 304460 | qwell | changes, so that it is more | |
| | | obvious what my next commit | |
| | | changes. | |
|----------+------------+-------------------------------+----------------|
| | | Fix default prefix=/usr | |
| 304464 | qwell | regression on non-Linux | #17013 |
| | | systems. | |
|----------+------------+-------------------------------+----------------|
| | | Backport MeetMe related | |
| 304820 | seanbright | reference leaks fixes from | |
| | | 1.6.2/1.8/trunk. | |
|----------+------------+-------------------------------+----------------|
| 304952 | tilghman | Fix compilation when | |
| | | ODBC_STORAGE is defined. | |
|----------+------------+-------------------------------+----------------|
| | | Set file descriptors to -1 on | |
| 305129 | qwell | creation, so that we don't | |
| | | see weirdness later. | |
|----------+------------+-------------------------------+----------------|
| 305341 | rmudgett | Obtain the pri lock for PRI | |
| | | queue counters. | |
|----------+------------+-------------------------------+----------------|
| 305888 | rmudgett | Minor AST_FRAME_TEXT related | |
| | | issues. | |
|----------+------------+-------------------------------+----------------|
| 306119 | twilson | Set hangup cause in | |
| | | local_hangup | |
|----------+------------+-------------------------------+----------------|
| | | Don't allow a REFER | |
| 306617 | twilson | w/replaces to replace its own | |
| | | dialog | |
|----------+------------+-------------------------------+----------------|
| 306672 | twilson | Don't try to pickup a call in | |
| | | the middle of a masquerade | |
|----------+------------+-------------------------------+----------------|
| | | make this safer and fully | |
| 306864 | jpeeler | correct, pointed out by Steve | |
| | | Davis | |
|----------+------------+-------------------------------+----------------|
| 306964 | jpeeler | clean this up, sorry my brain | |
| | | is not really working | |
|----------+------------+-------------------------------+----------------|
| 306965 | jpeeler | fix this line again | |
|----------+------------+-------------------------------+----------------|
| | | Fix comparison for REFER | |
| 306972 | twilson | Replaces tags with | |
| | | pedantic=yes | |
|----------+------------+-------------------------------+----------------|
| | | Remove color when executing | |
| 307534 | qwell | commands via a remote | #18776 |
| | | console. | |
|----------+------------+-------------------------------+----------------|
| | | Reentrancy problem if | |
| 307623 | rmudgett | outgoing call gets different | |
| | | B channel than requested. | |
|----------+------------+-------------------------------+----------------|
| | | Properly check the bounds of | |
| | | arrays when decoding UDPTL | |
| 308413 | mnicholson | packets. Also, remove broken | |
| | | support for receiving UDPTL | |
| | | packets larger than 16k. That | |
| | | shouldn't ever happen anyway. | |
|----------+------------+-------------------------------+----------------|
| 315203 | lmadsen | Create Asterisk 1.4.41 from | |
| | | 1.4.41-rc1 | |
|----------+------------+-------------------------------+----------------|
| | | Merge changes for | |
| 315204 | lmadsen | AST-2011-005 and | |
| | | AST-2011-006, update .version | |
| | | and ChangeLog | |
|----------+------------+-------------------------------+----------------|
| 315205 | lmadsen | Merge changes for | |
| | | AST-2011-005 and AST-2011-006 | |
|----------+------------+-------------------------------+----------------|
| 315206 | lmadsen | Importing release summary for | |
| | | 1.4.41 release. | |
|----------+------------+-------------------------------+----------------|
| | | Remove incorrect summary | |
| 315207 | lmadsen | files in preparation for | |
| | | rebuilding. | |
+------------------------------------------------------------------------+
----------------------------------------------------------------------
Diffstat Results
[Back to Top]
This is a summary of the changes to the source code that went into this
release that was generated using the diffstat utility.
.version | 2
ChangeLog | 14
apps/app_dial.c | 6
apps/app_meetme.c | 28 -
apps/app_queue.c | 58 ++
apps/app_sendtext.c | 2
apps/app_voicemail.c | 64 ++
asterisk-1.4.41-rc1-summary.html | 242 -----------
asterisk-1.4.41-rc1-summary.txt | 356 ----------------
channels/chan_dahdi.c | 468 ++++++++++++++++-----
channels/chan_local.c | 1
channels/chan_sip.c | 234 ++++++++++
channels/chan_skinny.c | 75 +++
configs/http.conf.sample | 7
configs/manager.conf.sample | 11
configs/queues.conf.sample | 2
configs/skinny.conf.sample | 9
configure.ac | 6
include/asterisk/astdb.h | 21
include/asterisk/autoconfig.h.in | 53 +-
include/asterisk/channel.h | 23 +
main/asterisk.c | 2
main/channel.c | 40 +
main/http.c | 25 +
main/manager.c | 87 +++-
main/pbx.c | 26 -
main/udptl.c | 54 +-
res/res_features.c | 844 +++++++++++++++++++++++++++------------
res/res_musiconhold.c | 7
29 files changed, 1677 insertions(+), 1090 deletions(-)
----------------------------------------------------------------------

View File

@@ -96,8 +96,13 @@ enum skinny_codecs {
#define DEFAULT_SKINNY_PORT 2000
#define DEFAULT_SKINNY_BACKLOG 2
#define SKINNY_MAX_PACKET 1000
#define DEFAULT_AUTH_TIMEOUT 30
#define DEFAULT_AUTH_LIMIT 50
static int keep_alive = 120;
static int auth_timeout = DEFAULT_AUTH_TIMEOUT;
static int auth_limit = DEFAULT_AUTH_LIMIT;
static int unauth_sessions = 0;
static char date_format[6] = "D-M-Y";
static char version_id[16] = "P002F202";
@@ -1060,6 +1065,7 @@ struct skinny_paging_device {
static struct skinnysession {
pthread_t t;
ast_mutex_t lock;
time_t start;
struct sockaddr_in sin;
int fd;
char inbuf[SKINNY_MAX_PACKET];
@@ -3064,6 +3070,7 @@ static int handle_register_message(struct skinny_req *req, struct skinnysession
transmit_response(s, req);
return 0;
}
ast_atomic_fetchadd_int(&unauth_sessions, -1);
if (option_verbose > 2)
ast_verbose(VERBOSE_PREFIX_3 "Device '%s' successfully registered\n", name);
@@ -4427,6 +4434,9 @@ static void destroy_session(struct skinnysession *s)
if (s->fd > -1) {
close(s->fd);
}
if (!s->device) {
ast_atomic_fetchadd_int(&unauth_sessions, -1);
}
ast_mutex_destroy(&s->lock);
free(s);
} else {
@@ -4439,13 +4449,30 @@ static int get_input(struct skinnysession *s)
{
int res;
int dlen = 0;
int timeout = keep_alive * 1100;
time_t now;
int *bufaddr;
struct pollfd fds[1];
if (!s->device) {
if(time(&now) == -1) {
ast_log(LOG_ERROR, "error executing time(): %s\n", strerror(errno));
return -1;
}
timeout = (auth_timeout - (now - s->start)) * 1000;
if (timeout < 0) {
/* we have timed out */
if (skinnydebug)
ast_verbose("Skinny Client failed to authenticate in %d seconds\n", auth_timeout);
return -1;
}
}
fds[0].fd = s->fd;
fds[0].events = POLLIN;
fds[0].revents = 0;
res = ast_poll(fds, 1, (keep_alive * 1100)); /* If nothing has happen, client is dead */
res = ast_poll(fds, 1, timeout); /* If nothing has happen, client is dead */
/* we add 10% to the keep_alive to deal */
/* with network delays, etc */
if (res < 0) {
@@ -4454,8 +4481,13 @@ static int get_input(struct skinnysession *s)
return res;
}
} else if (res == 0) {
if (skinnydebug)
ast_verbose("Skinny Client was lost, unregistering\n");
if (skinnydebug) {
if (s->device) {
ast_verbose("Skinny Client was lost, unregistering\n");
} else {
ast_verbose("Skinny Client failed to authenticate in %d seconds\n", auth_timeout);
}
}
skinny_unregister(NULL, s);
return -1;
}
@@ -4594,18 +4626,35 @@ static void *accept_thread(void *ignore)
ast_log(LOG_NOTICE, "Accept returned -1: %s\n", strerror(errno));
continue;
}
if (ast_atomic_fetchadd_int(&unauth_sessions, +1) >= auth_limit) {
close(as);
ast_atomic_fetchadd_int(&unauth_sessions, -1);
continue;
}
p = getprotobyname("tcp");
if(p) {
if( setsockopt(as, p->p_proto, TCP_NODELAY, (char *)&arg, sizeof(arg) ) < 0 ) {
ast_log(LOG_WARNING, "Failed to set Skinny tcp connection to TCP_NODELAY mode: %s\n", strerror(errno));
}
}
if (!(s = ast_calloc(1, sizeof(struct skinnysession))))
if (!(s = ast_calloc(1, sizeof(struct skinnysession)))) {
close(as);
ast_atomic_fetchadd_int(&unauth_sessions, -1);
continue;
}
memcpy(&s->sin, &sin, sizeof(sin));
ast_mutex_init(&s->lock);
s->fd = as;
if(time(&s->start) == -1) {
ast_log(LOG_ERROR, "error executing time(): %s; disconnecting client\n", strerror(errno));
destroy_session(s);
continue;
}
ast_mutex_lock(&sessionlock);
s->next = sessions;
sessions = s;
@@ -4756,6 +4805,24 @@ static int reload_config(void)
}
} else if (!strcasecmp(v->name, "keepalive")) {
keep_alive = atoi(v->value);
} else if (!strcasecmp(v->name, "authtimeout")) {
int timeout = atoi(v->value);
if (timeout < 1) {
ast_log(LOG_WARNING, "Invalid authtimeout value '%s', using default value\n", v->value);
auth_timeout = DEFAULT_AUTH_TIMEOUT;
} else {
auth_timeout = timeout;
}
} else if (!strcasecmp(v->name, "authlimit")) {
int limit = atoi(v->value);
if (limit < 1) {
ast_log(LOG_WARNING, "Invalid authlimit value '%s', using default value\n", v->value);
auth_limit = DEFAULT_AUTH_LIMIT;
} else {
auth_limit = limit;
}
} else if (!strcasecmp(v->name, "dateformat")) {
memcpy(date_format, v->value, sizeof(date_format));
} else if (!strcasecmp(v->name, "allow")) {

View File

@@ -26,7 +26,12 @@ bindport=8088
; requests must begin with /asterisk
;
;prefix=asterisk
;
; sessionlimit specifies the maximum number of httpsessions that will be
; allowed to exist at any given time. (default: 100)
;
;sessionlimit=100
;
; The post_mappings section maps URLs to real paths on the filesystem. If a
; POST is done from within an authenticated manager session to one of the
; configured POST mappings, then any files in the POST will be placed in the

View File

@@ -26,6 +26,17 @@ enabled = no
;webenabled = yes
port = 5038
; authtimeout specifies the maximum number of seconds a client has to
; authenticate. If the client does not authenticate beofre this timeout
; expires, the client will be disconnected. (default: 30 seconds)
;authtimeout = 30
; authlimit specifies the maximum number of unauthenticated sessions that will
; be allowed to connect at any given time.
;authlimit = 50
;httptimeout = 60
; a) httptimeout sets the Max-Age of the http cookie
; b) httptimeout is the amount of time the webserver waits

View File

@@ -9,6 +9,15 @@ dateformat=M-D-Y ; M,D,Y in any order (6 chars max)
; Use M for month, D for day, Y for year, A for 12-hour time.
keepalive=120
;authtimeout = 30 ; authtimeout specifies the maximum number of seconds a
; client has to authenticate. If the client does not
; authenticate beofre this timeout expires, the client
; will be disconnected. (default: 30 seconds)
;authlimit = 50 ; authlimit specifies the maximum number of
; unauthenticated sessions that will be allowed to
; connect at any given time. (default: 50)
;allow=all ; see doc/rtp-packetization for framing options
;disallow=

View File

@@ -60,6 +60,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#define MAX_PREFIX 80
#define DEFAULT_PREFIX "/asterisk"
#define DEFAULT_SESSION_LIMIT 100
struct ast_http_server_instance {
FILE *f;
@@ -77,6 +78,8 @@ static char prefix[MAX_PREFIX];
static int prefix_len;
static struct sockaddr_in oldsin;
static int enablestatic;
static int session_limit = DEFAULT_SESSION_LIMIT;
static int session_count = 0;
/*! \brief Limit the kinds of files we're willing to serve up */
static struct {
@@ -516,6 +519,7 @@ static void *ast_httpd_helper_thread(void *data)
}
fclose(ser->f);
free(ser);
ast_atomic_fetchadd_int(&session_count, -1);
return NULL;
}
@@ -534,15 +538,23 @@ static void *http_root(void *data)
ast_wait_for_input(httpfd, -1);
sinlen = sizeof(sin);
fd = accept(httpfd, (struct sockaddr *)&sin, &sinlen);
if (fd < 0) {
if ((errno != EAGAIN) && (errno != EINTR))
ast_log(LOG_WARNING, "Accept failed: %s\n", strerror(errno));
continue;
}
if (ast_atomic_fetchadd_int(&session_count, +1) >= session_limit) {
close(fd);
continue;
}
ser = ast_calloc(1, sizeof(*ser));
if (!ser) {
ast_log(LOG_WARNING, "No memory for new session: %s\n", strerror(errno));
close(fd);
ast_atomic_fetchadd_int(&session_count, -1);
continue;
}
flags = fcntl(fd, F_GETFL);
@@ -557,12 +569,14 @@ static void *http_root(void *data)
ast_log(LOG_WARNING, "Unable to launch helper thread: %s\n", strerror(errno));
fclose(ser->f);
free(ser);
ast_atomic_fetchadd_int(&session_count, -1);
}
pthread_attr_destroy(&attr);
} else {
ast_log(LOG_WARNING, "fdopen failed!\n");
close(ser->fd);
free(ser);
ast_atomic_fetchadd_int(&session_count, -1);
}
}
return NULL;
@@ -679,8 +693,17 @@ static int __ast_http_load(int reload)
} else {
newprefix[0] = '\0';
}
} else if (!strcasecmp(v->name, "sessionlimit")) {
int limit = atoi(v->value);
if (limit < 1) {
ast_log(LOG_WARNING, "Invalid sessionlimit value '%s', using default value\n", v->value);
session_limit = DEFAULT_SESSION_LIMIT;
} else {
session_limit = limit;
}
}
v = v->next;
}
ast_config_destroy(cfg);

View File

@@ -104,6 +104,8 @@ static const int DEFAULT_DISPLAYCONNECTS = 1; /*!< Default setting for displayin
static const int DEFAULT_TIMESTAMPEVENTS = 0; /*!< Default setting for timestampevents */
static const int DEFAULT_HTTPTIMEOUT = 60; /*!< Default manager http timeout */
static const int DEFAULT_BROKENEVENTSACTION = 0; /*!< Default setting for brokeneventsaction */
static const int DEFAULT_AUTHTIMEOUT = 30; /*!< Default setting for authtimeout */
static const int DEFAULT_AUTHLIMIT = 50; /*!< Default setting for authlimit */
static int enabled;
@@ -113,10 +115,13 @@ static int displayconnects;
static int timestampevents;
static int httptimeout;
static int broken_events_action;
static int authtimeout;
static int authlimit;
static pthread_t t;
static int block_sockets;
static int num_sessions;
static int unauth_sessions = 0;
/* Protected by the sessions list lock */
struct eventqent *master_eventq = NULL;
@@ -222,6 +227,7 @@ struct mansession_session {
struct eventqent *eventq;
/* Timeout for ast_carefulwrite() */
int writetimeout;
time_t authstart;
int pending_event; /*!< Pending events indicator in case when waiting_thread is NULL */
AST_LIST_ENTRY(mansession_session) list;
};
@@ -2305,6 +2311,7 @@ static int process_message(struct mansession *s, const struct message *m)
return -1;
} else {
s->session->authenticated = 1;
ast_atomic_fetchadd_int(&unauth_sessions, -1);
if (option_verbose > 1) {
if (displayconnects) {
ast_verbose(VERBOSE_PREFIX_2 "%sManager '%s' logged on from %s\n",
@@ -2354,6 +2361,8 @@ static int get_input(struct mansession_session *s, char *output)
int res;
int x;
struct pollfd fds[1];
int timeout = -1;
time_t now;
for (x = 1; x < s->inlen; x++) {
if ((s->inbuf[x] == '\n') && (s->inbuf[x-1] == '\r')) {
/* Copy output data up to and including \r\n */
@@ -2372,7 +2381,22 @@ static int get_input(struct mansession_session *s, char *output)
}
fds[0].fd = s->fd;
fds[0].events = POLLIN;
do {
/* calculate a timeout if we are not authenticated */
if (!s->authenticated) {
if(time(&now) == -1) {
ast_log(LOG_ERROR, "error executing time(): %s\n", strerror(errno));
return -1;
}
timeout = (authtimeout - (now - s->authstart)) * 1000;
if (timeout < 0) {
/* we have timed out */
return 0;
}
}
ast_mutex_lock(&s->__lock);
if (s->pending_event) {
s->pending_event = 0;
@@ -2382,7 +2406,7 @@ static int get_input(struct mansession_session *s, char *output)
s->waiting_thread = pthread_self();
ast_mutex_unlock(&s->__lock);
res = ast_poll(fds, 1, -1);
res = ast_poll(fds, 1, timeout);
ast_mutex_lock(&s->__lock);
s->waiting_thread = AST_PTHREADT_NULL;
@@ -2400,6 +2424,9 @@ static int get_input(struct mansession_session *s, char *output)
if (res < 1)
return -1;
break;
} else {
/* timeout */
return 0;
}
} while(1);
s->inlen += res;
@@ -2412,6 +2439,7 @@ static int do_message(struct mansession *s)
struct message m = { 0 };
char header_buf[sizeof(s->session->inbuf)] = { '\0' };
int res;
time_t now;
for (;;) {
/* Check if any events are pending and do them if needed */
@@ -2421,6 +2449,17 @@ static int do_message(struct mansession *s)
}
res = get_input(s->session, header_buf);
if (res == 0) {
if (!s->session->authenticated) {
if(time(&now) == -1) {
ast_log(LOG_ERROR, "error executing time(): %s\n", strerror(errno));
return -1;
}
if (now - s->session->authstart > authtimeout) {
ast_log(LOG_EVENT, "Client from %s, failed to authenticate in %d seconds\n", ast_inet_ntoa(s->session->sin.sin_addr), authtimeout);
return -1;
}
}
continue;
} else if (res > 0) {
/* Strip trailing \r\n */
@@ -2455,6 +2494,7 @@ static void *session_do(void *data)
}
ast_log(LOG_EVENT, "Manager '%s' logged off from %s\n", session->username, ast_inet_ntoa(session->sin.sin_addr));
} else {
ast_atomic_fetchadd_int(&unauth_sessions, -1);
if (option_verbose > 1) {
if (displayconnects)
ast_verbose(VERBOSE_PREFIX_2 "Connect attempt from '%s' unable to authenticate\n", ast_inet_ntoa(session->sin.sin_addr));
@@ -2528,14 +2568,25 @@ static void *accept_thread(void *ignore)
ast_log(LOG_NOTICE, "Accept returned -1: %s\n", strerror(errno));
continue;
}
if (ast_atomic_fetchadd_int(&unauth_sessions, +1) >= authlimit) {
close(as);
ast_atomic_fetchadd_int(&unauth_sessions, -1);
ast_log(LOG_WARNING, "manager connection rejected, too many unauthenticated sessions.\n");
continue;
}
p = getprotobyname("tcp");
if (p) {
if( setsockopt(as, p->p_proto, TCP_NODELAY, (char *)&arg, sizeof(arg) ) < 0 ) {
ast_log(LOG_WARNING, "Failed to set manager tcp connection to TCP_NODELAY mode: %s\n", strerror(errno));
}
}
if (!(s = ast_calloc(1, sizeof(*s))))
if (!(s = ast_calloc(1, sizeof(*s)))) {
close(as);
ast_atomic_fetchadd_int(&unauth_sessions, -1);
continue;
}
memcpy(&s->sin, &sin, sizeof(sin));
s->writetimeout = 100;
@@ -2562,8 +2613,16 @@ static void *accept_thread(void *ignore)
s->eventq = s->eventq->next;
ast_atomic_fetchadd_int(&s->eventq->usecount, 1);
AST_LIST_UNLOCK(&sessions);
if (ast_pthread_create_background(&t, &attr, session_do, s))
if(time(&s->authstart) == -1) {
ast_log(LOG_ERROR, "error executing time(): %s; disconnecting client\n", strerror(errno));
ast_atomic_fetchadd_int(&unauth_sessions, -1);
destroy_session(s);
continue;
}
if (ast_pthread_create_background(&t, &attr, session_do, s)) {
ast_atomic_fetchadd_int(&unauth_sessions, -1);
destroy_session(s);
}
}
pthread_attr_destroy(&attr);
return NULL;
@@ -3100,6 +3159,8 @@ int init_manager(void)
block_sockets = DEFAULT_BLOCKSOCKETS;
timestampevents = DEFAULT_TIMESTAMPEVENTS;
httptimeout = DEFAULT_HTTPTIMEOUT;
authtimeout = DEFAULT_AUTHTIMEOUT;
authlimit = DEFAULT_AUTHLIMIT;
cfg = ast_config_load("manager.conf");
if (!cfg) {
@@ -3137,6 +3198,26 @@ int init_manager(void)
if ((val = ast_variable_retrieve(cfg, "general", "httptimeout")))
newhttptimeout = atoi(val);
if ((val = ast_variable_retrieve(cfg, "general", "authtimeout"))) {
int timeout = atoi(val);
if (timeout < 1) {
ast_log(LOG_WARNING, "Invalid authtimeout value '%s', using default value\n", val);
} else {
authtimeout = timeout;
}
}
if ((val = ast_variable_retrieve(cfg, "general", "authlimit"))) {
int limit = atoi(val);
if (limit < 1) {
ast_log(LOG_WARNING, "Invalid authlimit value '%s', using default value\n", val);
} else {
authlimit = limit;
}
}
memset(&ba, 0, sizeof(ba));
ba.sin_family = AF_INET;
ba.sin_port = htons(portno);