Richard Fuchs
|
63b034e623
|
udp can be unreliable even over localhost
|
14 years ago |
Richard Fuchs
|
d8771320d7
|
new call simulator script for testing against udp protocol
|
14 years ago |
Richard Fuchs
|
8af139ad10
|
the status command gets really slow under valgrind, so put it into background
|
14 years ago |
Richard Fuchs
|
0f6d898171
|
add proper locking to callstream setup procedure
|
14 years ago |
Richard Fuchs
|
94f2f320a6
|
actually the call struct needs neither linked flag nor shutdown flag due to the sequence of events and locking
|
14 years ago |
Richard Fuchs
|
d8776907f8
|
need to lock the callstream a bit earlier
|
14 years ago |
Richard Fuchs
|
ab3b8c60f0
|
fix a silly, threading-unrelated, statistics-skewing bug
|
14 years ago |
Richard Fuchs
|
45f34b9784
|
turns out you actually have to free/destroy mutexes. who woulda thunk?
|
14 years ago |
Richard Fuchs
|
54353022ff
|
om nom nom memory leak... well, reference count leak
|
14 years ago |
Richard Fuchs
|
b7a68659b1
|
analoguous to the last race, call_destroy() must not assume that it's getting the last reference to the call
|
14 years ago |
Richard Fuchs
|
683b716885
|
here we go with the subtle race conditions
|
14 years ago |
Richard Fuchs
|
806920cc52
|
dont abort polling on EINTR
|
14 years ago |
Richard Fuchs
|
0d6349f14c
|
and for the interesting part: multiple poller threads
|
14 years ago |
Richard Fuchs
|
942c96c96d
|
move poller timers and polling into a separate thread
|
14 years ago |
Richard Fuchs
|
d25d1c2009
|
making main() pretty by moving stuff out of the way
|
14 years ago |
Richard Fuchs
|
ddffe5eeec
|
global xmlrpc init must be done prior to any threading
|
14 years ago |
Richard Fuchs
|
d1fbf9bef9
|
alarms arent usable in a threaded environment, so use curl internal timeout instead
|
14 years ago |
Richard Fuchs
|
feeeee2fab
|
must extract needed tags for xmlrpc call teardown prior to destroying the calls
|
14 years ago |
Richard Fuchs
|
973d92d9c7
|
moving call teardown due to timeout to a separate thread
|
14 years ago |
Richard Fuchs
|
47a9a00a11
|
it makes no sense to return a value from an effectively detached thread
|
14 years ago |
Richard Fuchs
|
31a5ff9c29
|
detached threads considered harmful, so simulate them by keeping a threads-to-join list
|
14 years ago |
Richard Fuchs
|
bc647862e5
|
use sigtimedwait for proper sighandler thread shutdown
|
14 years ago |
Richard Fuchs
|
badae5a874
|
lets get some threads going then, starting with a signal handler
|
14 years ago |
Richard Fuchs
|
2dd6cfe68c
|
keeping the lock hold time to a minimum in lengthy calls_status operation
|
14 years ago |
Richard Fuchs
|
8c2c69f5e6
|
make the stats collection thread-safe
|
14 years ago |
Richard Fuchs
|
d9e09f33bc
|
lets try with a lot of large, nested, naive locks
|
14 years ago |
Richard Fuchs
|
ae5a36f5ce
|
getting rid of call->log_info and introducing call->lock
|
14 years ago |
Richard Fuchs
|
900f76a17e
|
make the callmaster struct private - also requires update to redis module
|
14 years ago |
Richard Fuchs
|
aeb5398b0d
|
granular lock for "ports used" bit field
|
14 years ago |
Richard Fuchs
|
a8680cc2d9
|
TOS for ipv6 needs an int to work
|
14 years ago |
Richard Fuchs
|
0b0b41e67f
|
gonna need more than one lock in callmaster, so rename the one we have
|
14 years ago |
Richard Fuchs
|
4cb63b5edf
|
need to handle the no-reply case to avoid deadlocks with bad cookies
|
14 years ago |
Richard Fuchs
|
4588e13a76
|
getting rid of more global variables
|
14 years ago |
Richard Fuchs
|
e033d1da1c
|
EINTR requires special handling
|
14 years ago |
Richard Fuchs
|
1ec2c96655
|
living on the edge with epoll edge-triggered behavior
|
14 years ago |
Richard Fuchs
|
db15692f21
|
using thread-local-storage for eliminating constant calls to time()
|
14 years ago |
Richard Fuchs
|
45945f6c7f
|
it helps to actually initialize the condition var
|
14 years ago |
Richard Fuchs
|
26824993e2
|
preliminary attempt to make the udp controller thread-safe
|
14 years ago |
Richard Fuchs
|
5f5e158d76
|
private structs make for safer threading
|
14 years ago |
Richard Fuchs
|
ebd2893e96
|
missing a streambuf lock here
|
14 years ago |
Richard Fuchs
|
419f6bb230
|
and the tcp controller becomes thread-safe
|
14 years ago |
Richard Fuchs
|
6e474ccfc0
|
add appropriate threading compile flags
|
14 years ago |
Richard Fuchs
|
c75aecc282
|
make use of "make debug" target
|
14 years ago |
Richard Fuchs
|
7dc00bd258
|
making timers thread-safe
|
14 years ago |
Richard Fuchs
|
4b74e6f476
|
use obj_* to catch double-free errors
|
14 years ago |
Richard Fuchs
|
b3ef1995fc
|
add mutex_trylock primitives
|
14 years ago |
Richard Fuchs
|
de33b8da40
|
add basic locking to callmaster struct
|
14 years ago |
Richard Fuchs
|
9dab795a17
|
disable object debugging, seems to work fine
|
14 years ago |
Richard Fuchs
|
8dcd2c89c4
|
add rwlock type and primitives
|
14 years ago |
Richard Fuchs
|
26f29aefeb
|
object size isnt really a useful piece of information
|
14 years ago |