2867fc717e
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 |
||
---|---|---|
build_tools | ||
doc | ||
asn1_primitive.c | ||
asn1.h | ||
compat.h | ||
compiler.h | ||
copy_string.c | ||
libpri.h | ||
LICENSE | ||
Makefile | ||
pri_aoc.c | ||
pri_cc.c | ||
pri_facility.c | ||
pri_facility.h | ||
pri_internal.h | ||
pri_q921.h | ||
pri_q931.h | ||
pri.c | ||
pridump.c | ||
prisched.c | ||
pritest.c | ||
q921.c | ||
q931.c | ||
README | ||
rose_address.c | ||
rose_etsi_aoc.c | ||
rose_etsi_cc.c | ||
rose_etsi_diversion.c | ||
rose_etsi_ect.c | ||
rose_etsi_mwi.c | ||
rose_internal.h | ||
rose_other.c | ||
rose_q931.c | ||
rose_qsig_aoc.c | ||
rose_qsig_cc.c | ||
rose_qsig_ct.c | ||
rose_qsig_diversion.c | ||
rose_qsig_mwi.c | ||
rose_qsig_name.c | ||
rose.c | ||
rose.h | ||
rosetest.c | ||
testprilib.c | ||
TODO |
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.