diff options
author | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-11-09 21:44:29 +0000 |
---|---|---|
committer | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-11-09 21:44:29 +0000 |
commit | b397f7c6615f68f044100168eeaf157f6c60227c (patch) | |
tree | 5842a6059f35ec329fedc8970e4151ace6f3ec71 /src/login/login.c | |
parent | 5b05a6ab3e2831fcf3a4fc68f746dc29edff6339 (diff) | |
download | hercules-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.c | 18 |
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; } |