Ik ben een programma aan het maken op een master-node die periodiek zijn andere nodes moet afgaan om data te synchroniseren. Een soort rsync vanuit een centrale locatie. Alleen, die andere nodes kunnen best ook uit staan en dan blockt mijn connect() call (nouja, blockt.. hij wacht veel te lang op een timeout).
Nu probeer ik dat connecten wat sneller te laten gaan, dus eerder te laten time-outen. Aangezien connect hier zelf geen functies voor heeft, los ik dit op met een setjmp en alarm. Als dat alarm af gaat, kom ik via een longjmp terug en spring ik uit de functie (return -1 om een timeout aan te geven). Dit gaat 1x goed, daarna reageert hij niet meer op alarm calls.
Om het wat duidelijker te maken heb ik de relevante code gezet in http://www.noidea128.org/...rce.cgi?id=5998&type=html. Kan iemand mij vertellen wat ik fout doe?
Om het extra interessant te maken; dit zou moeten werken op linux dozen (werkt dus niet) maar uitstekend op een macosx machine! Hierin heb ik connect() rommel vervangen voor select() maar dat mag het verschil niet zijn.. Als ik mijn code niet alsnog moet omgooien naar non-blocking (om het dan met select() te omzeilen) zou dat top zijn!
Kan iemand me hiermee helpen? Alvast bedankt
Nu probeer ik dat connecten wat sneller te laten gaan, dus eerder te laten time-outen. Aangezien connect hier zelf geen functies voor heeft, los ik dit op met een setjmp en alarm. Als dat alarm af gaat, kom ik via een longjmp terug en spring ik uit de functie (return -1 om een timeout aan te geven). Dit gaat 1x goed, daarna reageert hij niet meer op alarm calls.
Om het wat duidelijker te maken heb ik de relevante code gezet in http://www.noidea128.org/...rce.cgi?id=5998&type=html. Kan iemand mij vertellen wat ik fout doe?
Om het extra interessant te maken; dit zou moeten werken op linux dozen (werkt dus niet) maar uitstekend op een macosx machine! Hierin heb ik connect() rommel vervangen voor select() maar dat mag het verschil niet zijn.. Als ik mijn code niet alsnog moet omgooien naar non-blocking (om het dan met select() te omzeilen) zou dat top zijn!
Kan iemand me hiermee helpen? Alvast bedankt