[Serdev] CVS:commitlog: sip_router/modules/tm t_reply.c timer.c
Jan Janak
jan at iptel.org
Wed Jun 1 13:44:01 UTC 2005
janakj 2005/06/01 15:44:01 CEST
SER CVS Repository
Modified files: (Branch: rel_0_9_0)
modules/tm t_reply.c timer.c
Log:
- Fixed the following race condition:
Process_A sends a 487 over looback to the same ser instance
(this process did not set up the retransmission timer yet because
of the kernel context switch, see below)
-- kernel switches context now to process_B
Process_B wakes up to process the 487 and it sends an ACK
immediately (over loopback again)
-- kernel switches context again now to process_C
Process_C wakes up to process the ACK, it tries to find the original
transaction (the one which sent 487) and tries to remove the
transaction from the retransmission timer list (which has not been
set yet in Process_A)
The process finishes now.
-- kernel switches context back to Process_A
Now the process prints info that 487 was relayed and sets up
the retransmission timer
The process finishes
<after approximately 500ms>
Process_D (timer) wakes up and generates a 487 retransmission although
an ACK has already been received and processed
Revision Changes Path
1.98.2.3 +104 -86 sip_router/modules/tm/t_reply.c
http://cvs.berlios.de/cgi-bin/viewcvs.cgi/ser/sip_router/modules/tm/t_reply.c.diff?r1=1.98.2.2&r2=1.98.2.3
1.58.2.1 +41 -16 sip_router/modules/tm/timer.c
http://cvs.berlios.de/cgi-bin/viewcvs.cgi/ser/sip_router/modules/tm/timer.c.diff?r1=1.58&r2=1.58.2.1
More information about the Serdev
mailing list