[OpenSIPS-Devel] SF.net SVN: opensips:[5049] trunk/modules/tm/t_hooks.c
Bogdan-Andrei Iancu
bogdan at voice-system.ro
Mon Dec 8 19:40:49 CET 2008
Revision: 5049
http://opensips.svn.sourceforge.net/opensips/?rev=5049&view=rev
Author: bogdan_iancu
Date: 2008-12-08 18:40:48 +0000 (Mon, 08 Dec 2008)
Log Message:
-----------
- first attempt in fixing ugly bug in concurent access to the request sip_msg structured cloned in SHM memory (in transaction) - callbacks are not sync'ed, so fo the same transaction, more than one callback can be run at a given moment -> write access to the shared request is not safe at all
Current TM callback status:
### acesing shm req with parsing of req
#define TMCB_RESPONSE_OUT (1<<7) req = T_uas (parsed by acc)
#define TMCB_ON_FAILURE_RO (1<<5) req = T_uas (parsed)
#define TMCB_ON_FAILURE (1<<6) req = T_uas (parsed)
#### accessing shm req, but not parsing it
#define TMCB_RESPONSE_IN (1<<1) req = T_uas
#define TMCB_RESPONSE_FWDED (1<<4) req = T_uas
#### no access to shm msg
#define TMCB_REQUEST_BUILT (1<<10) req = p_msg
#define TMCB_REQUEST_FWDED (1<<3) req = p_msg
#define TMCB_E2EACK_IN (1<<2) req = ACK
#define TMCB_REQUEST_IN (1<<0) req = p_msg
#define TMCB_TRANS_DELETED (1<<11) req = null
#define TMCB_LOCAL_COMPLETED (1<<8) req = null
#define TMCB_LOCAL_RESPONSE_OUT (1<<9) req = null
-> callbacks with no parsing access must not try to free eventual adds-on (because of parsing), because it may "see" parsed structs added by a concurent callback.
-> also a race may occure between TMCB_RESPONSE_OUT and TMCB_ON_FAILURE callbacks (rw access to the same structure)
This is not a final fix but an intermediary one (at least reduces the chances of a crash with 99%).
Future final fix will be:
1) do not allow extra parsing of cloned requests
2) allow parsing of cloned requests, but make local copies before parsing
Modified Paths:
--------------
trunk/modules/tm/t_hooks.c
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Devel
mailing list