diff options
Diffstat (limited to 'tinySIP/src/tsip_timers.c')
-rw-r--r-- | tinySIP/src/tsip_timers.c | 250 |
1 files changed, 250 insertions, 0 deletions
diff --git a/tinySIP/src/tsip_timers.c b/tinySIP/src/tsip_timers.c new file mode 100644 index 0000000..942b895 --- /dev/null +++ b/tinySIP/src/tsip_timers.c @@ -0,0 +1,250 @@ +/* +* Copyright (C) 2010-2011 Mamadou Diop. +* +* Contact: Mamadou Diop <diopmamadou(at)doubango[dot]org> +* +* This file is part of Open Source Doubango Framework. +* +* DOUBANGO is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* DOUBANGO is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with DOUBANGO. +* +*/ + +/**@file tsip_timers.c + * @brief SIP timers. + * + * @author Mamadou Diop <diopmamadou(at)doubango[dot]org> + * + + */ +#include "tinysip/tsip_timers.h" + +/* + Timer Value Section Meaning + ---------------------------------------------------------------------- + T1 500ms default Section 17.1.1.1 RTT Estimate + T2 4s Section 17.1.2.2 The maximum retransmit + interval for non-INVITE + requests and INVITE + responses + T4 5s Section 17.1.2.2 Maximum duration a + message will + remain in the network + Timer A initially T1 Section 17.1.1.2 INVITE request retransmit + interval, for UDP only + Timer B 64*T1 Section 17.1.1.2 INVITE transaction + timeout timer + Timer C > 3min Section 16.6 proxy INVITE transaction + bullet 11 timeout + Timer D > 32s for UDP Section 17.1.1.2 Wait time for response + 0s for TCP/SCTP retransmits + Timer E initially T1 Section 17.1.2.2 non-INVITE request + retransmit interval, + UDP only + Timer F 64*T1 Section 17.1.2.2 non-INVITE transaction + timeout timer + Timer G initially T1 Section 17.2.1 INVITE response + retransmit interval + Timer H 64*T1 Section 17.2.1 Wait time for + ACK receipt + Timer I T4 for UDP Section 17.2.1 Wait time for + 0s for TCP/SCTP ACK retransmits + Timer J 64*T1 for UDP Section 17.2.2 Wait time for + 0s for TCP/SCTP non-INVITE request + retransmits + Timer K T4 for UDP Section 17.1.2.2 Wait time for + 0s for TCP/SCTP response retransmits + + Timer L 64*T1 Section 17.2.1 Wait time for + accepted INVITE + request retransmits + + Timer M 64*T1 Section 17.1.1 Wait time for + retransmission of + 2xx to INVITE or + additional 2xx from + other branches of + a forked INVITE +*/ + +#define TIMER_T1 500 +#define TIMER_T4 5000 + +//const char *timerT1 = "timerT1"; +//const char *timerT2 = "timerT2"; +//const char *timerT4 = "timerT4"; +//const char *timerA = "timerA"; +//const char *timerB = "timerB"; +//const char *timerC = "timerC"; +//const char *timerD = "timerD"; +//const char *timerE = "timerE"; +//const char *timerF = "timerF"; +//const char *timerG = "timerG"; +//const char *timerH = "timerH"; +//const char *timerI = "timerI"; +//const char *timerJ = "timerJ"; +//const char *timerK = "timerK"; +//const char *timerL = "timerL"; +//const char *timerM = "timerM"; + + +static uint32_t T1 = TIMER_T1; +static uint32_t T2 = 4000; +static uint32_t T4 = TIMER_T4; +static uint32_t A = TIMER_T1; +static uint32_t B = 64*TIMER_T1; +static uint32_t C = 5*60000; /* >3min */ +static uint32_t D = 50000; /*> 32s*/ +static uint32_t E = TIMER_T1; +static uint32_t F = 64*TIMER_T1; +static uint32_t G = TIMER_T1; +static uint32_t H = 64*TIMER_T1; +static uint32_t I = TIMER_T4; +static uint32_t J = 64*TIMER_T1; +static uint32_t K = TIMER_T4; +static uint32_t L = 64*TIMER_T1; // draft-sparks-sip-invfix +static uint32_t M = 64*TIMER_T1; // draft-sparks-sip-invfix + + + + +void tsip_timers_setT1(uint32_t t1){ + T1 = t1; + A = E = G = T1; + B = F = H = J = (T1*64); +} + +void tsip_timers_setT2(uint32_t t2){ + T2 = t2; +} + +void tsip_timers_setT4(uint32_t t4){ + T4 = t4; + I = K = T4; +} + +void tsip_timers_setA(uint32_t a){ + A = a; +} + +void tsip_timers_setB(uint32_t b){ + B = b; +} + +void tsip_timers_setC(uint32_t c){ + C = c; +} + +void tsip_timers_setD(uint32_t d){ + D = d; +} + +void tsip_timers_setE(uint32_t e){ + E = e; +} + +void tsip_timers_setF(uint32_t f){ + F = f; +} + +void tsip_timers_setG(uint32_t g){ + G = g; +} + +void tsip_timers_setH(uint32_t h){ + H = h; +} + +void tsip_timers_setI(uint32_t i){ + I = i; +} + +void tsip_timers_setJ(uint32_t j){ + J = j; +} + +void tsip_timers_setK(uint32_t k){ + K = k; +} + +void tsip_timers_setL(uint32_t l){ + L = l; +} + +void tsip_timers_setM(uint32_t m){ + M = m; +} + +uint32_t tsip_timers_getT1(){ + return T1; +} + +uint32_t tsip_timers_getT2(){ + return T2; +} + +uint32_t tsip_timers_getT4(){ + return T4; +} + +uint32_t tsip_timers_getA(){ + return A; +} + +uint32_t tsip_timers_getB(){ + return B; +} + +uint32_t tsip_timers_getC(){ + return C; +} + +uint32_t tsip_timers_getD(){ + return D; +} + +uint32_t tsip_timers_getE(){ + return E; +} + +uint32_t tsip_timers_getF(){ + return F; +} + +uint32_t tsip_timers_getG(){ + return G; +} + +uint32_t tsip_timers_getH(){ + return H; +} + +uint32_t tsip_timers_getI(){ + return I; +} + +uint32_t tsip_timers_getJ(){ + return J; +} + +uint32_t tsip_timers_getK(){ + return K; +} + +uint32_t tsip_timers_getL(){ + return L; +} + +uint32_t tsip_timers_getM(){ + return M; +} |