$Log$
+ Revision 573.67 2001/01/15 16:30:31 ajc
+ * temporary implementation of 901 asynchronous express messages
+
Revision 573.66 2001/01/14 14:55:39 ajc
* Changed the format of <.W>holist <L>ong
Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
* Initial CVS import
+
phree(ptr);
}
+/*
+ * Asynchronously deliver express messages'
+ */
+void cmd_gexp_async(void) {
+
+ /* Only do this if the session can handle asynchronous protocol */
+ if (CC->is_async == 0) return;
+
+ /* And don't do it if there's nothing to send. */
+ if (CC->FirstExpressMessage == NULL) return;
+
+ cprintf("%d express msg\n", ASYNC_MSG + ASYNC_GEXP);
+ cmd_gexp("");
+}
/*
* Back end support function for send_express_message() and company
CtdlRegisterProtoHook(cmd_sexp, "SEXP", "Send an express message");
CtdlRegisterProtoHook(cmd_dexp, "DEXP", "Disable express messages");
CtdlRegisterProtoHook(cmd_reqt, "REQT", "Request client termination");
+ CtdlRegisterSessionHook(cmd_gexp_async, EVT_CMD);
CtdlRegisterSessionHook(delete_express_messages, EVT_STOP);
CtdlRegisterXmsgHook(send_express_message, XMSG_PRI_LOCAL);
return "$Id$";
When asynchronous protocol mode is in effect, the client MUST handle any
asynchronous messages as they arrive, before doing anything else.
+
+
+
+
+ ASYNCHRONOUS MESSAGES
+ ---------------------
+
+ When the client protocol is operating in asynchronous mode (please refer to
+the writeup of the ASYN command above), the following messages may arrive at
+any time:
+
+
+ 901 (express message arriving)
+
+ There is an express message intended for this client. When the client
+receives this message, it MUST act as if it just sent a GEXP command (the data
+following the 901 message WILL be a LISTING_FOLLOWS data transfer; in fact,
+the current implementation simply executes a GEXP command internally).