]> jfr.im git - irc/rizon/znc.git/commitdiff
Update to latest Csocket
authorUli Schlachter <redacted>
Wed, 13 Jul 2011 18:47:56 +0000 (20:47 +0200)
committerUli Schlachter <redacted>
Wed, 13 Jul 2011 18:47:56 +0000 (20:47 +0200)
This fixes the "busy loop waiting for an SSL handshake to finish" which the last
"Update to latest Csocket" was already supposed to fix. However, that fix had a
bug if poll() is used instead of select().

poll()'s timeout argument is in milliseconds while select also allows
microseconds. Since Csocket originally used select(), it expects the
microseconds-approach. This means it has to divide by 1000 to get the timeout
argument for poll().

However, the iQuickReset which was used to "fix" (rather: hide) the busy loop
was less than 1ms so this still resulted in a timeout of 0 (= busy loop) because
integer division truncates the result.

Signed-off-by: Uli Schlachter <redacted>
Csocket.h

index b3ea1d81134d521ef250b6c1df710e5e30758268..18f6528f7ae8929fd99b4ec002de79e40fb38b9f 100644 (file)
--- a/Csocket.h
+++ b/Csocket.h
@@ -1991,7 +1991,7 @@ private:
                std::map< int, short > miiReadyFds;
                tv.tv_sec = m_iSelectWait / 1000000;
                tv.tv_usec = m_iSelectWait % 1000000;
-               u_int iQuickReset = 100;
+               u_int iQuickReset = 1000;
                if ( m_iSelectWait == 0 )
                        iQuickReset = 0;