summaryrefslogtreecommitdiff
path: root/src/login_sql/login.c
diff options
context:
space:
mode:
authorultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-11-09 21:44:29 +0000
committerultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-11-09 21:44:29 +0000
commitb397f7c6615f68f044100168eeaf157f6c60227c (patch)
tree5842a6059f35ec329fedc8970e4151ace6f3ec71 /src/login_sql/login.c
parent5b05a6ab3e2831fcf3a4fc68f746dc29edff6339 (diff)
downloadhercules-b397f7c6615f68f044100168eeaf157f6c60227c.tar.gz
hercules-b397f7c6615f68f044100168eeaf157f6c60227c.tar.bz2
hercules-b397f7c6615f68f044100168eeaf157f6c60227c.tar.xz
hercules-b397f7c6615f68f044100168eeaf157f6c60227c.zip
* Re-worked the login-char-map packet spam mechanism
- mapserver no longer sends entire user list to charserver every 10 seconds; similar change done to the char-login connection - user count updates are only sent when the value actually changes instead of servers polling each other every few seconds - the servers now prevent interserver connection timeout explicitly by sending ping/ack packet pairs instead of relying on the usercount polling to do so; keepalive is sent every 'stall_time'-2 seconds - removed the @refreshonline command as refresh happens automatically every 5 seconds git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11703 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/login_sql/login.c')
-rw-r--r--src/login_sql/login.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/login_sql/login.c b/src/login_sql/login.c
index 7139c0b2c..f72590bac 100644
--- a/src/login_sql/login.c
+++ b/src/login_sql/login.c
@@ -764,11 +764,6 @@ int parse_fromchar(int fd)
if( SQL_ERROR == Sql_Query(sql_handle, "UPDATE `sstatus` SET `user` = '%d' WHERE `index` = '%d'", server[id].users, id) )
Sql_ShowDebug(sql_handle);
}
- // send some answer
- WFIFOHEAD(fd,2);
- WFIFOW(fd,0) = 0x2718;
- WFIFOSET(fd,2);
-
RFIFOSKIP(fd,6);
break;
@@ -817,6 +812,17 @@ int parse_fromchar(int fd)
}
break;
+ case 0x2719: // ping request from charserver
+ if( RFIFOREST(fd) < 2 )
+ return 0;
+
+ WFIFOHEAD(fd,2);
+ WFIFOW(fd,0) = 0x2718;
+ WFIFOSET(fd,2);
+
+ RFIFOSKIP(fd,2);
+ break;
+
case 0x2720: // Request to become a GM (TXT only!)
if (RFIFOREST(fd) < 4 || RFIFOREST(fd) < RFIFOW(fd,2))
return 0;
@@ -1691,10 +1697,10 @@ int login_lan_config_read(const char *lancfgName)
subnet_count++;
}
-
- ShowStatus("Read information about %d subnetworks.\n", subnet_count);
}
+ ShowStatus("Read information about %d subnetworks.\n", subnet_count);
+
fclose(fp);
return 0;
}