Compare commits

...

7 Commits

Author SHA1 Message Date
Admin Commit
533b3bde8a Importing release summary for 1.4.14 release.
git-svn-id: https://origsvn.digium.com/svn/libpri/tags/1.4.14@2314 2fbb986a-6c06-0410-b554-c9c1f0a7f128
2012-12-20 16:46:58 +00:00
Admin Commit
47b2ff8860 Importing files for 1.4.14 release.
git-svn-id: https://origsvn.digium.com/svn/libpri/tags/1.4.14@2313 2fbb986a-6c06-0410-b554-c9c1f0a7f128
2012-12-20 16:46:52 +00:00
Admin Commit
782a08d0e1 Creating tag for the release of libpri-1.4.14
git-svn-id: https://origsvn.digium.com/svn/libpri/tags/1.4.14@2312 2fbb986a-6c06-0410-b554-c9c1f0a7f128
2012-12-20 16:46:03 +00:00
Richard Mudgett
28553ff8cb Handle optional Recommendation octet 3a in Cause IE.
If the MSB of octet 3 is 0 then the optional Recommendation octet 3a is
present.

References: ITU-T Q.850 Section 2.1 and ETSI ETS 300 102-1 Section 4.5.12.

(closes issue PRI-151)
Reported by: Tzafrir Cohen
Patches:
      0001-handle-optional-Recommendation-in-Cause-IE.patch (license #5035) patch uploaded by Tzafrir Cohen
      Modified


git-svn-id: https://origsvn.digium.com/svn/libpri/branches/1.4@2310 2fbb986a-6c06-0410-b554-c9c1f0a7f128
2012-12-10 18:28:55 +00:00
Richard Mudgett
1a0927ca23 Q.SIG: Allow PROGRESS when in the Active state.
ECMA-143 Section 10.1.7.2 indicates that PROGRESS is allowed when in the
Active state.

* Made Q.SIG ignore the PROGRESS message when in the Active call state.

(closes issue PRI-147)
Reported by: Nick Merrett


git-svn-id: https://origsvn.digium.com/svn/libpri/branches/1.4@2308 2fbb986a-6c06-0410-b554-c9c1f0a7f128
2012-11-13 19:59:50 +00:00
Richard Mudgett
de78c8d37f Fix compiler error with ALERTING_NO_PROGRESS define.
git-svn-id: https://origsvn.digium.com/svn/libpri/branches/1.4@2307 2fbb986a-6c06-0410-b554-c9c1f0a7f128
2012-11-13 19:42:17 +00:00
Richard Mudgett
cdb844c16b Fix compiler warning in pritest.c.
* Made do_channel() exit on a failed write().

(closes issue PRI-145)
Reported by: Tzafrir Cohen
Patches:
      fix_unused_write.patch (license #5035) patch uploaded by Tzafrir Cohen
      Modified


git-svn-id: https://origsvn.digium.com/svn/libpri/branches/1.4@2305 2fbb986a-6c06-0410-b554-c9c1f0a7f128
2012-10-29 21:19:52 +00:00
6 changed files with 2247 additions and 13 deletions

1
.version Normal file
View File

@@ -0,0 +1 @@
1.4.14

1993
ChangeLog Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,74 @@
<!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 - libpri-1.4.14</title></head>
<body>
<h1 align="center"><a name="top">Release Summary</a></h1>
<h3 align="center">libpri-1.4.14</h3>
<h3 align="center">Date: 2012-12-20</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, libpri-1.4.13.</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 rmudgett<br/>
2 Tzafrir Cohen<br/>
</td>
<td>
</td>
<td>
2 tzafrir<br/>
1 nmerrett<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: General</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/PRI-145">PRI-145</a>: Unchecked write in pritest<br/>
Revision: <a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=2305">2305</a><br/>
Reporter: tzafrir<br/>
Coders: Tzafrir Cohen<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/PRI-147">PRI-147</a>: Normal Clearing in Progress Message is ignored<br/>
Revision: <a href="http://svn.digium.com/view/libpri/branches/1.4?view=revision&revision=2308">2308</a><br/>
Reporter: nmerrett<br/>
Coders: rmudgett<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/libpri/branches/1.4?view=revision&revision=2307">2307</a></td><td>rmudgett</td><td>Fix compiler error with ALERTING_NO_PROGRESS define.</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>
pritest.c | 5 +++
q931.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++----------
2 files changed, 71 insertions(+), 13 deletions(-)
</pre><br/>
<hr/>
</body>
</html>

108
libpri-1.4.14-summary.txt Normal file
View File

@@ -0,0 +1,108 @@
Release Summary
libpri-1.4.14
Date: 2012-12-20
<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, libpri-1.4.13.
----------------------------------------------------------------------
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 rmudgett 2 tzafrir
2 Tzafrir Cohen 1 nmerrett
----------------------------------------------------------------------
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: General
PRI-145: Unchecked write in pritest
Revision: 2305
Reporter: tzafrir
Coders: Tzafrir Cohen
PRI-147: Normal Clearing in Progress Message is ignored
Revision: 2308
Reporter: nmerrett
Coders: rmudgett
----------------------------------------------------------------------
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 |
|----------+----------+-------------------------------------+------------|
| 2307 | rmudgett | Fix compiler error with | |
| | | ALERTING_NO_PROGRESS define. | |
+------------------------------------------------------------------------+
----------------------------------------------------------------------
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.
pritest.c | 5 +++
q931.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++----------
2 files changed, 71 insertions(+), 13 deletions(-)
----------------------------------------------------------------------

View File

@@ -68,7 +68,10 @@ static void do_channel(int fd)
int i=0;
while ((res = read(fd, buf, READ_SIZE)) > 0 && (i++ < 1000)) {
write(fd, buf, res);
if (write(fd, buf, res) == -1) {
fprintf(stderr, "--!! Failed write: %d\n", errno);
break;
}
}
}

79
q931.c
View File

@@ -3475,38 +3475,73 @@ static char *pri_causeclass2str(int cause)
static void dump_cause(int full_ie, struct pri *ctrl, q931_ie *ie, int len, char prefix)
{
int x;
int cause_ind = 1;
int data_ind = 2;
pri_message(ctrl,
"%c %s (len=%2d) [ Ext: %d Coding: %s (%d) Spare: %d Location: %s (%d)\n",
prefix, ie2str(full_ie), len, ie->data[0] >> 7,
coding2str((ie->data[0] & 0x60) >> 5), (ie->data[0] & 0x60) >> 5,
(ie->data[0] & 0x10) >> 4, loc2str(ie->data[0] & 0xf), ie->data[0] & 0xf);
if ((ie->data[0] & 0x80) == 0) {
const char *recommendation;
switch (ie->data[1] & 0x7f) {
case 0x00:
recommendation = "Q.931";
break;
case 0x03:
recommendation = "X.21";
break;
case 0x04:
recommendation = "X.25";
break;
case 0x05:
recommendation = "Q.1031/Q.1051";
break;
default:
recommendation = "Reserved";
break;
}
pri_message(ctrl, "%c Ext: %d Recommendation: %s (%d)\n",
prefix, (ie->data[1] >> 7), recommendation, ie->data[1] & 0x7f);
cause_ind = 2;
data_ind = 3;
}
pri_message(ctrl, "%c Ext: %d Cause: %s (%d), class = %s (%d) ]\n",
prefix, (ie->data[1] >> 7), pri_cause2str(ie->data[1] & 0x7f), ie->data[1] & 0x7f,
pri_causeclass2str((ie->data[1] & 0x7f) >> 4), (ie->data[1] & 0x7f) >> 4);
if (ie->len < 3)
prefix, (ie->data[cause_ind] >> 7), pri_cause2str(ie->data[cause_ind] & 0x7f), ie->data[cause_ind] & 0x7f,
pri_causeclass2str((ie->data[cause_ind] & 0x7f) >> 4), (ie->data[cause_ind] & 0x7f) >> 4);
if (ie->len <= data_ind) {
return;
}
/* Dump cause data in readable form */
switch(ie->data[1] & 0x7f) {
switch(ie->data[cause_ind] & 0x7f) {
case PRI_CAUSE_IE_NONEXIST:
for (x=2;x<ie->len;x++)
for (x = data_ind; x < ie->len; x++) {
pri_message(ctrl, "%c Cause data %d: %02x (%d, %s IE)\n", prefix, x-1, ie->data[x], ie->data[x], ie2str(ie->data[x]));
}
break;
case PRI_CAUSE_WRONG_CALL_STATE:
for (x=2;x<ie->len;x++)
for (x = data_ind; x < ie->len; x++) {
pri_message(ctrl, "%c Cause data %d: %02x (%d, %s message)\n", prefix, x-1, ie->data[x], ie->data[x], msg2str(ie->data[x]));
}
break;
case PRI_CAUSE_RECOVERY_ON_TIMER_EXPIRE:
pri_message(ctrl, "%c Cause data:", prefix);
for (x=2;x<ie->len;x++)
for (x = data_ind; x < ie->len; x++) {
pri_message(ctrl, " %02x", ie->data[x]);
}
pri_message(ctrl, " (Timer T");
for (x=2;x<ie->len;x++)
for (x = data_ind; x < ie->len; x++) {
pri_message(ctrl, "%c", ((ie->data[x] >= ' ') && (ie->data[x] < 0x7f)) ? ie->data[x] : '.');
}
pri_message(ctrl, ")\n");
break;
default:
for (x=2;x<ie->len;x++)
for (x = data_ind; x < ie->len; x++) {
pri_message(ctrl, "%c Cause data %d: %02x (%d)\n", prefix, x-1, ie->data[x], ie->data[x]);
}
break;
}
}
@@ -3515,7 +3550,11 @@ static int receive_cause(int full_ie, struct pri *ctrl, q931_call *call, int msg
{
call->causeloc = ie->data[0] & 0xf;
call->causecode = (ie->data[0] & 0x60) >> 5;
call->cause = (ie->data[1] & 0x7f);
if (ie->data[0] & 0x80) {
call->cause = (ie->data[1] & 0x7f);
} else {
call->cause = (ie->data[2] & 0x7f);
}
return 0;
}
@@ -5574,8 +5613,6 @@ int q931_notify(struct pri *ctrl, q931_call *c, int channel, int info)
#ifdef ALERTING_NO_PROGRESS
static int call_progress_ies[] = { -1 };
#else
static int call_progress_with_cause_ies[] = { Q931_CAUSE, Q931_PROGRESS_INDICATOR, -1 };
static int call_progress_ies[] = { Q931_PROGRESS_INDICATOR, -1 };
#endif
@@ -5605,6 +5642,12 @@ int q931_call_progress(struct pri *ctrl, q931_call *c, int channel, int info)
return send_message(ctrl, c, Q931_PROGRESS, call_progress_ies);
}
#ifdef ALERTING_NO_PROGRESS
static int call_progress_with_cause_ies[] = { Q931_CAUSE, -1 };
#else
static int call_progress_with_cause_ies[] = { Q931_CAUSE, Q931_PROGRESS_INDICATOR, -1 };
#endif
int q931_call_progress_with_cause(struct pri *ctrl, q931_call *c, int channel, int info, int cause)
{
if (c->ourcallstate == Q931_CALL_STATE_CALL_INDEPENDENT_SERVICE) {
@@ -8767,6 +8810,18 @@ static int post_handle_q931_message(struct pri *ctrl, struct q931_mh *mh, struct
(c->ourcallstate != Q931_CALL_STATE_OVERLAP_SENDING) &&
(c->ourcallstate != Q931_CALL_STATE_CALL_DELIVERED) &&
(c->ourcallstate != Q931_CALL_STATE_OUTGOING_CALL_PROCEEDING)) {
if (mh->msg == Q931_PROGRESS
&& c->ourcallstate == Q931_CALL_STATE_ACTIVE
&& ctrl->switchtype == PRI_SWITCH_QSIG) {
/*
* Q.SIG is odd to allow PROGRESS when in the Active state since
* the media path is already open. Ignore it since it doesn't
* convey anything very useful. Maybe they will stop doing it.
*
* See ECMA-143 Section 10.1.7.2.
*/
break;
}
q931_status(ctrl,c,PRI_CAUSE_WRONG_MESSAGE);
break;
}