> Scenario 1 (how to reproduce) > As I said it is very easy to reproduce if you have access to any web server > with public address (you can test it with private web server if wapgw has > access to it, of course). > Fisrt of all configure some port to DROP (not REJECT!) incoming SYN packets > (or all packets). > Then take 2 phones or phone&fakewap. Make request to configured port from first > device. Kannel will block for 1-2 minutes. If you immediatly send request from > another device you will get timeout error.
Hmmm, ok... > Scenario 2 (kannel process description) > 1. http library get request from queue pending_requests > 2. make connect to host > 3. send request (nonblock realized by qwpoll and fdset) > 4. create callback for reply > 5. go to step 1. > > Take step 2: > 2.1 connect() send SYN to host > 2.2 Wait for ACK (blocking till some minutes if no ACK or RST) > 2.3 And handshaking and return connected socket or error. > > So if we block at 2.2 then all requests in pending_request queue will be lost > due timeout for session machine. sounds reasonable, yes. > Is this patch was tested by someone? With this patch even working > request doesn't work: :(((, no I didn't test. > BTW, I have patch that solve problem of blocking connect, but it is not > so complex as introduced by Netikos - it doesn't handle maximum number of > open connections to the server and don't use getaddrinfo for resolving. so you should have posted that already to the list to be commited to cvs :))) please forward it to the list as a clean diff -u against the current cvs tree. Stipe [EMAIL PROTECTED] ------------------------------------------------------------------- Wapme Systems AG Vogelsanger Weg 80 40470 Düsseldorf Tel: +49-211-74845-0 Fax: +49-211-74845-299 E-Mail: [EMAIL PROTECTED] Internet: http://www.wapme-systems.de ------------------------------------------------------------------- wapme.net - wherever you are