Go to file
Richard Mudgett 2867fc717e Crash if NFAS swaps D channels on a call with an active timer.
If a Q.931 call record related timer is started on one NFAS D channel
expires after NFAS swaps to another D channel, then libpri could crash.

For example:
1) Hangup a call.
1a) Send a DISCONNECT.
1b) Start the T305 retransmit timer on the current D channel.
2) The RELEASE comes in on another D channel.
2a) The found call record switches its assignment to the new D channel.
2b) Attempt to stop T305.  Unfortunately, the timer was started on another
    D channel so the attempt does not find the timer to stop.
3) The hangup sequence continues normally and the call record is freed
   since there is only one call record pool.
4) T305 expires on the original D channel and crashes the system when it
   uses the stale call record pointer it has saved.

Made each D channel timer pool have a unique range of valid timer
identifiers.  If a given timer identifier is not in the range for the
current NFAS D channel, then search the D channel group for the original D
channel.

JIRA LIBPRI-58
JIRA SWP-2721


git-svn-id: https://origsvn.digium.com/svn/libpri/branches/1.4@2202 2fbb986a-6c06-0410-b554-c9c1f0a7f128
2011-02-16 19:23:02 +00:00
build_tools Use the correct branch integrated property when generating the version string. 2009-03-13 01:05:54 +00:00
doc Fixes CC agents not automatically clearing if T309 clears the original call. 2010-10-21 18:00:03 +00:00
asn1_primitive.c Made ASN.1 memory dump also display printable characters. 2009-06-03 22:51:42 +00:00
asn1.h ROSE ASN.1 facility encode and decode rewrite of existing messages. 2009-04-21 22:08:45 +00:00
compat.h remove extraneous svn:executable properties 2005-11-29 18:39:18 +00:00
compiler.h Merged revisions 610 via svnmerge from 2008-08-05 22:18:12 +00:00
copy_string.c Merged revisions 610 via svnmerge from 2008-08-05 22:18:12 +00:00
libpri.h Add display ie text handling options. 2011-02-04 19:59:45 +00:00
LICENSE remove extraneous svn:executable properties 2005-11-29 18:39:18 +00:00
Makefile Enable LIBPRI_COUNTERS code by default. 2011-02-01 00:37:49 +00:00
pri_aoc.c Extract the layer 2 link structure out of struct pri. 2010-10-21 17:30:41 +00:00
pri_cc.c Fixes CC agents not automatically clearing if T309 clears the original call. 2010-10-21 18:00:03 +00:00
pri_facility.c Add display ie text handling options. 2011-02-04 19:59:45 +00:00
pri_facility.h Add call transfer exchange of subaddresses support and fix PTMP call transfer signaling. 2010-12-21 16:49:30 +00:00
pri_internal.h Crash if NFAS swaps D channels on a call with an active timer. 2011-02-16 19:23:02 +00:00
pri_q921.h Fix I-frame retransmission quirks. 2011-02-14 23:33:56 +00:00
pri_q931.h Extract the layer 2 link structure out of struct pri. 2010-10-21 17:30:41 +00:00
pri.c Swap of master/slave in pri_enslave() incorrect. 2011-02-08 16:44:37 +00:00
pridump.c PTMP NT mode call reference value ambiguity. 2010-04-19 22:40:41 +00:00
prisched.c Crash if NFAS swaps D channels on a call with an active timer. 2011-02-16 19:23:02 +00:00
pritest.c pritest hadn't been ported to DAHDI 2010-07-16 22:55:15 +00:00
q921.c Fix I-frame retransmission quirks. 2011-02-14 23:33:56 +00:00
q931.c Add display ie text handling options. 2011-02-04 19:59:45 +00:00
README Merged revisions 311 via svnmerge from 2006-02-15 18:01:03 +00:00
rose_address.c ROSE ASN.1 facility encode and decode rewrite of existing messages. 2009-04-21 22:08:45 +00:00
rose_etsi_aoc.c ETSI Advice Of Charge (AOC) event reporting. 2010-05-28 18:03:38 +00:00
rose_etsi_cc.c Add Call Completion Suppplementary Service 2010-05-26 16:01:10 +00:00
rose_etsi_diversion.c Add COLP support to libpri for ETSI PTP, ETSI PTMP, and Q.SIG. 2009-08-18 23:53:32 +00:00
rose_etsi_ect.c Add COLP support to libpri for ETSI PTP, ETSI PTMP, and Q.SIG. 2009-08-18 23:53:32 +00:00
rose_etsi_mwi.c ETSI Message Waiting Indication (MWI) support. 2010-05-28 21:50:14 +00:00
rose_internal.h ETSI Message Waiting Indication (MWI) support. 2010-05-28 21:50:14 +00:00
rose_other.c ROSE ASN.1 facility encode and decode rewrite of existing messages. 2009-04-21 22:08:45 +00:00
rose_q931.c ROSE ASN.1 facility encode and decode rewrite of existing messages. 2009-04-21 22:08:45 +00:00
rose_qsig_aoc.c Added Q.SIG Advice-Of-Charge encode/decode routines. 2009-04-21 23:32:13 +00:00
rose_qsig_cc.c Add Call Completion Suppplementary Service 2010-05-26 16:01:10 +00:00
rose_qsig_ct.c ROSE ASN.1 facility encode and decode rewrite of existing messages. 2009-04-21 22:08:45 +00:00
rose_qsig_diversion.c Corrected standard document reference. 2009-08-07 15:53:20 +00:00
rose_qsig_mwi.c ETSI Message Waiting Indication (MWI) support. 2010-05-28 21:50:14 +00:00
rose_qsig_name.c Calling name not successfully processed on inbound QSIG PRI calls from Mitel PBX 2010-07-16 16:37:07 +00:00
rose.c Add support to receive ECMA-164 2nd edition OID name ROSE messages. 2010-08-27 15:54:17 +00:00
rose.h ETSI Message Waiting Indication (MWI) support. 2010-05-28 21:50:14 +00:00
rosetest.c Add support to receive ECMA-164 2nd edition OID name ROSE messages. 2010-08-27 15:54:17 +00:00
testprilib.c Merged revisions 610 via svnmerge from 2008-08-05 22:18:12 +00:00
TODO More TODO updates 2006-02-16 19:21:30 +00:00

libpri: An implementation of Primary Rate ISDN

Written by Mark Spencer <markster@digium.com>

What is libpri?
===============

libpri is a C implementation of the Primary Rate ISDN specification.  It was
based on the Bellcore specification SR-NWT-002343 for National ISDN.  As of
May 12, 2001, it has been tested work with NI-2, Nortel DMS-100, and 
Lucent 5E Custom protocols on switches from Nortel and Lucent.

What is the license for libpri?
===============================
libpri is distributed under the terms of the GNU General Public License, 
which permit its use and linking with other GPL'd software only.  
The GNU GPL is included in the file LICENSE in this directory.

As a special exception, libpri may also be linked to the OpenH323
library, so long as the entirity of the derivative work (as defined
within the GPL) is licensed either under the MPL of the OpenH323 license
or the GPL of libpri.

If you wish to use libpri in an application for which the GPL is not 
appropriate (e.g. a proprietary embedded system), licenses for libpri 
under more flexible terms can be readily obtained through Digium, Inc. 
at reasonable cost.


How do I report bugs or contribute?
===================================
For now, contact the author directly.  In the future if there is 
sufficient interest, we will setup a mailing list.

Does anything use this library so far?
======================================
Yes, the Asterisk Open Source PBX does.  http://www.asterisk.org

Also, the Zapata library has hooks for it.  http://www.zapatatelephony.org

Special thanks
==============
Special thanks to Jim Dixon <jim@lambdatel.com> for his help in 
testing and fixing the implementation.