XEROX FTPSERVER-MULTI-CONNECTIONS 2 4 1 FTPSERVER-MULTI- CONNECTIONS 1 4 By: Matt Heffron (BEC.HEFFRON@ECLA.USC.EDU) Requires: FTPSERVER, FTPSERVERPATCH and DPUPFTPPATCH INTRODUCTION This package (actually a complimentary pair of files) extends the capabilities of the Lisp Library FTPSERVER package to support multiple simultaneous connections between Xerox 11xx series AI workstations. It also includes Ron Clarke's fixes for GETFILEINFO from an FTPSERVER. INSTALLATION To install this package, load the FTPSERVERPATCH.LCOM file on the 11xx machine(s) that are to be servers (this will load FTPSERVER if it is not already loaded). Then load the DPUPFTPPATCH.LCOM file on any of the 11xx machines that are to be clients of these servers. You must set the value of IL:*FTP.NEGOTIATED.CONNECTION.HOSTS* on each of the client machines to specify the server machines that support the FTPSERVERPATCH system of multiple simultaneous connections (below). VARIABLES IL:*FTP.NEGOTIATED.CONNECTION.HOSTS* [Global Variable] This variable must be set to specify the server machines that support the FTPSERVERPATCH system of multiple simultaneous connections. Its value is a list of PUP host numbers. (Specifically, it is a list of the values of (CAR (BESTPUPADDRESS )) for each of the server machines.) HOW IT WORKS This package modifies the DPUPFTP code of the client machines, so that when it is trying to open an FTP connection BSP stream, it first checks to see if the server host is one of the IL:*FTP.NEGOTIATED.CONNECTION.HOSTS*, and if so, it sends a message to the modified FTPSERVER on that system (using PUP type \PT.NEGOTIATED.CONNECTION (= 128) on PUP socket \PUPSOCKET.NEGOTIATED.CONNECTION (=63)). The server machine creates a socket for this connection and starts a standard FTPSERVER listener process on this socket, and returns the socket number to the client. (The process is modified so it will go away when the connection is closed instead of lingering forever.) The client uses the returned socket number for the connection instead of \PUPSOCKET.FTP. If the server is NOT on IL:*FTP.NEGOTIATED.CONNECTION.HOSTS*, or fails to respond within 10 seconds with the new socket number, then \PUPSOCKET.FTP is used. When the negotiated connection server is started on the server machine (with the incantation (FTPSERVER) which is the original FTPSERVER start up), it also will start up a permanent FTPSERVER listener on \PUPSOCKET.FTP so regular connection requests can be handled. ACKNOWLEDGEMENTS Thanks to Tom Lipkis of Savoir for suggesting this sort of scheme, and to Ron Clarke of Xerox for his patches for GETFILEINFO.(LIST ((PAGE NIL (PAPERSIZE LETTER STARTINGPAGE# 96) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO NIL) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE NIL . LETTER) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO NIL) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE NIL . LETTER) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO NIL) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL)))))1ÈÈ(È(È (È(ŠŠ8(ŠŠ8DÈÈ PAGEHEADING RUNNINGHEADTERMINAL  HELVETICA MODERN MODERN MODERN MODERNMODERN LOGO HRULE.GETFNMODERN  HRULE.GETFNMODERN  HRULE.GETFNMODERN  HRULE.GETFNMODERN  HRULE.GETFNMODERN -5  ß $Þ# ö D U~ u?zº