DONE (0.7a)
Version 0.3
- send_udp() will not send requests that are not listed in the
target hosts command list.
- Abbreviated mudnames can be used. send_udp() will do mudname
completion as long as there is no ambiguity.
- receive_udp() logs the DATA field of system replies (ie. no
recipient) if it exists.
- receive_udp() will send a 'request failed' reply and record a log
if an incoming command is unknown or fails.
- Added some example files to help in writing intermud commands.
- Added 'finger' module.
- Any data fields of type object passed to send_udp() will be
converted to file_name format on encoding.
- A file_name or object can be used as the SENDER field and replies
will be directed to udp_reply(mapping data) in that object.
- Added 'channel' module.
Version 0.4
- The second (port) argument to send_imp() is typecast to an int for
compatability with older drivers.
- Null fields are ignored in the encoding process to minimize packet
size.
- inetd.c and the files in /udp have been rewritten to make them
more portable and aid quick and easy installation of the basic
intermud system.
- Int and string fields are guaranteed to be decoded correctly.
Float support was removed for simplicity and to aid portability.
- Buffering is done on packets longer than the maximum transfer
size.
Version 0.5
- Fixed bug with object encoding.
- Channel module modified to allow channel listings.
- Reply and ping requests moved from the inetd to seperate modules.
- Query and man modules added.
- Host data and access system rewritten.
- Previously unknown hosts are added dynamically with public privs.
- Field names in the data mapping are not restricted to strings.
- The DATA field guarantees correct decoding of strings and ints.
Version 0.6
- Added definition of INETD to udp.h.
- Renamed the LOG_FILE macro in udp.h to INETD_LOG_FILE to prevent
clashes.
- Added simple reliability scheme (udp.h):
Requests that expect a reply will be resubmitted up to RETRIES number
of times after each TIME_OUT expires without a response.
- Added compatability to allow another intermud system (or
interpretter) to run invisibly underneath the inetd package.
(config in inetd.c)
- Added security checking to receive_udp() (config in inetd.c).
- Added diagnostics to inetd if required (udp.h):
If used, the RESPONSE_TIME field will contain the number of seconds
a reply took to arrive.
- Error checking in INETD_HOSTS file.
- Changed send_udp() to return 0 for success and an error message
for failure.
- Muds are PINGed at load-time by the function startup() which is
called via a call_out("startup", 1). set_host_list() is called
normally from reset()/create(). This allows inetd.c to be loaded
from init_file safely.
- Added a symbol USE_EXTRACT to inetd.c for muds that do not support
the a[n..] indexing notation.
- Added compatability for to_int(), to_string, copy_mapping() and
send_imp() efuns in the form of definitions in inetd.c
- Added SYSTEM field to hold system information.
- Moved timeout notification to reply.c module.
- Added HOST_STATUS field to "hosts" queries in udp/query.c
- Added PACKET_LOSS diagnostic field which holds the number of
packets lost before the last reply (or timeout) arrived.
- Auto-updating of host and port numbers:
The memory-resident host list is updated and a log recorded of the
event. No change is made to the INETD_HOSTS file.
- Illegal calls of receive_udp() are logged.
- Checking for illegal characters is done when encoding packets.
- "time" queries changed to return ctime(time()) in udp/query.c
- Renamed the "CHANNEL" and "CMD" headers used by udp/channel.c to
"channel" and "cmd" so as to reserve upper case for standard
headers in udp.h. See udp/channel.c for backwards compatability
hack.
- Ftp module added. (udp/ftp.c)
- Improved error tracing (slightly) when remote commands fail.
- The DATA field will be encoded as long as it is present in the
data mapping even if it's contents is (int)0 to ensure the mapping
indices are correct on decoding.
- Changed udp/reply.c so replies will be sent to players with
tell_object() if the players name is used as the SENDER field, but
to player->udp_reply() if the filename of the player is used.
- start_up() is only called in inetd.c at boot-up (ie.
!this_player()) to make it a bit nicer when testing/debugging.
- Added locate module. (udp/locate.c)
Version 0.6.1
- Fixed a bug(/feature?) in packet decoding that was converting some
system fields to lower case.
Version 0.7
- RESPONSE_TIME is rounded up to the nearest second rather than
down.
- As a security measure, if your local mud is listed in your host
list, host and port changes will not occur dynamically. Instead a
"fake mud" log will be made as it is assumed you would update your
host list if you changed address or port.
- Mud name changes are logged and the host list updated accordingly
rather than simply adding them as a new mud.
- The host list is reset correctly when calling set_host_list().
- New muds using our LOCAL_NAME will we logged as fake muds and not
added to the host list.
- INETD_HOSTS file is no longer supplied as part of the distribution
as it was always out of date! It should be obtained separatly via
ftp.
- Increased timeout for buffered packets to (REPLY_TIME_OUT +
REPLY_TIME_OUT * RETRIES), to improve hit rate when split packets
are received over multiple resends.
- (string *)expand_mud_name(string name) added to inetd.c. It
returns an array of mudnames which can be expanded from the string
given as it's argument. This can be used by intermud objects to
expand mud names. Changed examples/_ping.c to use this.
- Compatability with CD.03.xx drivers.
- HOST_STATUS retension is handled more intelligently when
set_host_list() is called.
- Changed the way the SYSTEM field is implemented to allow multiple
system fields. Added (status)check_system_field(mapping data,
string field) and (mapping)add_system_field(mapping data, string
field) to inetd.c for manipulation of the system field. Changed
udp/reply.c, _ping.c, _ftp.c and _locate.c appropriately.
- Fixed some minor bugs in udp/ftp.c and examples/_ftp.c
- Changed examples/_locate.c so only successes are reported by
default. Fail and timeout reports can be requested independantly.
- Added compatability for a future change of the DELIMITER string
used in packet encoding / decoding. (decode_packet() takes a
second argument which is the DELIMITER string to be used).
- Packets with no REQUEST field are logged as system messages.
- Repeated requests have the REPEAT system field set. Modified
udp/tell to use this to prevent repeated tells. Requests with the
REPEAT system field set should generate a response as normal, but
should take no other action.
- Changed udp/reply.c to ignore replies with no recipient.
- Changed udp/channel.c to send a minimal reply.
- Tidied up udp/channel.c. It now uses the channeld code supplied as
an example channel implementation. If people want to use their own
channel system they should modify udp/channel.c accordingly.
- Changed examples/_ping.c to give more useful output.
- Fixed a bug which allocated a new ID to retries if they were buffered.
- Fixed a bug in buffered packet decoding which only appeared with
DELIMITER_COMPAT enabled.
- Added query("valid_request", request, mudname) function to inetd.c.
Changed channeld.c to use this.