--- deliantra/server/socket/lowlevel.C 2007/06/10 02:51:46 1.45 +++ deliantra/server/socket/lowlevel.C 2007/06/12 10:29:52 1.47 @@ -49,7 +49,8 @@ #if HAVE_TCP_INFO // check about once per second, spread evenly over all clients - if (!((pticks + fd) & 7)) + // do this only when player is active + if (!((pticks + fd) & 7) && pl && pl->active) { // check time of last ack, and, if too old, kill connection struct tcp_info tcpi; @@ -57,6 +58,9 @@ if (!getsockopt (fd, IPPROTO_TCP, TCP_INFO, &tcpi, &len) && len == sizeof (tcpi)) { + if (tcpi.tcpi_snd_mss) + mss = tcpi.tcpi_snd_mss; + rtt = tcpi.tcpi_rtt; rttvar = tcpi.tcpi_rttvar; @@ -83,7 +87,7 @@ // write a nop to the socket at least every IDLE_NOP seconds. if (!outputbuffer.len) { - if (last_send + IDLE_PING <= NOW) + if (last_send + IDLE_PING <= NOW && pl && pl->active) { // this is a bit ugly, but map1/map1a seem to be the only // nop'able commands and they are quite small.