MOO-cows Mailing List Archive


ALPHA-TEST release of LambdaMOO version 1.8.0alpha4

I have made (yet) another *alpha-test* release of version 1.8.0 of the
LambdaMOO server in the usual place:

This is still an ALPHA TEST release of the server and, although a number of
nasty bugs from the previous release have been fixed, there are almost
certainly some more server-crashing, database-losing bugs remaining, so please

Please continue to send your bug reports to the main MOO-Cows mailing list so
that everyone can stay informed and we can perhaps thereby cut down on useless
duplication of bug reporting.

I still expect to make more test releases before the final, production-approved
one.  For particularly nasty reported bugs, I will either make another test
release containing the fix or else send out a patch; announcements of new test
releases will be made to MOO-Cows-Announce, but all test-release patches will
just be posted to the main MOO-Cows list, to reduce the amount of noise on the
-Announce list.

NOTE that there is an important compatibility `NOTE' in the ChangeLog.txt entry
for this release; PLEASE read it BEFORE trying out this version of the server.

Here's the ChangeLog.txt entry for this release:
Version 1.8.0alpha4, 30 December 1995
-- Fixed foolish C-syntax bug in the delete_verb() built-in.  (Thanks to Brian
   Buchanan and Nate Massey for finding this.)
-- Fixed configuration problem on FreeBSD and perhaps other platforms.  (Thanks
   again to Brian Buchanan for pointing this out.)
-- Fixed compilation warning in net_bsd_tcp.c when OUTBOUND_NETWORK was
   defined.  (Thanks to Martian and others for reporting this.)
-- Fixed nasty occasional memory smash in delete_property().  (Thanks to Kai
   Storbeck for reporting it.)
-- All DB-configurable messages (e.g., $server_options.timeout_msg, etc.) can
   now be given as either a string or a list of strings; in the latter case,
   each string will be printed on a separate line.
-- New DB-configurable message $server_options.server_full_msg is printed to
   any connection that arrives when the server really can't accept any more
   connections; after printing the message, the temporarily-accepted connection
   is immediately closed.  The default for this message is as was formerly
   hardwired into the server:
        *** Sorry, but the server cannot accept any more connections right now.
	*** Please try again later.
-- The DB-configurable messages are no longer printed on outbound connections.
-- Added a version of the MPL (multiple-port listening) extension first
   implemented by Ivan Judson.  This involves the addition of three new
   built-in functions:
	    Create a new point at which the server will listen for network
	    connections, just as it does normally.  OBJ is the object whose
	    verbs :do_login_command, :do_command, :do_out_of_band_command,
	    :user_connected, :user_created, :user_reconnected,
	    :user_disconnected, and :user_client_disconnected will be called at
	    appropriate points, just like these verbs are called on #0 for
	    normal connections.  (If a user reconnects and the user's old and
	    new connections are on two different listening points being handled
	    by different objects, then :user_client_disconnected is called for
	    the old connection and :user_connected for the new one.)  DESC is a
	    network-configuration- specific parameter describing the listening
	    point.  For the TCP configurations, DESC is a port number on which
	    to listen.  If PRINT_MESSAGES is provided and true, then the
	    various DB- configurable messages will be printed on connections
	    received at the new listening point.  CANON_DESC is a
	    `canonicalized' version of DESC, with any configuration-specific
	    defaulting or aliasing accounted for.  For the TCP configurations,
	    CANON_DESC is equal to DESC unless DESC is zero, in which case
	    CANON_DESC is a port number assigned by the operating system.  This
	    raises E_PERM if the programmer is not a wizard, E_INVARG if OBJ is
	    invalid or there is already a listening point described by DESC,
	    and E_QUOTA if some network-configuration-specific error occurred.
	    Stop listening for connections on the point described by DESC,
	    which should be a value returned by some successful call to
	    listen().  Raises E_PERM if the programmer is not a wizard and
	    E_INVARG if there does not exist a listener with that description.
	listeners() => {{OBJ, DESC, PRINT_MESSAGES}, ...}
	    Returns a list of all existing listeners, including the default one
	    set up by the server at boot time.
   I believe that this implementation is upward-compatible with the existing
   uses of Ivan's package.  As far as I know, the only differences are that his
   package did not have the PRINT_MESSAGES argument to listen(), did not work
   for the non-BSD/TCP networking configurations, did not call :do_command or
   :do_out_of_band_command, did not distinguish the case of a user reconnecting
   on a different listening point, and did not have the listeners() function.
      Please note that there is now nothing special about the initial listening
   point created by the server at boot time; you can use unlisten() on it just
   as if it had been created by listen().  This can be useful; for example, you
   might start up your server on some obscure port, say 12345, connect to it by
   yourself for a while, and then open it up to normal users with the command
	;;unlisten(12345); listen(#0, 7777, 1)
-- Changed the result of connection_name() to expose information about the
   listening point on which the connection was accepted.  For the TCP
   networking configurations, the format is now:
	  "port 7777 from, port 3456"
   where 7777 is the server port on which the connection arrived and the rest
   is as before.
   ********** Before upgrading an existing LambdaCore-based MOO to use this
   ** NOTE ** version of the server, you should modify the verb
   ********** $string_utils:connection_hostname_bsd as follows:
		    @program $string_utils:connection_hostname_bsd
		    s = args[1];
		    m = match(s, "^.* %(from%|to%) %([^, ]+%)");
		    return m ? substitute("%2", m) | "";
   This code should work compatibly with any version of the server since 1.6.0.
-- Added a new kind of expression, allowed only within the indexing/subranging
   brackets `[...]'; in this context, the expression `$' means the length of
   the value being indexed or subranged.  This allows, for example, expressions
   like `x[2..$]' to get the `rest' of a list after the first element or
   `x[random($)]' to get a random element of a list.  You can also use this on
   the left-hand side of an assignment; for example `x[$] = 7' sets the last
   element of a list, and `x[$+1..$] = {y}' adds y onto the end of the list x.
   My favorite abuse of the new syntax is `x[l = $]' as a substitute for the
   verbose and now old-fashioned `l = length(x)'.
-- Fixed longstanding bug in `client_sysv', the client for the SYSV/LOCAL
   networking configuration; it never worked to specify a server connection
   file on the command line!

Home | Subject Index | Thread Index