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
2011-02-04 19:59:45 +00:00
2011-02-14 23:33:56 +00:00
2010-07-16 22:55:15 +00:00
2011-02-14 23:33:56 +00:00
2011-02-04 19:59:45 +00:00
2006-02-15 18:01:03 +00:00
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.

Description
No description provided
Readme 1.8 MiB
Languages
C 99.6%
Makefile 0.3%
Shell 0.1%