summaryrefslogtreecommitdiff
path: root/src/login/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/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/login.c')
-rw-r--r--src/login/login.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/login/login.c b/src/login/login.c
index 2b1650e2c..91a2f1996 100644
--- a/src/login/login.c
+++ b/src/login/login.c
@@ -1441,10 +1441,6 @@ int parse_fromchar(int fd)
return 0;
//printf("parse_fromchar: Receiving of the users number of the server '%s': %d\n", server[id].name, RFIFOL(fd,2));
server[id].users = RFIFOL(fd,2);
- // send some answer
- WFIFOHEAD(fd,2);
- WFIFOW(fd,0) = 0x2718;
- WFIFOSET(fd,2);
RFIFOSKIP(fd,6);
break;
@@ -1500,6 +1496,17 @@ int parse_fromchar(int fd)
RFIFOSKIP(fd,6);
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
if (RFIFOREST(fd) < 4 || RFIFOREST(fd) < RFIFOW(fd,2))
return 0;
@@ -3419,9 +3426,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;
}