[Contents] [Index] [Help] [Browse <] [Browse >]


( "-" = new feature, "*" = bug fix)
V54.0: (Public release 2002-May-04) (amarquee.library v54.0, rexxamarquee.library v54.0, AMarqueed v51.0)
*    QGetLocalIP() did not return the local ip address when the session was created with
	 QNewSocketServerSession().
*    When a session created with QNewHostSession is connected it shall return the ip address
	 of the remote host in the qm_Data field of the QMessage, it did return the local ip address
	 with version 53 of amarquee.library. So if your program doesn't work with v.53 you know why.
*    The version string of rexxamarquee.library wasn't updated since v 52.

V53.0: (Public release 24-March-2002) (amarquee.library v53.0, rexxamarquee.library v53.0, AMarqueed v51.0)
-    New function STRPTR QGetLocalIP(struct QSession *)
	 It returns the local ip address of the interface that is connected to the session.
	 Valid as soon as the session is connected.
*    The documentation for QNewSessionAsync() said that your hostname would be
	 returned in the qm_Path when your are connected to the server. That's not true.
	 It will be /serverhostname/yourprogname
*    The datatype for argument two and three for the function QSetKeyAccessOp was wrong in the AMarquee_protos.h.
-    Added QGetHostName, QGetProgName and QGetLocalIP to the rexxamarquee.library.


52.2: () (amarquee.library v52.0, rexxamarquee.library v52.0, AMarqueed v51.0)
-    The include files were modified. Added support for more compilers in the pragma, clib
	 and proto files. Just copy over all of them to your include directories.

V52.1: () (amarquee.library v52.0, rexxamarquee.library v52.0, AMarqueed v51.0)
-    Added a unit for the FPC Pascal Compiler, and an example named AMarqueeTest.pas.
	 The AMarquee.i file for PCQ Pascal was also updated with varargs functions for the
	 new Tag-functions. The PCQ example named PascalTest.p was also updated to use a Tag-
	 function.
	 All those files were kindly given to me by Nils Sjöholm, author of the PCQ and the
	 Amiga port of FPC.

V52.0: (Public release 12-Aug-2000) (amarquee.library v52.0, rexxamarquee.library v52.0, AMarqueed v51.0)
*    This bug should have been fixed in v.51 but apperently wasn't :(
	 The QNew*Session() and QFreeSession() functions cleared the shared message port given
	 with the tag QSESSION_SHAREDMSGPORT.
	 Because of this misfunction there were problems when you created a new or freed an old
	 session while there were messages waiting in the message port. You should require at
	 least v.52 of amarquee.library when you use shared message ports.
	 Please understand that only one task, the one which created the shared message port, may
	 create and free sessions which are bound to the shared message port.

	 For any sessions please also understand that you must make sure that only one task at
	 one time use a specific session. This apply to all the Q*Op() functions, which could be
	 called from several tasks if the calls are serialized.
	 QFreeSession() may only be called from the task which owns the session, i.e. the task
	 which created the session or have taken over a session with QReattachSession().

V51.4: (Public release 06-Aug-2000) (amarquee.library v51.4, rexxamarquee.library v51.0, AMarqueed v51.0)
*    The qm_ActualLen in QMessage could sometimes be wrong with Socket Sessions from v50.
	 This probably didn't cause any trouble because you normally don't use that field.
*    Fixed some rare memory leakage.
-    Added a new feature for Socket-Sessions. Previously it was not very easy
	 to use these sessions. The data received from the other host could be
	 divided into several QMessages. And you couldn't explicitely tell AMarquee
	 to return only entire application transfer units. Instead you had to buffer
	 the data and copy all QMessages containing one transfer unit into your buffer.

	 To solve this problem I've added a couple of tags to use with QNewSocket*Session().
	 QRAWSESSION_PROTOCOLSTOPHOOK, QRAWSESSION_RECEIVE_EXCEEDING_DATA and
	 QRAWSESSION_PROTOCOLSTOPHOOK_USERDATA. Now communication with hosts not
	 using the AMarquee protocol should be as simple as if they did.
	 Take a look on the new examples named geturl_Hook1.c and geturl_Hook2.c.

*    The QNew*Session() and QFreeSession() functions cleared the shared message port given
	 with the tag QSESSION_SHAREDMSGPORT.
	 Because of this misfunction there were problems when you created a new or freed an old
	 session while there were messages waiting in the message port. You should require at
	 least v.51 of amarquee.library when you use shared message ports.
	 Please understand that only one task, the one which created the shared message port, may
	 create and free sessions which are bound to the shared message port.

	 For any sessions please also understand that you must make sure that only one task at
	 one time use a specific session. This apply to all the Q*Op() functions, which could be
	 called from several tasks if the calls are serialized.
	 QFreeSession() may only be called from the task which owns the session, i.e. the task
	 which created the session or have taken over a session with QReattachSession().

*    There were some trouble if you had set AMARQUEED_ALLOWBROWSE and AMARQUEED_RESTRICTBROWSE
	 on the AMarqueed server. This bug is fixed in this version of AMarqueed.
	 1. If a client program from one host connected more than once to amarqueed, the new client
	 is supposed to take over and kill the old client. Instead the old client got killed and the
	 new one failed to connect with error code QERROR_ACCESS_DENIED (Server Refused Connection).
	 2. Occasionally the host path set with AMARQUEED_RESTRICTBROWSE got banned from the server.
	 Both these problems happened on the AmiComSys/AMarquee server acs.hostile.cx. The last one
	 occured about once a month. That's the reason for the recent down times.
-    Improved documentation and added a standard autodoc for amarquee.library to the distribution.

V50.11a: (Public Release 8-Apr-2000) (amarquee.library v50.11, rexxamarquee.library v50.6, AMarqueed v49.7)
-    Added a amarquee.lib for use with vbccm68k C-compiler.
-    Modified the AMarquee_protos.h file to make it work with vbcc and other compilers.
-    AMarquee is Donationware. Now you could register online. See the Distribution section in the
	 guide for more info. 

V50.11: (Public Release 19-Mar-2000) (amarquee.library v50.11, rexxamarquee.library v50.6, AMarqueed v49.7)
-    amarquee.library now returns larger packets with a Socket-Session connection,
	 instead of several small packets.
-    Added function QSetMaxRawBufSize() to library. Use it to set the maximum buffer
	 size that shall be used with a Socket Session. This is the maximum size of the
	 QMessage you receive. As an option you can use the tag named QRAWSESSION_MAXBUFFERSIZE
	 with the QNewSocket*Session() call.
-    Updated rexxamarquee.library with the new function. Rexxamarquee.library v.50x
	 requires amarquee.library v.50 or better.
-    Modified QNewSession, QNewSessionAsync, QNewHostSession, QNewServerSession().
	 They now also take an additional argument with a tag list.
	 Old programs compiled for v.49 or less will still work.
	 New programs compiled for v.50 won't work with v.49 or less, so
	 the minimum version to require with the protos, fd, and pragmas which are
	 in the v.50+ AMarquee-package is 50.
	 Old source code using the new header-files must be updated.
-    A tag, QSESSION_ERRORCODEPTR, was added. Set it to a pointer to a LONG-variable
	 where you want the error code to be copied. This is needed because QNewSession() returns
	 NULL when it fails, i.e. you can't use QFreeSession() to find out why.
-    Dropped support for the INET225 version of amarquee.library. Is anybody using it?
-    Changed the error code which is returned by QFreeSession() or copied to the
	 QSESSION_ERRORCODEPTR variable when a connection to a server port failed.
	 When the QNewSocketSession(Async) function is used the return code is QERROR_NO_TCPSERVER
	 instead of QERROR_NO_SERVER. 
-    QCreateSharedMessagePort(), QDeleteSharedMessagePort() functions added to library.
-    Added the tag QSESSION_SHAREDMSGPORT.
-    Added example amarqueesharedmp.c to show how to use the new shared message port functions.
*    The qm_Path of the QMessage received when a asynchronious connection have been established
	 only contained the host name. It shall also contain the program name, like /hostname/progname,
	 when QNewSessionAsync() was used.
-    AMarqueed was not updated in this release.

V49.8 : (Public Release 16-May-1999) (amarquee.library v49.6, AMarqueed v49.7)
-    The current AMarqueed server name in the guide was updated.
*    The examples AMarqueeSocketDebug.c and AMarqueeSocketHost.c that demonstrates the
	 new QNewSocketSession() functions in amarquee.library v.49. They shall be correct now.
-    Add the examples GetURL.c and GetURL.rexx to the distribution. They show how to retreive
	 the index.html from a web-server. Both C and ARexx version included.

V49.7 : (Public Release 14-Feb-1999) (amarquee.library v49.6, AMarqueed v49.7)

*   The fd-file and the inline include file for GCC had errors.

*   Race condition in AMarqueed fixed. Could only happen when no host were
	connected to the server, and then suddenly two or more hosts connected to
	the server in exactly the same moment. The two connecting hosts would then
	be connected to two seperate isolated server instances running on the server
	computer.
	If those hosts were connecting with for example AmiComSys one of them would
	only see himself in the client list.    

-   Added AMARQUEED_RESTRICTBROWSE and AMARQUEED_ALLOWBROWSE environment variables

-   The library was not updated in this release.

V49.6 : (Public Release 16-Jan-1999) (amarquee.library v49.6)

 - AMarquee.library development taken over by Håkan Parting after Jeremy had ceased
   development for Amiga.
 * Fixed major bug in AMarqueed:
   In certain circumstances it was possible to get attributes one
   was not subscribing to. Eg. If a client subscribed to /happyhost.com/QAmiTrack/name
   and /nothappyhost.com/QAmiTrack/comment, one would get 'comment'  from happyhost.com
   and 'name' from nothappyhost.com in addition to what one wanted to receive.
   If you subscribed on /localhost/QAmiTrack/comment and /qamitrack.tibb.at/QAmiTrack/comment.
   You would receive two QMessages when one of these clients modify its data.
   (Thanks to myself for fixing this! :)  
 * Fixed certain things to make it compile right with DICE 3.0, instead of former DICE 2.0
   compilation.
 * Exchanged Forbid() and Permit() 's with Semaphores, so the multitasking won't get disabled
   in unnecessary situations.
 - JAVA 1.0.2 version of AMarquee, called JAMarquee, available at
   https://hem.passagen.se/hparting/jamarquee/
 - Moved the Arexx piece of code into a new library named, rexxamarquee.library. Use it instead
   of amarquee.library. The lib-offset is now -30 as with any other ARexx-function-library.
 - Added QNewSocketSession(), QNewSocketSessionAsync() and QNewSocketServerSession() functions
   to the library.
 - Added QSendRawOp() function to the library.
 - Added QSetKeyAccessOp() function to the library.
 - Added support for access restrictions on the keys in AMarqueed (for use with
   QSetKeyAccessOp()).
 * Fixed memory leakage that happened every time the client got a ping from the server :)
 - Added QGetHostName() and QGetProgName() functions to the library.
 
1.48 : (Public Release 10-Apr-98) (amarquee.library v48)
 * Both amarquee.library and AMarqueed could crash on 68000
   or 68010 processors, as they didn't always keep data 
   aligned to word boundaries.  Fixed.  (Thanks to Mike
   Constantine for his help with this!)

1.47 : (Public Release 20-Feb-98) (amarquee.library v47)
 - Added a QGOF_NOTIFY flag to QGo().
 - Added the QDetachSession() and QReattachSession() functions to
   amarquee.library.
 - Added AMarqueeDebugMultiThreaded.c to the testPrograms
   directory, as a test/demonstration of the new functions.
 - Optimized the transport code somewhat, to cut down on the number
   of memory allocations, and the amount of memory used.
 - Added Session.h to the distribution.  Session.h contains a C++ 
   "wrapper" class named Session, that represents a QSession in a nice
   object-oriented manner.
 - Added AMarqueeDebug.cpp to the Example Clients directory.
 * Added the link to the QErrorName documentation that was
   overlooked before in the API listing.
 * Fixed the parsing of arguments in the ARexx version of QGo().

1.46 : (Public Release 7-Dec-97) (amarquee.library v46)
 - ARexx support!  amarquee.library is now usable by ARexx scripts.
 - Added the QGetAndSubscribeOp() function to amarquee.library.
 - Added amarqueedebug.rexx, amarqueehost.rexx, sysmessage.rexx,
   and killclients.rexx to the sample programs directory.
 * Fixed a bug in AMarqueed that prevented QRenameOp events from
   being broadcast to other clients correctly--the deletion of
   the old name would be sent, but not the creation of the new one.
 * QNewHostSession() was broken under Inet225.  Fixed it.  (Thanks
   to Raj for reporting this!)
 * Fixed a minor bug that would cause an unwarranted update message
   to be sent to any client that had received a QMessageOp message
   from a client whose root node it was monitoring via QSubscribeOp.  
   
1.45 : (Public Release 2-Nov-97) (amarquee.library v45)
 - Added Inet225 versions of amarquee.library and AMarqueed.
   Now all amarquee.library based programs can run, without
   modification, on both AmiTCP and Inet225 systems!
   Furthermore, Inet225 systems can be AMarquee servers.
 - Added Pascal headers and a link library, AMarquee.lib.  
   Now amarquee.library can be used by PCQ programs!
 - Extended the Installer script to install to Inet225,
   and to (optionally) install the PCQ specific files.
   It also helps you set the new env variables (described below)
 - Added the QRequestPrivilegesOp, QReleasePrivilegesOp, and
   QKillClientsOp functions to amarquee.library.
   With these functions, favored clients can request 
   special abilities from the server.
 - Added the AMARQUEED_KILLCLIENTS, AMARQUEED_ADMIN, 
   AMARQUEED_SENDSYSMESSAGES and AMARQUEED_ALLPRIVILEGES env variables to 
   AMarqueed, to allow the site administrator to specify who can 
   get special abilities.
 - Added the AMARQUEED_MAXQUEUEDMESSAGES env variable to
   AMarqueed.  This setting allows you to have AMarqueed 
   automatically disconnect clients who are getting too
   far behind in their duties (due to e.g. a bad TCP connection
   to their client), so that they don't eat up all your
   memory.
 - Added the QGetParameterOp and QSetParameterOp functions to
   amarquee.library, so that client programs may get or set
   certain parameters on the server.
 - Added client-to-server ping logic to amarquee.library.
   Now your client should know within 10 minutes that the
   server has crashed/gone offline, even if it didn't go down 
   "gracefully", and your connection was idle the whole time.
 * Fixed a typo in the .fd file that was causing QErrorName
   to return incorrect results.
 * Fixed a bug in the server-to-client ping logic.  The server
   should detect "dead" client connections somewhat more quickly now.
 * Fixed a bug in the access-control logic.  Before, QSetAccessOp kept
   other clients from "seeing" even the root node of its client, rather
   than just the contained data--making the client effectively invisible
   to other clients.
 * Server now sends a QERROR_UNIMPLEMENTED message when it gets
   a packet it doesn't know the type of, rather than disconnecting
   the client.  This should ease compatibility problems in the future.

1.44 : (Public Release 3-Jun-97) (amarquee.library v44)
 - Added the QNumQueuedPackets and QNumQueuedBytes functions to
   amarquee.library.
 - Added the QErrorName function to amarquee.library
 - Added some additional QERROR_* codes, and added a return value
   to QFreeSession so that it can return them.

1.43 : (Public Release 27-Apr-97) (amarquee.library v43)
 * amarquee.library's QMessage freeing system had a design
   flaw that was causing Enforcer hits and memory leaks.  Fixed that,
   and as a side effect, FreeQMessage is now much more efficient.
 * Fixed a bug in QFreeSession that would cause it to deadlock
   and hang the calling process when freeing QSessions that were
   allocated with QNewHostSession.
 * Fixed some typos, layout errors, and anachronisms in the .guide file.
 
1.41 : (Public Release 17-Apr-97) (amarquee.library v42)
 * Fixed a nasty race condition in amarquee.library that could
   cause crashes and/or memory leaks if the priority of the TCP 
   client thread was different from that of the user's thread.
   Thanks to Håkan Parting and Markus Lamers for reporting this bug!

1.40 : (Public Release 8-Apr-97) (amarquee.library v41)
 - Added QNewSessionAsync to amarquee.library.
   Now you can connect without temporarily freezing up your GUI!
 * The Installer script now puts "resident AMarquee pure" into
   the user-startup, so that residenting will still work even if
   AMarqueed's PURE bit isn't set.
   
1.30ß : (Public Beta Release 9-Feb-97) (amarquee.library v40)
 - Both AMarqueed and amarquee.library flush their TCP output buffer
   after each transaction group has finished being queued.  This causes
   the packets to be sent sooner, allowing for faster response times.
 - Added code to SillyGame that syncs with the AMarquee server on
   exit, so that the player's marker will disappear from the other
   clients' SillyGame windows when he exits.
 - Changed the behavior of QSessions created by QNewHostSession.
   Now transactions sent to them while they are still unconnected
   will cause QERROR_NO_CONNECTION QMessages to be returned.
 - Changed QNewHostSession() to allow automatic port selection by 
   the TCP stack.
 - The Installer script now supports Miami.  (Thanks to Fredrik
   Rambris for providing this)
 - Added an example section to all the man pages in the docs.
 * Rewrote the client TCP thread shutdown code to be synchronous.
   Before, the library sent a signal to cause the TCP thread to quit,
   and this could cause the last transaction to be dropped.  I think
   this was the bug that was causing SillyGame to crash occasionally.

1.20ß : (Public Beta Release 4-Feb-97) (amarquee.library v39)
 - Changed AMarqueed's behavior when a hostName/progName duplicate
   occurs.  Before, the new connection was denied.  Now, the old
   connection quits to make room for the new one, and the new 
   connection proceeds normally.
 - Added an idle-time ping/timeout capability to AMarqueed,
   so that dead clients are detected and removed in a reasonable 
   amount of time.  Also added the AMARQUEED_PINGRATE env 
   variable option.
 * Bumped amarquee.library's revision number to v39 (it
   was at v37 in both release 1.10ß and 1.00ß)
 * Amarquee TCP handling threads now do the right thing 
   when AmiTCP is shutting down (they send a QERROR_NO_CONNECTION
   to the user program and close SocketBase).

1.10ß : (Public Beta Release 28-Jan-97) (amarquee.library v38)
 - Added the QStreamOp function to the amarquee API.
 - Added the QMessageOp function to the amarquee.library API.
 - Added the QSetMessageAccessOp function to the amarquee.library API.
 - Added the QNewServerSession function to the amarquee API.
   Now you can use amarquee.library to make AmiTCP/inetd 
   style server programs.
 - Added the QNewHostSession function to the amarquee API.
   Now you can connect directly to other amarquee clients if
   you wish, rather than sending all data through the server.
 - Added the AMARQUEED_PRIORITY env variable option.
 - Added the AMARQUEED_FAKECLIENT env variable option.
 - Rewrote AMarqueed to support streaming data.
	  
1.00ß : (Public Beta Release 15-Jan-96) (amarquee.library v37)
 - First beta release.
	

Converted on 04 May 2002 with RexxDoesAmigaGuide2HTML 2.1e(private) by Michael Ranner.