]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/irc-login.c
ngIRCd Release 27
[ngircd-alex.git] / src / ngircd / irc-login.c
index 846b10d6e8aa2f08951c393f545aba0deb8ae331..fb2219226d8c3654c3ebdb8029e96dd2a3ab1160 100644 (file)
@@ -774,7 +774,7 @@ IRC_PING(CLIENT *Client, REQUEST *Req)
                return IRC_WriteErrClient(Client, ERR_NOSUCHSERVER_MSG,
                                        Client_ID(Client), Req->prefix);
 
-       Log(LOG_DEBUG, "Connection %d: got PING, sending PONG ...",
+       LogDebug("Connection %d: got PING, sending PONG ...",
            Client_Conn(Client));
 
 #ifdef STRICT_RFC
@@ -877,11 +877,17 @@ IRC_PONG(CLIENT *Client, REQUEST *Req)
                    (long)(time(NULL) - Conn_GetSignon(conn)),
                    time(NULL) - Conn_GetSignon(conn) == 1 ? "" : "s",
                    Client_UserCount(), Channel_CountVisible(NULL));
-               Conn_UpdatePing(conn);
-       } else
-               LogDebug("Connection %d: received PONG. Lag: %ld seconds.",
-                        conn, (long)(time(NULL) - Conn_LastPing(conn)));
+       } else {
+               if (Conn_LastPing(conn) > 1)
+                       LogDebug("Connection %d: received PONG. Lag: %ld seconds.",
+                                conn, (long)(time(NULL) - Conn_LastPing(conn)));
+               else
+                       LogDebug("Got unexpected PONG on connection %d. Ignored.",
+                                conn);
+       }
 
+       /* We got a PONG, so signal that none is pending on this connection. */
+       Conn_UpdatePing(conn, 1);
        return CONNECTED;
 } /* IRC_PONG */