mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-08 19:08:14 +00:00
Compare commits
18 Commits
certified/
...
1.8.9.0-rc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a9db09396 | ||
|
|
950552a797 | ||
|
|
16bfc9c8b7 | ||
|
|
61643ac1b9 | ||
|
|
9453ae0244 | ||
|
|
af0a3adce7 | ||
|
|
2feee9d030 | ||
|
|
ab5779c1bd | ||
|
|
e8e410a260 | ||
|
|
71f88c493a | ||
|
|
b15d9d3297 | ||
|
|
98e7f2d541 | ||
|
|
f052d93bc3 | ||
|
|
64c6dd9b12 | ||
|
|
1f568fa72c | ||
|
|
a4c8ab1149 | ||
|
|
d89e5b1eb3 | ||
|
|
47d9f12ab5 |
@@ -2346,9 +2346,8 @@ static struct call_queue *load_realtime_queue(const char *queuename)
|
||||
if (queue_vars) {
|
||||
member_config = ast_load_realtime_multientry("queue_members", "interface LIKE", "%", "queue_name", queuename, SENTINEL);
|
||||
if (!member_config) {
|
||||
ast_log(LOG_ERROR, "no queue_members defined in your config (extconfig.conf).\n");
|
||||
ast_variables_destroy(queue_vars);
|
||||
return NULL;
|
||||
ast_debug(1, "No queue_members defined in config extconfig.conf\n");
|
||||
member_config = ast_config_new();
|
||||
}
|
||||
}
|
||||
if (q) {
|
||||
|
||||
64
asterisk-1.8.9.0-rc3-summary.html
Normal file
64
asterisk-1.8.9.0-rc3-summary.html
Normal file
@@ -0,0 +1,64 @@
|
||||
<!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.8.9.0-rc3</title></head>
|
||||
<body>
|
||||
<h1 align="center"><a name="top">Release Summary</a></h1>
|
||||
<h3 align="center">asterisk-1.8.9.0-rc3</h3>
|
||||
<h3 align="center">Date: 2012-01-24</h3>
|
||||
<h3 align="center"><asteriskteam@digium.com></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="#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.8.9.0-rc2.</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>
|
||||
2 mjordan<br/>
|
||||
1 bebuild<br/>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<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.8?view=revision&revision=352284">352284</a></td><td>mjordan</td><td>Create 1.8.9.0-rc3</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=352286">352286</a></td><td>mjordan</td><td>Commit changes: r349731, r352199, r352014, r351504</td>
|
||||
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=352344">352344</a></td><td>bebuild</td><td>Updated test results</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 | 31 +++++++++++++
|
||||
asterisk-1.8.9.0-rc2-summary.html | 60 -------------------------
|
||||
asterisk-1.8.9.0-rc2-summary.txt | 88 --------------------------------------
|
||||
channels/chan_sip.c | 58 +++++++++++--------------
|
||||
main/features.c | 11 ++++
|
||||
main/file.c | 16 ++++--
|
||||
7 files changed, 80 insertions(+), 186 deletions(-)
|
||||
</pre><br/>
|
||||
<hr/>
|
||||
</body>
|
||||
</html>
|
||||
94
asterisk-1.8.9.0-rc3-summary.txt
Normal file
94
asterisk-1.8.9.0-rc3-summary.txt
Normal file
@@ -0,0 +1,94 @@
|
||||
Release Summary
|
||||
|
||||
asterisk-1.8.9.0-rc3
|
||||
|
||||
Date: 2012-01-24
|
||||
|
||||
<asteriskteam@digium.com>
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Summary
|
||||
2. Contributors
|
||||
3. Other Changes
|
||||
4. 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.8.9.0-rc2.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
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
|
||||
2 mjordan
|
||||
1 bebuild
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
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 |
|
||||
|----------+---------+-------------------------------+-------------------|
|
||||
| 352284 | mjordan | Create 1.8.9.0-rc3 | |
|
||||
|----------+---------+-------------------------------+-------------------|
|
||||
| 352286 | mjordan | Commit changes: r349731, | |
|
||||
| | | r352199, r352014, r351504 | |
|
||||
|----------+---------+-------------------------------+-------------------|
|
||||
| 352344 | bebuild | Updated test results | |
|
||||
+------------------------------------------------------------------------+
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
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 | 31 +++++++++++++
|
||||
asterisk-1.8.9.0-rc2-summary.html | 60 -------------------------
|
||||
asterisk-1.8.9.0-rc2-summary.txt | 88 --------------------------------------
|
||||
channels/chan_sip.c | 58 +++++++++++--------------
|
||||
main/features.c | 11 ++++
|
||||
main/file.c | 16 ++++--
|
||||
7 files changed, 80 insertions(+), 186 deletions(-)
|
||||
|
||||
----------------------------------------------------------------------
|
||||
@@ -3860,6 +3860,7 @@ static int __sip_autodestruct(const void *data)
|
||||
ast_channel_unref(owner);
|
||||
} else if (p->refer && !p->alreadygone) {
|
||||
ast_debug(3, "Finally hanging up channel after transfer: %s\n", p->callid);
|
||||
stop_media_flows(p);
|
||||
transmit_request_with_auth(p, SIP_BYE, 0, XMIT_RELIABLE, 1);
|
||||
append_history(p, "ReferBYE", "Sending BYE on transferer call leg %s", p->callid);
|
||||
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
|
||||
@@ -20202,15 +20203,22 @@ static void handle_response_notify(struct sip_pvt *p, int resp, const char *rest
|
||||
case 200: /* Notify accepted */
|
||||
/* They got the notify, this is the end */
|
||||
if (p->owner) {
|
||||
if (!p->refer) {
|
||||
ast_log(LOG_WARNING, "Notify answer on an owned channel? - %s\n", p->owner->name);
|
||||
ast_queue_hangup_with_cause(p->owner, AST_CAUSE_NORMAL_UNSPECIFIED);
|
||||
if (p->refer) {
|
||||
ast_log(LOG_NOTICE, "Got OK on REFER Notify message\n");
|
||||
} else {
|
||||
ast_debug(4, "Got OK on REFER Notify message\n");
|
||||
ast_log(LOG_WARNING, "Notify answer on an owned channel? - %s\n", p->owner->name);
|
||||
/*
|
||||
* XXX There is discrepancy on whether a hangup should be queued
|
||||
* or not. This code used to be duplicated in two places, and the more
|
||||
* frequently hit area had this disabled, making it the de facto
|
||||
* "correct" way to go.
|
||||
*
|
||||
* ast_queue_hangup_with_cause(p->owner, AST_CAUSE_NORMAL_UNSPECIFIED);
|
||||
*/
|
||||
}
|
||||
} else {
|
||||
if (p->subscribed == NONE) {
|
||||
ast_debug(4, "Got 200 accepted on NOTIFY\n");
|
||||
if (p->subscribed == NONE && !p->refer) {
|
||||
ast_debug(4, "Got 200 accepted on NOTIFY %s\n", p->callid);
|
||||
pvt_set_needdestroy(p, "received 200 response");
|
||||
}
|
||||
if (ast_test_flag(&p->flags[1], SIP_PAGE2_STATECHANGEQUEUE)) {
|
||||
@@ -20235,6 +20243,9 @@ static void handle_response_notify(struct sip_pvt *p, int resp, const char *rest
|
||||
pvt_set_needdestroy(p, "failed to authenticate NOTIFY");
|
||||
}
|
||||
break;
|
||||
case 481: /* Call leg does not exist */
|
||||
pvt_set_needdestroy(p, "Received 481 response for NOTIFY");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20829,6 +20840,9 @@ static void handle_response(struct sip_pvt *p, int resp, const char *rest, struc
|
||||
} else if (sipmethod == SIP_MESSAGE) {
|
||||
/* More good gravy! */
|
||||
handle_response_message(p, resp, rest, req, seqno);
|
||||
} else if (sipmethod == SIP_NOTIFY) {
|
||||
/* The gravy train continues to roll */
|
||||
handle_response_notify(p, resp, rest, req, seqno);
|
||||
} else if (ast_test_flag(&p->flags[0], SIP_OUTGOING)) {
|
||||
switch(resp) {
|
||||
case 100: /* 100 Trying */
|
||||
@@ -20844,8 +20858,6 @@ static void handle_response(struct sip_pvt *p, int resp, const char *rest, struc
|
||||
p->authtries = 0; /* Reset authentication counter */
|
||||
if (sipmethod == SIP_INVITE) {
|
||||
handle_response_invite(p, resp, rest, req, seqno);
|
||||
} else if (sipmethod == SIP_NOTIFY) {
|
||||
handle_response_notify(p, resp, rest, req, seqno);
|
||||
} else if (sipmethod == SIP_REGISTER) {
|
||||
handle_response_register(p, resp, rest, req, seqno);
|
||||
} else if (sipmethod == SIP_SUBSCRIBE) {
|
||||
@@ -20860,8 +20872,6 @@ static void handle_response(struct sip_pvt *p, int resp, const char *rest, struc
|
||||
case 407: /* Proxy auth required */
|
||||
if (sipmethod == SIP_INVITE)
|
||||
handle_response_invite(p, resp, rest, req, seqno);
|
||||
else if (sipmethod == SIP_NOTIFY)
|
||||
handle_response_notify(p, resp, rest, req, seqno);
|
||||
else if (sipmethod == SIP_SUBSCRIBE)
|
||||
handle_response_subscribe(p, resp, rest, req, seqno);
|
||||
else if (p->registry && sipmethod == SIP_REGISTER)
|
||||
@@ -20936,8 +20946,6 @@ static void handle_response(struct sip_pvt *p, int resp, const char *rest, struc
|
||||
handle_response_invite(p, resp, rest, req, seqno);
|
||||
} else if (sipmethod == SIP_SUBSCRIBE) {
|
||||
handle_response_subscribe(p, resp, rest, req, seqno);
|
||||
} else if (sipmethod == SIP_NOTIFY) {
|
||||
pvt_set_needdestroy(p, "received 481 response");
|
||||
} else if (sipmethod == SIP_BYE) {
|
||||
/* The other side has no transaction to bye,
|
||||
just assume it's all right then */
|
||||
@@ -21094,24 +21102,6 @@ static void handle_response(struct sip_pvt *p, int resp, const char *rest, struc
|
||||
ast_debug(1, "Got 200 OK on CANCEL\n");
|
||||
|
||||
/* Wait for 487, then destroy */
|
||||
} else if (sipmethod == SIP_NOTIFY) {
|
||||
/* They got the notify, this is the end */
|
||||
if (p->owner) {
|
||||
if (p->refer) {
|
||||
ast_debug(1, "Got 200 OK on NOTIFY for transfer\n");
|
||||
} else
|
||||
ast_log(LOG_WARNING, "Notify answer on an owned channel?\n");
|
||||
/* ast_queue_hangup(p->owner); Disabled */
|
||||
} else {
|
||||
if (!p->subscribed && !p->refer) {
|
||||
pvt_set_needdestroy(p, "transaction completed");
|
||||
}
|
||||
if (ast_test_flag(&p->flags[1], SIP_PAGE2_STATECHANGEQUEUE)) {
|
||||
/* Ready to send the next state we have on queue */
|
||||
ast_clear_flag(&p->flags[1], SIP_PAGE2_STATECHANGEQUEUE);
|
||||
cb_extensionstate((char *)p->context, (char *)p->exten, p->laststate, (void *) p);
|
||||
}
|
||||
}
|
||||
} else if (sipmethod == SIP_BYE) {
|
||||
pvt_set_needdestroy(p, "transaction completed");
|
||||
}
|
||||
@@ -21133,8 +21123,6 @@ static void handle_response(struct sip_pvt *p, int resp, const char *rest, struc
|
||||
handle_response_invite(p, resp, rest, req, seqno);
|
||||
} else if (sipmethod == SIP_BYE) {
|
||||
pvt_set_needdestroy(p, "received 481 response");
|
||||
} else if (sipmethod == SIP_NOTIFY) {
|
||||
pvt_set_needdestroy(p, "received 481 response");
|
||||
} else if (sipdebug) {
|
||||
ast_debug(1, "Remote host can't match request %s to call '%s'. Giving up\n", sip_methods[sipmethod].text, p->callid);
|
||||
}
|
||||
@@ -29356,6 +29344,12 @@ static int setup_srtp(struct sip_srtp **srtp)
|
||||
|
||||
static int process_crypto(struct sip_pvt *p, struct ast_rtp_instance *rtp, struct sip_srtp **srtp, const char *a)
|
||||
{
|
||||
/* If no RTP instance exists for this media stream don't bother processing the crypto line */
|
||||
if (!rtp) {
|
||||
ast_debug(3, "Received offer with crypto line for media stream that is not enabled\n");
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (strncasecmp(a, "crypto:", 7)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -4096,6 +4096,17 @@ int ast_bridge_call(struct ast_channel *chan, struct ast_channel *peer, struct a
|
||||
if (!f || (f->frametype == AST_FRAME_CONTROL &&
|
||||
(f->subclass.integer == AST_CONTROL_HANGUP || f->subclass.integer == AST_CONTROL_BUSY ||
|
||||
f->subclass.integer == AST_CONTROL_CONGESTION))) {
|
||||
/*
|
||||
* If the bridge was broken for a hangup that isn't real, then
|
||||
* then don't run the h extension, because the channel isn't
|
||||
* really hung up. This should really only happen with AST_SOFTHANGUP_ASYNCGOTO,
|
||||
* but it doesn't hurt to check AST_SOFTHANGUP_UNBRIDGE either.
|
||||
*/
|
||||
ast_channel_lock(chan);
|
||||
if (chan->_softhangup & (AST_SOFTHANGUP_ASYNCGOTO | AST_SOFTHANGUP_UNBRIDGE)) {
|
||||
ast_set_flag(chan, AST_FLAG_BRIDGE_HANGUP_DONT);
|
||||
}
|
||||
ast_channel_unlock(chan);
|
||||
res = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
16
main/file.c
16
main/file.c
@@ -949,6 +949,7 @@ int ast_streamfile(struct ast_channel *chan, const char *filename, const char *p
|
||||
struct ast_filestream *fs;
|
||||
struct ast_filestream *vfs=NULL;
|
||||
char fmt[256];
|
||||
off_t pos;
|
||||
int seekattempt;
|
||||
int res;
|
||||
|
||||
@@ -961,12 +962,17 @@ int ast_streamfile(struct ast_channel *chan, const char *filename, const char *p
|
||||
/* check to see if there is any data present (not a zero length file),
|
||||
* done this way because there is no where for ast_openstream_full to
|
||||
* return the file had no data. */
|
||||
seekattempt = fseek(fs->f, -1, SEEK_END);
|
||||
if (seekattempt && errno == EINVAL) {
|
||||
/* Zero-length file, as opposed to a pipe */
|
||||
return 0;
|
||||
pos = ftello(fs->f);
|
||||
seekattempt = fseeko(fs->f, -1, SEEK_END);
|
||||
if (seekattempt) {
|
||||
if (errno == EINVAL) {
|
||||
/* Zero-length file, as opposed to a pipe */
|
||||
return 0;
|
||||
} else {
|
||||
ast_seekstream(fs, 0, SEEK_SET);
|
||||
}
|
||||
} else {
|
||||
ast_seekstream(fs, 0, SEEK_SET);
|
||||
fseeko(fs->f, pos, SEEK_SET);
|
||||
}
|
||||
|
||||
vfs = ast_openvstream(chan, filename, preflang);
|
||||
|
||||
Reference in New Issue
Block a user