IMC2 AntiFreeze Client: Changes since 3.10 ------------------------------------------ This is not necessarily a detailed list, just a general rundown based on a diff file that was used to document the changes. This code branch has been terminated as of CL-4a. Changes in CL-4a: * Added support for copyover to the code. * Dependency on current_time removed. imc_now should have been used. Changes in CL-4: * imc_siteinfo struct has been merged with the ROUTERINFO struct and renamed SITEINFO. * imcone_argument function added to prevent incompatibility with mud implementations of one_argument. * URLs sent by other muds are now tracked in the remote info table for local use. * Mud can now change all but critical configuration data while connected. * Mud can refresh their imclist without reconnecting now. * Now able to get information on when person@mud last used public channels. Changes in CL-3a: * MD5 encryption code fixed. Was having issues with ASCII chars 9-13. Changes in CL-3: * MD5 encryption code has been replaced with a more portable version. * Channel who will now always respond to a targetted message. Changes in CL-2a: * Minor descritpor closing problem fixed. * chanwho will not respond if nobody on the mud is tuned in to the channel. Changes in CL-2: * Command functions redefined for ease of compatibility adjustments. * Added Dariens suggested expansions for imcfinger command. * Enabled use of the IMC_PRIVACY flag. * Added Locke's suggestion for channel notifications. * Buffer adjustments in imcstats command to prevent overflow. * Reworked imclist to prevent truncations. * Command aliases free'd in game shutdown for Valgrind friendliness. * Changed all references to "hub" to "router" * Added Garil's plugin module support. * MD5 support may now be turned completely of for muds who can't use it. Changes in CL-1: * Name change! WOOHOO! :) * Code certified as LGPL licenseable. Yes, we are certain of this. * Commands can now have multiple aliases if desired without cluttering the list. * Command file loads prior to config file. * imc_strip_colors will also strip mud tags now. * String centering now handled in a much cleaner way thanks to Justice. * Previously used color alignment functions removed. * Mud wizinvis macro tie has been removed. Complications for Smaug compiles. * BUG: Memory leak - dlname field not free'd in imc_freechan. Changes in 4.40: * MD5 Authentication has been added which works in tandem with the 3.31 Hubs. - Standard authentication will be used by default until MD5 is activated by a Hub. - Remote administration now uses MD5 when available. * Help information for commands has been internalized. * Command table is now editable online. - Internally replaced with a Smaug-style command lookup. * Color table is now a config file which can be edited independently of code. - imcansi_conversion array has been removed. * imctell can now parse socials. [Darien@Sandstorm] * imc_send_social modified to support tell socials. * free_imcdata takes a bool argument for muds with memory cleanup at shutdown. * Document files reorganized. * Moved imcminlevel, imcadminlevel, imcimmlevel, and imcimplevel to imc_siteinfo struct. * Moved imc_name to imc_siteinfo struct. * imc_strlen_color removed. Length checks now handled in setfill. * imc_connect_to updated to use cleaner DNS resolution, as well as to provide MD5 support. * imcchanwho had no usage message. * Consolidated some of the connection routines to reduce redundancy. * Condolidated permissions checking to reduce redundancy. * IMC_DIR define added to make changing directory easier. [Remcon@Pabulum] * Added the ability to log channels locally. * Several more unneeded externs removed from imc.h Changes in 4.30: * IMC_IGN struct chnaged to IMC_BAN for clarity of purpose. * Color translation system overhauled. Major cleanup. * imclog, imcbug both append IMC to log messages for clarity. * Trimmed excessive waste loops in process_rwho * Added a minimal response for process_rfinger. * imc_find_reminfo no longer requires second argument. Wasn't being used. * ping, route, and type taken out of REMOEINFO struct. * Time values no longer used in ping packets. * close-notify no longer triggers return pings. Just marks as expired now. * "reject" packet type no longer sent when unknown packet received. * keepalive-request packet no longer sends version ID. No client or hub ever made use of it. * Config file adjstments for Vulcan file compatibility. * Added channel who support for seeing who is listening to a channel on another mud. * Increased rejection of packets in ban situations. * CHECKMUDOF and CHECKMUD macros replaced with regular boolean functions. * imc_recv_chat and imc_recv_emote removed. do_imcchannel called directly now. * imc_recv_chan eliminated. Function calls moved to imc_recv. * imc_recv_hook and imc_recv_chain definitions removed. No longer necessary. * imcfread_string removed. imcfread_line assumes its function. Allows tildes to be saved in strings. * ice-update handler supports channel localname if sent from hub for channel. * Error message in interpret2 made slightly more informative for debugging. * Adjusted buffers in imc_to_char, imc_to_pager, imc_printf, and imcpager_printf. * imcsockets command removed. No longer useful. * Added a permission override to cancel automatic adjustments by level at login. * Implemented the remote administration interface. * Sealed several memory leaks. Changes in 4.25b: * Fixed a memory leak in the ucache list. Changes in 4.25a: * Memory leak in tell history addition plugged. Bleh. * imc_showchannel checks CON_PLAYING now. Changes in 4.25: * Added tell history for imctell. * Updated social processing. Uses I3 style ucache packets for gender targetting now. * Added web URL for muds to is-alive data for webstats publication. * ice-refresh now using multicast system to further reduce packet spam. * Network name identified on imclist output. Changes in 4.24b: * Reduction in spam on is-alive responses. Changes in 4.24a: * Support for new "sender" tag to fix channel echo problems. Changes in 4.24: * Clients no longer able to remove own network info. Security risk. * Netname retreival now handled during connection handshake. * Bugfix in imc_act_string for him/her/its Changes in 4.23c: * Clients can now tell the hubs to remove their connection data via the network. Changes in 4.23b: * Crash bug fixed in imclisten. Changes in 4.23a: * Adjustments for Circle 3.1 compatibility. ( 3.0x compatibility may be lost ) * Corrected some missed imc_to_char statements. Changes in 4.23: * Added options for "imclisten all" and "imclisten none" for channels. * Added Xorith's capitalization fix for socials. ( Replaces old imc_act_string ) * strlcpy and strlcat have returned, with renamed versions to avoid system dependence. * imcto_buffer no longer requires the length argument. * Fixed the imclist hub finder thing to avoid imcstrlcpy cutting off needed bytes. * Some missed sprintf calls made to use snprintf. * Some missed strcpy calls made to use imcstrlcpy. * Non-Smaug socials were still accessing get_char_world. Changed to imc_find_user. * BUG: Memory leaks in imc_delete_info fixed. Changes in 4.22b: * Arbitrary version number change. Reflects the true nature of the upgrades made since the Continuum developer won't correct his version number. * imcchanlist will not show people channels they can't access. * imcsetup 'setlocal' option now enforces the need for a local channel name. * imclisten will report non-existant channel for PC's below the permission level. * Support for background and blink colors added. * Channel permission checks added in imcsetup command. * Feedback message improved for renaming channels. * Fixed the syntax messages for the 3 format types for channels. * Channels not listened to by players will list in red now. * Channel count displayed at the end of imcchanlist. * imcquery command removed and replaced with imcinfo. Redundant code. * imclist command with an argument will show the mud's information instead. * Feedback messages from imcignore and imcban made more helpful. * imcpermset command verifies channel permissions once new setting is made. * A number of unfixed strcpy's and strcat's caught and corrected. Changes in 3.22b: * Autosetup reworked to avoid stepping on 2.x and 1.x client hub authentication. Changes in 3.22a: * Replaced strlcpy and strlcat with imcstrncpy and imcstrncat. * Removed hubinpath function, rewrote imclist function. * Logic error in imcreply fixed. * Local echo packet key fix applied. * Packet debug now logs sent packets as well. * Helpfiles updated. Changes in 3.22: * Protocol version taken back to 2. * Autoconn method reworked. Client will no longer be refused by older hubs. * CHECKIMC macro and all calls to it removed. No longer necessary. * Event system and all related variables/structs removed. - Initial keepalive and channel refresh sent upon completed handshake. Event calls removed. - Validator functions removed. They were the only things left calling events. Would have been wasteful. * Network added to imc_hubinfo struct for support of netnames. * Alive and Hide removed from imc_remoteinfo. No longer used. * Network added to imc_remoteinfo struct for support of netnames. * imclist output adjusted to display netnames and hubs. * event_freecount variable removed. Was part of event system. * Added strlcpy and strlcat for better buffer overflow handling. * Changed all strncpy and strncat calls to strlcpy and strlcat. * vinfo entry for version 3 packets removed. * Channel policy enforcement at the client level has been removed. All enforcement has happened at the hub level anyway. - imc_audible function and all calls removed. * Exception to tell invis/permission made for ICE username so that hub errors will be delivered properly. * Several more descriptor loops replaced with imc_find_user calls. * Memory leak: p->path was not being free'd by imc_delete_reminfo. * Memory leak: this_imcmud->inbuf and this_imcmud->outbuf not being free'd by imc_delete_info. * Packet debugging added, toggleable by user, defaults to Implementor permission. * "add" argument put back in imcsetup to support old isetup command users. * Typo in imcbeep command corrected. * Local echo of messages to channels removed. Bug was fixed on the 3.22 hub code. Changes in 3.21: * Client code will compile cleanly using g++ for those muds that require it. * Command names from 2.00g are now recognized by the new command table ( May not do what you expect though ). * All sprintf calls changed to snprintf to prevent buffer overflows. * All variable length strcpy calls changed to strncpy to prevent buffer overflows. * All variable length strcat calls changed to strncat to peevent buffer overflows. * str_cmp calls replaces with strcasecmp. * More unused variables and struct fields removed. Changes in 3.20: imc.c: * Client can now connect to a V3.20 hub without the need for an application to be filled out. * Protocol version has been raised to 3 for support of unsupervised connections. * Removed the FreeBSD file locking defines. No longer used. * Removed the imc_log_on variable. No longer used. * Incorporated the permissions and flag settings proposed by Rogel. - Independent implementation - No code was used from the 4.00 release. - imc_char_login added to support legacy conversion of players to the permission settings. - IMC_DEAF_FLAGS, IMC_ALLOW_FLAGS, and IMC_DENY_FLAGS removed. Replaced with IMCFLAG settings. - Legacy conversion of channels to the new system. - Added imc_immlevel and imc_implevel settings to imc.config file. - imcperms and imcpermset commands added to support editing permissions. * Big ugly ifchecks in imc_command_hook streamlined into a Merc style command table. * Several macros once defined in imccfg.h have been redone and moved to imc.h * IMCMAX_LEVEL define removed. * CH_IMCLEVEL macro only needed for legacy conversion. Has no other purpose now. * Several macros in imccfg.h have been removed for compatibility reasons. * Consolidated the color parser into one table and removed unnecessary defines. * imc_color function removed. No longer needed. * imccolor command now toggles the player's IMC_COLOR flag. * Channel policies reduced to 'open' and 'private' only. * Added imcconnect_attempts variable to count the number of reconnects. * Mud will no longer endlessly attempt to reconnect. Now limited to 5-7 tries. * flag_type, and imc_active_names removed. Not used. * Added imc_find_user function to consolidate the number of descriptor loops. * tagtoansi now accepts a CHAR_DATA for the IMC_COLOR flag. * Wizinvis data has been removed from the imc_char_data struct. * RTELL_FORMAT and RBEEP_FORMAT have been removed. * imc_visible function has been removed. No longer needed. * Fully enabled the use of the imcignore command. It will now check where appropriate. * Defines for clans and various other things removed for greater compatibility. * ev_spam1 and ev_spam2 removed. No longer used. * imclist command only displays one type of listing now. Others were useless. * imclist command only shows mud names and client versions now. * Code hook in save.c changed to case 'I' section and modified. Compatible with updated I3 client. * Players logging in will have undefined channels removed from their settings now. * Configurable logging has been removed. This flag was not used. * IMC_INVIS and IMC_HIDDEN defines removed. * CAN() macro removed. No longer used. * timer_duration, last_connected, and connect_attempts removed from imc_hubinfo struct. * spamcounter1, spamcounter2, spamtime1, and spamtime2 removed from imc_hubinfo struct. * active removed from imc_channel struct. * stamp removed from imc_packet struct. * maxguests removed from imc_siteinfo_struct. * Memory allocation macros updated to most recent versions on Samson's site. * Channel policy defines changed to enum list. * get_char_world define removed from Circle section. Replaced by imc_find_user. * Long standing bug in the markfn handlers for ACK fixed.