Richard Fuchs
|
49c77f6be4
|
the status command gets really slow under valgrind, so put it into background
|
13 years ago |
Richard Fuchs
|
c11d0e2882
|
add proper locking to callstream setup procedure
|
13 years ago |
Richard Fuchs
|
5f40e7d173
|
actually the call struct needs neither linked flag nor shutdown flag due to the sequence of events and locking
|
13 years ago |
Richard Fuchs
|
81562e0a50
|
need to lock the callstream a bit earlier
|
13 years ago |
Richard Fuchs
|
19f4bc3121
|
fix a silly, threading-unrelated, statistics-skewing bug
|
13 years ago |
Richard Fuchs
|
5ea20be0ae
|
turns out you actually have to free/destroy mutexes. who woulda thunk?
|
13 years ago |
Richard Fuchs
|
7b20eb4b84
|
om nom nom memory leak... well, reference count leak
|
13 years ago |
Richard Fuchs
|
cb9967260e
|
analoguous to the last race, call_destroy() must not assume that it's getting the last reference to the call
|
13 years ago |
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 |