Compare commits

...

12 Commits

Author SHA1 Message Date
Asterisk Autobuilder
f47b05fef2 Importing release summary for 10.4.2 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.2@367970 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-30 14:42:11 +00:00
Asterisk Autobuilder
eb647a0e64 Merge r367267,367562 for 10.4.2
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.2@367964 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-30 14:22:53 +00:00
Asterisk Autobuilder
5f9c43a1a5 Create 10.4.2 tag
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.2@367958 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-30 13:29:02 +00:00
Asterisk Autobuilder
3c812dc35c Importing release summary for 10.4.1 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.1@367855 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-29 19:17:56 +00:00
Asterisk Autobuilder
1efbf62a57 Commit 367844,367782
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.1@367852 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-29 19:12:26 +00:00
Asterisk Autobuilder
1c6aa76086 Create 10.4.1 tag
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.1@367565 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-24 13:40:29 +00:00
Asterisk Autobuilder
1fb8b57dbd Importing release summary for 10.4.0 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0@365067 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-02 16:54:37 +00:00
Asterisk Autobuilder
7ac4bf201b Update .version, ChangeLog for 10.4.0
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0@365013 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-02 16:04:43 +00:00
Asterisk Autobuilder
dbe5bb1719 Create 10.4.0 tag
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0@365008 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-02 15:54:01 +00:00
Asterisk Autobuilder
ae642a1089 Importing release summary for 10.4.0-rc3 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0-rc3@364765 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-01 17:46:27 +00:00
Asterisk Autobuilder
1e883659b7 Merge 364707 for 10.4.0-rc3
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0-rc3@364762 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-01 17:29:10 +00:00
Asterisk Autobuilder
72e7cf1f44 Create tag for 10.4.0-rc3
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/10.4.0-rc3@364760 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2012-05-01 17:23:17 +00:00
8 changed files with 159 additions and 68 deletions

View File

@@ -1 +1 @@
10.4.0-rc2
10.4.2

View File

@@ -1,3 +1,72 @@
2012-05-30 Asterisk Development Team <asteriskteam@digium.com>
* Asterisk 10.4.2 Released.
* Resolve crash in subscribing for MWI notifications.
ASTOBJ_UNREF sets the variable to NULL after unreffing it, so the
variable shoudl definitely not be used after that. To solve this in
the two cases that affect subscribing for MWI notifications, we
instead save the ref locally, and unref them in the error
conditions.
(closes issue ASTERISK-19827)
Reported by: B. R.
Review: https://reviewboard.asterisk.org/r/1940/
* Fix crash in ConfBridge when user announcement is played for more
than 2 users
A patch introduced in r354938 made it so that ConfBridge would not
attempt to play sound files if those files did not exist.
Unfortunately, ConfBridge uses the same underlying fucntion,
play_sound_helper, to playback both the sound files and numbers to
callers. When a number is being played back, the name of the sound
file is expected to be NULL. This NULL value was passed into a
function that tested for the existance of a sound file and is not
tolerant to NULL file names, causing a crash.
This patch fixes the behavior, such that if a sound file does not
exist we do not attempt to play it, but we only attempt that check
if the sound file was specified in the first place. If a sound file
was not specified, we use the 'play number' logic in the helper
function.
(closes issue ASTERISK-19899)
Reported by: Florian Gilcher
Tested by: Florian Gilcher
patches:
ASTERISK-19899.diff uploaded by mjordan (license 6283)
2012-05-29 Asterisk Development Team <asteriskteam@digium.com>
* Asterisk 10.4.1 Released.
* AST-2012-007
* AST-2012-008
2012-05-02 Asterisk Development Team <asteriskteam@digium.com>
* Asterisk 10.4.0 Released.
2012-05-01 Asterisk Development Team <asteriskteam@digium.com>
* Asterisk 10.4.0-rc3 Released.
* channels/chan_sip.c: Revert revision 360862
Revision 360862 was intended to improve identities sent in dialog-info
NOTIFY requests. Some users reported that hint became broken once this
was done. It's not clear exactly what part of the patch has caused
this regression, but broken hints are bad.
For now, this revision is being reverted so that the next releases of
Asterisk do not have bad behavior in them. The original reported issue
will have to be fixed differently in the next version of Asterisk.
(issue ASTERISK-16735)
2012-04-24 Asterisk Development Team <asteriskteam@digium.com>
* Asterisk 10.4.0-rc2 Released.

View File

@@ -1144,8 +1144,8 @@ static int play_sound_helper(struct conference_bridge *conference_bridge, const
struct ast_channel *underlying_channel;
/* Do not waste resources trying to play files that do not exist */
if (!ast_fileexists(filename, NULL, NULL)) {
ast_log(LOG_WARNING, "File %s does not exist in any format\n", filename);
if (!ast_strlen_zero(filename) && !ast_fileexists(filename, NULL, NULL)) {
ast_log(LOG_WARNING, "File %s does not exist in any format\n", !ast_strlen_zero(filename) ? filename : "<unknown>");
return 0;
}
@@ -1165,7 +1165,7 @@ static int play_sound_helper(struct conference_bridge *conference_bridge, const
/* The channel is all under our control, in goes the prompt */
if (!ast_strlen_zero(filename)) {
ast_stream_and_wait(conference_bridge->playback_chan, filename, "");
} else {
} else if (say_number >= 0) {
ast_say_number(conference_bridge->playback_chan, say_number, "", conference_bridge->playback_chan->language, NULL);
}
@@ -1188,7 +1188,7 @@ static int play_sound_helper(struct conference_bridge *conference_bridge, const
*/
static int play_sound_file(struct conference_bridge *conference_bridge, const char *filename)
{
return play_sound_helper(conference_bridge, filename, 0);
return play_sound_helper(conference_bridge, filename, -1);
}
/*!

View File

@@ -1,10 +1,10 @@
<!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-10.4.0-rc2</title></head>
<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Release Summary - asterisk-10.4.2</title></head>
<body>
<h1 align="center"><a name="top">Release Summary</a></h1>
<h3 align="center">asterisk-10.4.0-rc2</h3>
<h3 align="center">Date: 2012-04-24</h3>
<h3 align="center">asterisk-10.4.2</h3>
<h3 align="center">Date: 2012-05-30</h3>
<h3 align="center">&lt;asteriskteam@digium.com&gt;</h3>
<hr/>
<h2 align="center">Table of Contents</h2>
@@ -17,7 +17,7 @@
<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-10.4.0-rc1.</p>
<p>The data in this summary reflects changes that have been made since the previous release, asterisk-10.4.1.</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>
@@ -41,21 +41,20 @@
<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/10?view=revision&revision=363330">363330</a></td><td>bebuild</td><td>Create 10.4.0-rc2 tag</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/10?view=revision&revision=363332">363332</a></td><td>bebuild</td><td>Merge r363103-363104, r363107, r363156 for -rc2</td>
<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/10?view=revision&revision=367958">367958</a></td><td>bebuild</td><td>Create 10.4.2 tag</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/10?view=revision&revision=367964">367964</a></td><td>bebuild</td><td>Merge r367267,367562 for 10.4.2</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 | 10
asterisk-10.4.0-rc1-summary.html | 265 --------------------
asterisk-10.4.0-rc1-summary.txt | 494 ---------------------------------------
channels/chan_sip.c | 4
channels/chan_skinny.c | 12
main/manager.c | 34 ++
7 files changed, 55 insertions(+), 766 deletions(-)
.version | 2
ChangeLog | 40 +++++++++++++++++++
apps/app_confbridge.c | 8 +--
asterisk-10.4.1-summary.html | 62 -----------------------------
asterisk-10.4.1-summary.txt | 90 -------------------------------------------
channels/chan_sip.c | 13 +++---
6 files changed, 53 insertions(+), 162 deletions(-)
</pre><br/>
<hr/>
</body>

View File

@@ -1,8 +1,8 @@
Release Summary
asterisk-10.4.0-rc2
asterisk-10.4.2
Date: 2012-04-24
Date: 2012-05-30
<asteriskteam@digium.com>
@@ -30,7 +30,7 @@
release series.
The data in this summary reflects changes that have been made since the
previous release, asterisk-10.4.0-rc1.
previous release, asterisk-10.4.1.
----------------------------------------------------------------------
@@ -64,10 +64,10 @@
+------------------------------------------------------------------------+
| Revision | Author | Summary | Issues Referenced |
|----------+---------+-------------------------------+-------------------|
| 363330 | bebuild | Create 10.4.0-rc2 tag | |
| 367958 | bebuild | Create 10.4.2 tag | |
|----------+---------+-------------------------------+-------------------|
| 363332 | bebuild | Merge r363103-363104, | |
| | | r363107, r363156 for -rc2 | |
| 367964 | bebuild | Merge r367267,367562 for | |
| | | 10.4.2 | |
+------------------------------------------------------------------------+
----------------------------------------------------------------------
@@ -79,13 +79,12 @@
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 | 10
asterisk-10.4.0-rc1-summary.html | 265 --------------------
asterisk-10.4.0-rc1-summary.txt | 494 ---------------------------------------
channels/chan_sip.c | 4
channels/chan_skinny.c | 12
main/manager.c | 34 ++
7 files changed, 55 insertions(+), 766 deletions(-)
.version | 2
ChangeLog | 40 +++++++++++++++++++
apps/app_confbridge.c | 8 +--
asterisk-10.4.1-summary.html | 62 -----------------------------
asterisk-10.4.1-summary.txt | 90 -------------------------------------------
channels/chan_sip.c | 13 +++---
6 files changed, 53 insertions(+), 162 deletions(-)
----------------------------------------------------------------------

View File

@@ -1922,24 +1922,25 @@ static void send_signaling(struct chan_iax2_pvt *pvt)
* we have received a destination call number. */
static int queue_signalling(struct chan_iax2_pvt *pvt, struct ast_frame *f)
{
struct signaling_queue_entry *new;
struct signaling_queue_entry *qe;
if (f->frametype == AST_FRAME_IAX || !pvt->hold_signaling) {
return 1; /* do not queue this frame */
} else if (!(new = ast_calloc(1, sizeof(struct signaling_queue_entry)))) {
} else if (!(qe = ast_calloc(1, sizeof(struct signaling_queue_entry)))) {
return -1; /* out of memory */
}
memcpy(&new->f, f, sizeof(new->f)); /* copy ast_frame into our queue entry */
if (new->f.datalen) { /* if there is data in this frame copy it over as well */
if (!(new->f.data.ptr = ast_calloc(1, new->f.datalen))) {
free_signaling_queue_entry(new);
/* copy ast_frame into our queue entry */
qe->f = *f;
if (qe->f.datalen) {
/* if there is data in this frame copy it over as well */
if (!(qe->f.data.ptr = ast_malloc(qe->f.datalen))) {
free_signaling_queue_entry(qe);
return -1;
}
memcpy(new->f.data.ptr, f->data.ptr, sizeof(*new->f.data.ptr));
memcpy(qe->f.data.ptr, f->data.ptr, qe->f.datalen);
}
AST_LIST_INSERT_TAIL(&pvt->signaling_queue, new, next);
AST_LIST_INSERT_TAIL(&pvt->signaling_queue, qe, next);
return 0;
}
@@ -4244,6 +4245,15 @@ static int schedule_delivery(struct iax_frame *fr, int updatehistory, int fromtr
struct ast_channel *owner = NULL;
struct ast_channel *bridge = NULL;
/*
* Clear fr->af.data if there is no data in the buffer. Things
* like AST_CONTROL_HOLD without a suggested music class must
* have a NULL pointer.
*/
if (!fr->af.datalen) {
memset(&fr->af.data, 0, sizeof(fr->af.data));
}
/* Attempt to recover wrapped timestamps */
unwrap_timestamp(fr);

View File

@@ -12778,13 +12778,14 @@ static int __sip_subscribe_mwi_do(struct sip_subscription_mwi *mwi)
/* If we have no DNS manager let's do a lookup */
if (!mwi->dnsmgr) {
char transport[MAXHOSTNAMELEN];
struct sip_subscription_mwi *saved;
snprintf(transport, sizeof(transport), "_%s._%s", get_srv_service(mwi->transport), get_srv_protocol(mwi->transport));
mwi->us.ss.ss_family = get_address_family_filter(&bindaddr); /* Filter address family */
ASTOBJ_REF(mwi); /* Add a ref for storing the mwi on the dnsmgr for updates */
ast_dnsmgr_lookup_cb(mwi->hostname, &mwi->us, &mwi->dnsmgr, sip_cfg.srvlookup ? transport : NULL, on_dns_update_mwi, mwi);
saved = ASTOBJ_REF(mwi);
ast_dnsmgr_lookup_cb(mwi->hostname, &mwi->us, &mwi->dnsmgr, sip_cfg.srvlookup ? transport : NULL, on_dns_update_mwi, saved);
if (!mwi->dnsmgr) {
ASTOBJ_UNREF(mwi, sip_subscribe_mwi_destroy); /* dnsmgr disabled, remove reference */
ASTOBJ_UNREF(saved, sip_subscribe_mwi_destroy); /* dnsmgr disabled, remove reference */
}
}
@@ -12987,8 +12988,6 @@ static void state_notify_build_xml(int state, int full, const char *exten, const
if ((state & AST_EXTENSION_RINGING) && sip_cfg.notifyringing) {
const char *local_display = exten;
char *local_target = ast_strdupa(mto);
const char *remote_display = exten;
char *remote_target = ast_strdupa(mfrom);
/* There are some limitations to how this works. The primary one is that the
callee must be dialing the same extension that is being monitored. Simply dialing
@@ -12998,28 +12997,16 @@ static void state_notify_build_xml(int state, int full, const char *exten, const
if ((caller = ast_channel_callback(find_calling_channel, NULL, p, 0))) {
char *cid_num;
char *connected_num;
int need;
ast_channel_lock(caller);
cid_num = S_COR(caller->caller.id.number.valid,
caller->caller.id.number.str, "");
need = strlen(cid_num) + strlen(p->fromdomain) + sizeof("sip:@");
remote_target = alloca(need);
snprintf(remote_target, need, "sip:%s@%s", cid_num, p->fromdomain);
remote_display = ast_strdupa(S_COR(caller->caller.id.name.valid,
caller->caller.id.name.str, ""));
connected_num = S_COR(caller->connected.id.number.valid,
caller->connected.id.number.str, "");
need = strlen(connected_num) + strlen(p->fromdomain) + sizeof("sip:@");
local_target = alloca(need);
snprintf(local_target, need, "sip:%s@%s", connected_num, p->fromdomain);
local_display = ast_strdupa(S_COR(caller->connected.id.name.valid,
caller->connected.id.name.str, ""));
snprintf(local_target, need, "sip:%s@%s", cid_num, p->fromdomain);
local_display = ast_strdupa(S_COR(caller->caller.id.name.valid,
caller->caller.id.name.str, ""));
ast_channel_unlock(caller);
caller = ast_channel_unref(caller);
}
@@ -13041,10 +13028,10 @@ static void state_notify_build_xml(int state, int full, const char *exten, const
"<target uri=\"%s\"/>\n"
"</remote>\n"
"<local>\n"
"<identity display=\"%s\">%s</identity>\n"
"<identity>%s</identity>\n"
"<target uri=\"%s\"/>\n"
"</local>\n",
remote_display, remote_target, remote_target, local_display, local_target, local_target);
local_display, local_target, local_target, mto, mto);
} else {
ast_str_append(tmp, 0, "<dialog id=\"%s\" direction=\"recipient\">\n", exten);
}
@@ -30493,10 +30480,12 @@ static void sip_send_all_registers(void)
static void sip_send_all_mwi_subscriptions(void)
{
ASTOBJ_CONTAINER_TRAVERSE(&submwil, 1, do {
struct sip_subscription_mwi *saved;
ASTOBJ_WRLOCK(iterator);
AST_SCHED_DEL(sched, iterator->resub);
if ((iterator->resub = ast_sched_add(sched, 1, sip_subscribe_mwi_do, ASTOBJ_REF(iterator))) < 0) {
ASTOBJ_UNREF(iterator, sip_subscribe_mwi_destroy);
saved = ASTOBJ_REF(iterator);
if ((iterator->resub = ast_sched_add(sched, 1, sip_subscribe_mwi_do, saved)) < 0) {
ASTOBJ_UNREF(saved, sip_subscribe_mwi_destroy);
}
ASTOBJ_UNLOCK(iterator);
} while (0));

View File

@@ -3104,6 +3104,10 @@ static void update_connectedline(struct skinny_subchannel *sub, const void *data
struct skinny_line *l = sub->line;
struct skinny_device *d = l->device;
if (!d) {
return;
}
if (!c->caller.id.number.valid
|| ast_strlen_zero(c->caller.id.number.str)
|| !c->connected.id.number.valid
@@ -4224,6 +4228,11 @@ static void *skinny_ss(void *data)
int res = 0;
int loop_pause = 100;
if (!d) {
ast_log(LOG_WARNING, "Device for line %s is not registered.\n", l->name);
return NULL;
}
ast_verb(3, "Starting simple switch on '%s@%s'\n", l->name, d->name);
len = strlen(sub->exten);
@@ -4332,7 +4341,7 @@ static int skinny_call(struct ast_channel *ast, char *dest, int timeout)
struct ast_var_t *current;
int doautoanswer = 0;
if (!d->registered) {
if (!d || !d->registered) {
ast_log(LOG_ERROR, "Device not registered, cannot call %s\n", dest);
return -1;
}
@@ -4731,7 +4740,13 @@ static int skinny_indicate(struct ast_channel *ast, int ind, const void *data, s
struct skinny_subchannel *sub = ast->tech_pvt;
struct skinny_line *l = sub->line;
struct skinny_device *d = l->device;
struct skinnysession *s = d->session;
struct skinnysession *s;
if (!d) {
ast_log(LOG_WARNING, "Device for line %s is not registered.\n", l->name);
return -1;
}
s = d->session;
if (!s) {
ast_log(LOG_NOTICE, "Asked to indicate '%s' condition on channel %s, but session does not exist.\n", control2str(ind), ast->name);
@@ -5462,6 +5477,11 @@ static int handle_transfer_button(struct skinny_subchannel *sub)
l = sub->line;
d = l->device;
if (!d) {
ast_log(LOG_WARNING, "Device for line %s is not registered.\n", l->name);
return -1;
}
if (!sub->related) {
/* Another sub has not been created so this must be first XFER press */
if (!(sub->substate == SUBSTATE_HOLD)) {
@@ -5506,6 +5526,11 @@ static int handle_callforward_button(struct skinny_subchannel *sub, int cfwdtype
struct skinny_device *d = l->device;
struct ast_channel *c = sub->owner;
if (!d) {
ast_log(LOG_WARNING, "Device for line %s is not registered.\n", l->name);
return 0;
}
if (d->hookstate == SKINNY_ONHOOK) {
d->hookstate = SKINNY_OFFHOOK;
transmit_speaker_mode(d, SKINNY_SPEAKERON);