summaryrefslogtreecommitdiff
path: root/src/common/socket.c
AgeCommit message (Collapse)AuthorFilesLines
2013-11-19Sanitized and improved several macros through the codeHaru1-13/+13
- Sanitized all potentially unsafe macros (related eA:15259) - Improved some function-like macros to evaluate their argument only once and keep it in a temporary variable. This improves performance in the damage calculation related code. Signed-off-by: Haru <haru@dotalux.com>
2013-11-13HPM Custom Data Struct Makeover!shennetsind1-1/+1
- Modified how the core handles it, making it easier to add new points. - Modified how plugins call it, calls were made shorter, e.g. 'HPMi->getFromSession(session[fd],HPMi->pid,0)' => 'getFromSession(session[fd],0)' -- check src/common/HPMi.h #defines for all the options - Added support for npc_data (getFromNPCD and so on) as requested in http://hercules.ws/board/topic/2923-hpm-custom-struct-npcs/ Signed-off-by: shennetsind <ind@henn.et>
2013-10-26Changed 'tick' variables to 64 bitHaru1-3/+2
- This fixes an issue with timers that stop working after about 24-49 days when the tick overflows (note that this may happen much earlier than that, and at hard to predict times, on some systems) - Updated the RDTSC help message in the configure script to also warn users about issues with SpeedStep enabled systems. - On Windows, tick() still has a resolution of 10~15ms (or even as low as 100ms on some systems). A TODO comment (thanks, Ai4rei) was added for a follow-up patch, as I want this one to be as small as possible) - Note: on Windows versions earlier than 6.x (Vista, Server 2008), the tick overflow issue is NOT fixed, since they don't support the function used to retrieve a 64 bit tick. This isn't a big issue, since those platforms are already - or going soon to be - out of their extended support period, and it's already advisable to upgrade, for other reasons. If you're the unfortunate user of such a system, it is recommended that you reboot your machine at least once every 49 days for Hercules to work reliably. - Note: To clear some doubts, since I've already been asked, this has absolutely NOTHING to do with 32/64 bit CPUs or OSes. It's all about a variable's size, not the size of registers of your CPU, and your 32bit CPU will be able to handle this just fine. Signed-off-by: Haru <haru@dotalux.com>
2013-09-25Renamed iTimer interface to timer.shennetsind1-6/+6
Also removed duplicate mentions of timer within calls to shorten.
2013-08-08HPM Updateshennetsind1-4/+22
- Custom Packet Support - Custom Data Struct Support (currently append-able to map_session_data and socket_data) - Char Server Support - Login Server Support http://hercules.ws/board/topic/1934-hercules-plugin-manager-update/ Documentation will soon be updated in http://hercules.ws/wiki/HPM Signed-off-by: shennetsind <ind@henn.et>
2013-07-08Follow up ea5a413cdf7eec37141a7fe124cad38d66464ac4malufett1-0/+1
-where it breaks some skills & in game behaviors.
2013-07-05HCache | Item Packages Updateshennetsind1-1/+56
http://hercules.ws/board/topic/1389-hcache-item-packages-update/ Signed-off-by: shennetsind <ind@henn.et>
2013-07-05Implemented real-time server stats (in and out data and ram usage), made by ↵Matheus Macabu1-0/+53
Ai4rei; thanks! Another follow up, now to fix maximum value of chatdori setting; And fixed a bug where warping to a disable map would cause the map-server to crash. Signed-off-by: Matheus Macabu <mkbu95@gmail.com>
2013-06-07Hercules Renewal Phase One : pc, party, map, timerSusu1-6/+6
Added iPc, iParty, iMap, iTimer to HPM exported interfaces
2013-05-30Memory Slasher - May 30 Patchshennetsind1-30/+30
http://hercules.ws/board/topic/928-memory-slasher-may-30-patch/ Signed-off-by: shennetsind <ind@henn.et>
2013-05-04Upgrading Stat Server from 2.5 to 3.0shennetsind1-3/+4
also: modified encode_zip in grfio for a upcoming modification and some minor stuff in some other places. Signed-off-by: shennetsind <ind@henn.et>
2013-04-02Fixed Bug #7145shennetsind1-4/+5
woo another system-dependent error (actually osx network buffer noticed the error and fixed it and that didnt let it happen while i was testing in it, nevertheless it was my fault and not windows +__+) http://hercules.ws/board/tracker/issue-7145-error-when-starting-the-emulator/ Signed-off-by: shennetsind <ind@henn.et>
2013-04-01Introducing socket_datasyncshennetsind1-1/+65
a user-friendly way to notify users when their servers are out of sync, e.g. http://hercules.ws/board/topic/328-intif-guild-data-size-error/ http://hercules.ws/board/topic/315-error-chrif-authok-data-size-mismatch-52224-52228/ Signed-off-by: shennetsind <ind@henn.et>
2013-02-18Improvements all over the placeshennetsind1-3/+3
Committing on the behalf of mkbu95 who is unable to do it himself, he coded it all and sent me the diff. Thanks mkbu95! Signed-off-by: shennetsind <ind@henn.et>
2013-01-25Dropping _athena file suffixesshennetsind1-1/+1
Signed-off-by: shennetsind <ind@henn.et>
2012-12-05- Undid r16968: SVN Replaced with source:/trunk/src/@16966 (tid:74924).brianluau1-980/+1003
[16969:16991/trunk/src/] will be re-committed in the next 24 hours. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16992 54d463be-8e91-2dee-dedb-b68131a5f0ec
2012-11-25Applied AStyle code formating as discussed on tid:74602.greenboxal21-1003/+980
Removed /SAFESEH option from MSVC11 projects. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16968 54d463be-8e91-2dee-dedb-b68131a5f0ec
2012-10-31Fixed bugreport:6779 dropped between-server ping timers, replaced by a much ↵shennetsind1-3/+11
more reliable and performance-efficient on-demand flagging. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16854 54d463be-8e91-2dee-dedb-b68131a5f0ec
2012-09-16Introducing rAthena's anonymous data collector. This aims at improving ↵shennetsind1-4/+5
rAthena's overall features by letting we know which options are most and least used. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16785 54d463be-8e91-2dee-dedb-b68131a5f0ec
2012-06-03cleaned up windows header usage (added one central file to use windows / ↵blacksirius1-2/+1
winapi specific stuff, to be able to set the appropriate flags before including it correctly) Note: this may screw up mingw or cygwin building, ill fix it later... git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16219 54d463be-8e91-2dee-dedb-b68131a5f0ec
2012-04-29- Removed leftover TXT configs, follow-up to r15503.brianluau1-0/+2
- Edited more ***_config_read() functions to show a warning if "Unknown setting" is found. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@16009 54d463be-8e91-2dee-dedb-b68131a5f0ec
2012-02-19- reverted part of r15609 since apparently the issue is purely limited to ↵lordttseven1-2/+1
ZC_SKILLINFO_LIST, and this change breaks big storages git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15613 54d463be-8e91-2dee-dedb-b68131a5f0ec
2012-02-18Follow up r15609, fixed gcc warningsshennetsind1-1/+1
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15610 54d463be-8e91-2dee-dedb-b68131a5f0ec
2012-02-18* adjusted socket_max_client_packet to a more accurate (if guessed) value to ↵lordttseven1-1/+2
prevent undefined client behavior (may only affect more recent clients?) + added a workaround for too large ZC_SKILLINFO_LIST packets resulting from all_skill group permission by sending excess skills one by one (bugreport:5348 and bugreport:5349) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15609 54d463be-8e91-2dee-dedb-b68131a5f0ec
2012-02-13Socket init now gives meaningful error description if failed to set socket ↵gepard19841-7/+3
limit (tid:58887). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15574 54d463be-8e91-2dee-dedb-b68131a5f0ec
2012-01-25Added user-friendly socket error messages (bugreport:117).gepard19841-10/+28
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15518 54d463be-8e91-2dee-dedb-b68131a5f0ec
2012-01-15Fixed gm_all_skill, bugreport:5239shennetsind1-12/+13
Removed broken skills from skill tree, so @allskill doesn't give resource errors when gm_all_skill is enabled. Increased maximum client packet size drop limit (was limiting gm_all_skill unnecessarily since the client doesn't crash with it) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15462 54d463be-8e91-2dee-dedb-b68131a5f0ec
2012-01-09Sending to a broken socket will no longer cause SIGPIPE signal to be sent ↵gepard19841-1/+5
back on most *nix systems (those supporting MSG_NOSIGNAL flag) (bugreport:5224) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15415 54d463be-8e91-2dee-dedb-b68131a5f0ec
2011-11-17* Added a check to WFIFOSET to detect zero-length 'sets' of packets, that ↵ai4rei1-0/+8
could cause memory corruption (through code after WFIFOHEAD(fd,packet_len(cmd)) where the length is 0). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14995 54d463be-8e91-2dee-dedb-b68131a5f0ec
2011-10-16* Added a message indicating how many concurrent connections the server was ↵ai4rei1-0/+4
compiled to support. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14978 54d463be-8e91-2dee-dedb-b68131a5f0ec
2011-10-07* Remove fds from the shortlist before processing.flaviojs1-14/+16
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14966 54d463be-8e91-2dee-dedb-b68131a5f0ec
2011-09-05* Add consistency checks to the shortlist.flaviojs1-2/+17
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14953 54d463be-8e91-2dee-dedb-b68131a5f0ec
2011-07-15* Changed the warning message of when setrlimit fails to be more explicit.flaviojs1-2/+9
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14907 54d463be-8e91-2dee-dedb-b68131a5f0ec
2011-07-12* CMake: added search for math.h, added search for socket/nsl library. ↵flaviojs1-0/+3
(tested with Solaris-201011-x86) * Added missing include to socket.c. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14903 54d463be-8e91-2dee-dedb-b68131a5f0ec
2011-06-30Replaced custom type 'intptr' with standard 'intptr_t'.ultramage1-1/+1
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14873 54d463be-8e91-2dee-dedb-b68131a5f0ec
2011-06-16* Merges from charmerge:flaviojs1-0/+3
- Added DBMap::exists. (r14090) - Added sv_parse_next, a stepped version of sv_parse (delim-separated parser). (r14100 r14104) - Added missing fd check to do_close. (r14145) - Normalized, refactored and restructured some code (in preparation for shutdown/reconnect code). (r14145 r14150) - Changed the char select request code to allow the char-server to reject it. (player in map-server trying to go to char select) (r14150) - Added shutdown support to the servers. (incomplete) (r14152) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14851 54d463be-8e91-2dee-dedb-b68131a5f0ec
2011-04-09* Fixed memory corruption when amount of players online approached ↵ai4rei1-4/+1
FD_SETSIZE (topic:262388, bugreport:4856, since r11897). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14781 54d463be-8e91-2dee-dedb-b68131a5f0ec
2011-04-08* Fixed a compile error when socket send shortlists are disabled (s->eof ↵ai4rei1-1/+1
instead of s->flag.eof) (follow up to r11930). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14779 54d463be-8e91-2dee-dedb-b68131a5f0ec
2011-01-31* Various accumulated cleanups and fixes.ai4rei1-6/+6
- Improved the compile speed for files which include common/socket.h on windows builds (related r10471). - Moved FIFOSIZE_SERVERLINK define from common/mmo.h to common/socket.h (since it is a server connection FIFO size setting). - Fixed script command 'areamobuseskill' canceling monster's skill cast before it determined it's new target, which could be 'none' (bugreport:3272, since r13897). - Added a protection against attempts to read an empty backup / write to a full backup in skill_dance_switch as per TODO from r11347. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14690 54d463be-8e91-2dee-dedb-b68131a5f0ec
2011-01-31* Fixed faulty WFIFO reallocation causing memory exhaustion (bugreport:4737, ↵ai4rei1-3/+3
since r1816, related r11503, r11571, r11886 and r12232). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14689 54d463be-8e91-2dee-dedb-b68131a5f0ec
2011-01-28* Resolving allow/deny IP rules not working (bugreport:2632).ai4rei1-3/+2
- Fixed 'mask' being filled with 'ip' when standard mask was specified (since r9647). - Fixed 'ip' and 'mask' (bit mask) being stored in wrong byte order (network order instead of host order) (since r10162). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14683 54d463be-8e91-2dee-dedb-b68131a5f0ec
2010-12-02* Added an error message when a client connection exceeds the socket write ↵ai4rei1-0/+1
buffer, so that it does not appear to be closed for no apparent reason (follow up to r13469). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14546 54d463be-8e91-2dee-dedb-b68131a5f0ec
2010-11-25* Too large client packets, which would otherwise cause the client to crash, ↵ai4rei1-0/+12
are now dropped and reported (bugreport:4391). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14503 54d463be-8e91-2dee-dedb-b68131a5f0ec
2009-02-20* Modified WFIFOSET to trigger a fatal error when trying to send a packet ↵FlavioJS1-1/+9
that is too big. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@13539 54d463be-8e91-2dee-dedb-b68131a5f0ec
2009-01-21* Added a limit of 1MB of pending data in the write fifo for non-server ↵FlavioJS1-1/+11
sockets. Connections that go over the limit are closed. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@13469 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-06-16* Made the socket limit not be set in cygwin, which has bogus behavior. ↵FlavioJS1-2/+9
(bugreport:1684) * Made the socket limit be set to the maximum allowed value when setting to FD_SETSIZE fails. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12839 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-06-09* Added experimental code to set the socket limit at runtime.FlavioJS1-0/+21
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12803 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-04-21* Changed the data field of timers from int to intptr.FlavioJS1-1/+1
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12633 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-02-27Altered socket code to do a graceful connection shutdown when exiting.ultramage1-3/+2
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12251 54d463be-8e91-2dee-dedb-b68131a5f0ec
2008-02-22* Removed code in socket.c that tries to avoid send buffer overloading, as ↵ultramage1-12/+0
there is a scenario (many players and charserver disconnect) where mass char saving produces huge ammounts of data to send (see r11503) * Cleaned up player respawning code (bugreport:1022) * Increased the max amount of different autocast skills from 5 to 10 * Added a missing function declaration, for real this time (followup to r12229) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12232 54d463be-8e91-2dee-dedb-b68131a5f0ec