* Updated some of the documentation
[citadel.git] / citadel / techdoc / hack.txt
index 321a2ea1579a7d04eca80595e15d3865095a25ea..90bbe404adc93d9f3453f27771ac62035071a8f5 100644 (file)
@@ -1,5 +1,5 @@
  hack.txt for Citadel/UX
written by Art Cancro (ajc@uncnsrd.mt-kisco.ny.us)
(some of this stuff is *very* out of date.)
    
    Much of this document is borrowed from the original hack.doc from
 Citadel-CP/M and Citadel-86, because many of the concepts are the same.  Hats
@@ -78,16 +78,17 @@ all software should be written to IGNORE fields not currently defined.
 BYTE   Mnemonic        Comments
 
 A      Author          Name of originator of message.
-B      Phone number    The dialup number of the system this message
-                       originated on.  This is optional, and is only
-                       defined for helping implement C86Net gateways.
 D      Destination     Contains name of the system this message should
                        be sent to, for mail routing (private mail only).
-G      Gateway domain  This field is provided solely for the implementation
-                        of C86Net gateways, and holds the C86Net domain of
-                        the system this message originated on.  Unless you're
-                        implementing such a gateway, there's no need to even
-                        bother with this field.
+E      Extended ID     A persistent alphanumeric Message ID used for
+                       network replication.  When a message arrives that
+                       contains an Extended ID, any existing messages which
+                       contain the same Extended ID and are *older* than this
+                       message should be deleted.  If there exist any messages
+                       with the same Extended ID that are *newer*, then this
+                       message should be dropped.
+F      rFc822 address  For Internet mail, this is the delivery address of the
+                       message author.
 H      HumanNodeName   Human-readable name of system message originated on.
 I      Original ID     A 32-bit integer containing the message ID on the
                        system the message *originated* on.
@@ -105,8 +106,11 @@ S       Special field   Only meaningful for messages being spooled over a
                         network.  Usually means that the message isn't really
                         a message, but rather some other network function:
                         -> "S" followed by "FILE" (followed by a null, of
-                        course) means that the message text is actually an
-                        IGnet/Open file transfer.
+                           course) means that the message text is actually an
+                           IGnet/Open file transfer.
+                       -> "S" followed by "CANCEL" means that this message
+                          should be deleted from the local message base once
+                          it has been replicated to all network systems.
 T      Date/Time       A 32-bit integer containing the date and time of
                         the message in standard UNIX format (the number
                         of seconds since January 1, 1970 GMT).
@@ -166,23 +170,19 @@ The above discussion should make the function of the fields reasonably clear:
     cycling under control.
 
 (Uncoincidentally) the format used to transmit messages for networking
-purposes is precisely that used on disk, except that there may be any amount
-of garbage between the null ending a message and the <FF> starting the next
-one.  This allows greater compatibility if slight problems crop up. The current
-distribution includes netproc.c, which is basically a database replicator;
+purposes is precisely that used on disk, serialized.  The current
+distribution includes serv_network.c, which is basically a database replicator;
 please see network.txt on its operation and functionality (if any).
 
                        Portability issues
  
- At this point, all hardware-dependent stuff has been removed from the 
-system.  On the server side, most of the OS-dependent stuff has been isolated
-into the sysdep.c source module.  The server should compile on any POSIX
-compliant system with a full pthreads implementation and TCP/IP support.  In
-the future, we may try to port it to non-POSIX systems as well.
+ Citadel/UX is 64-bit clean, architecture-independent, and Year 2000
+compliant.  The software should compile on any POSIX compliant system with
+a full pthreads implementation and TCP/IP support.  In the future we may
+try to port it to non-POSIX systems as well.
  
  On the client side, it's also POSIX compliant.  The client even seems to
-build ok on non-POSIX systems with porting libraries (such as the Cygnus
-Win32 stuff).
+build ok on non-POSIX systems with porting libraries (such as Cygwin).
   
 
                    "Room" records (quickroom)