Commit Graph

350 Commits (f901b22dc5e2b9d4e09507d0f6f08d585a464ec4)
 

Author SHA1 Message Date
Richard Fuchs ad308c149e here we go with the subtle race conditions
13 years ago
Richard Fuchs 0050f57de6 dont abort polling on EINTR
13 years ago
Richard Fuchs de7ef884fa and for the interesting part: multiple poller threads
13 years ago
Richard Fuchs c44673113d move poller timers and polling into a separate thread
13 years ago
Richard Fuchs 0eb3694422 making main() pretty by moving stuff out of the way
13 years ago
Richard Fuchs e5aa11aa6b global xmlrpc init must be done prior to any threading
13 years ago
Richard Fuchs 22043b686f alarms arent usable in a threaded environment, so use curl internal timeout instead
13 years ago
Richard Fuchs 4304bf48c2 must extract needed tags for xmlrpc call teardown prior to destroying the calls
13 years ago
Richard Fuchs 358a194dcc moving call teardown due to timeout to a separate thread
13 years ago
Richard Fuchs c8c2928cef it makes no sense to return a value from an effectively detached thread
13 years ago
Richard Fuchs c5aa1e33f4 detached threads considered harmful, so simulate them by keeping a threads-to-join list
13 years ago
Richard Fuchs 61ffa69282 use sigtimedwait for proper sighandler thread shutdown
13 years ago
Richard Fuchs 5cecf39605 lets get some threads going then, starting with a signal handler
13 years ago
Richard Fuchs bfcfc7b471 keeping the lock hold time to a minimum in lengthy calls_status operation
13 years ago
Richard Fuchs 95d9de7bc4 make the stats collection thread-safe
13 years ago
Richard Fuchs c19b99903c lets try with a lot of large, nested, naive locks
13 years ago
Richard Fuchs 28ac7b996c getting rid of call->log_info and introducing call->lock
13 years ago
Richard Fuchs 9fecc4d153 make the callmaster struct private - also requires update to redis module
13 years ago
Richard Fuchs e02b5398ce granular lock for "ports used" bit field
13 years ago
Richard Fuchs dd48d554c9 TOS for ipv6 needs an int to work
13 years ago
Richard Fuchs 1b20dcaa44 gonna need more than one lock in callmaster, so rename the one we have
13 years ago
Richard Fuchs 8d4703e2c7 need to handle the no-reply case to avoid deadlocks with bad cookies
13 years ago
Richard Fuchs 0dac780f86 getting rid of more global variables
13 years ago
Richard Fuchs c8021adadf EINTR requires special handling
13 years ago
Richard Fuchs d07194897b living on the edge with epoll edge-triggered behavior
13 years ago
Richard Fuchs 8edc107f2d using thread-local-storage for eliminating constant calls to time()
13 years ago
Richard Fuchs 107113eefc it helps to actually initialize the condition var
13 years ago
Richard Fuchs 24a6815e87 preliminary attempt to make the udp controller thread-safe
13 years ago
Richard Fuchs 161b2eec6a private structs make for safer threading
13 years ago
Richard Fuchs c24514404e missing a streambuf lock here
13 years ago
Richard Fuchs 984899d913 and the tcp controller becomes thread-safe
13 years ago
Richard Fuchs 86a4cc8876 add appropriate threading compile flags
13 years ago
Richard Fuchs 0a18880d36 make use of "make debug" target
13 years ago
Richard Fuchs 2905c333f7 making timers thread-safe
13 years ago
Richard Fuchs 229cb3c3ce use obj_* to catch double-free errors
13 years ago
Richard Fuchs aa261d2a66 add mutex_trylock primitives
13 years ago
Richard Fuchs e01692c297 add basic locking to callmaster struct
13 years ago
Richard Fuchs f6760ecc84 disable object debugging, seems to work fine
13 years ago
Richard Fuchs 0857b32eda add rwlock type and primitives
13 years ago
Richard Fuchs 8a6f735ed9 object size isnt really a useful piece of information
13 years ago
Richard Fuchs 856c0b9cce make the obj_ primitives more liberal to make for easier calling
13 years ago
Richard Fuchs 540d847d08 catch the inevitable disaster early and define our own mutex types. sigh. and there i was, thinking that using the glib types would make things easier.
13 years ago
Richard Fuchs e11d55b3fb glib < 2.32 requires use of distinct static mutex type
13 years ago
Richard Fuchs 2b63e794df Prepare for multi-threaded operation
13 years ago
Richard Fuchs 135aa3decf remove obsolete targets from makefile
13 years ago
Richard Fuchs 4a3e36bf04 mybsearch function is also obsolete
13 years ago
Richard Fuchs 1ee9782b98 dont poll kernel list when table couldnt be opened
13 years ago
Richard Fuchs 8b320e76d9 lets be more strict with timer removal
13 years ago
Richard Fuchs 52ef56d106 it's inefficient to walk the entire list of poller items every second just to look for times which we don't really use. so instead, use the linked timers list for this purpose. this is also inefficient for timer remove, but since we don't use those times anyway, we don't care.
13 years ago
Richard Fuchs ee30ea647a BSEARCH macro is obsoleted
13 years ago