;;; -*- Mode:Lisp; Readtable:CL; Package:USER; Base:10; Patch-File:T -*- ;;; Patch file for System version 123.139 ;;; Reason: ;;; UDP RWHO Server process no longer just dies when it's UDP socket is ;;; closed -- it waits for UDP to be enabled and opens it again. ;;; Written 4-Dec-87 11:44:30 by pld at site Gigamos Cambridge ;;; while running on Jack Flanders from band 2 ;;; with Experimental System 123.138, Experimental Local-File 73.3, Experimental FILE-Server 22.1, Experimental Unix-Interface 11.0, Experimental Tape 18.0, Experimental KERMIT 34.0, Experimental ZMail 71.0, Experimental Lambda-Diag 15.0, microcode 1754, SDU Boot Tape 3.12, SDU ROM 8. ; From modified file DJ: L.NETWORK.IP-TCP.SERVER; UDP-RWHO-SERVER.LISP#29 at 4-Dec-87 11:44:31 #10R TCP-APPLICATION#: (COMPILER-LET ((*PACKAGE* (GLOBAL:PKG-FIND-PACKAGE "TCP-APPLICATION"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; IP-TCP; SERVER; UDP-RWHO-SERVER  " (defun udp-rwho-server-process () (loop (process-wait "UDP Enable" #'(lambda () (and udp:*udp-stream* (udp:udp-enabled udp:*udp-stream*)))) (with-open-stream (stream (send (make-instance 'udp:udp-stream) :open "RWHO Server" :local-port (sym ipport-whoserver))) (broadcast-rwho-packet stream) (loop (unless (time-lessp (zl:time) *udp-rwho-server-next-broadcast-time*) (broadcast-rwho-packet stream)) (when (send stream :listen) (multiple-value-bind (packet length remote-port remote-address) (send stream :read-packet (udp:get-udp-buffer)) (declare (ignore remote-port)) (unless packet ;;socket closed, UDP shut down, whatever... (return nil)) (setf (rwho-recv-time packet) (fudge-ut-to-unix (get-universal-time))) (setf (fill-pointer packet) length) (let ((buffer (make-array length :element-type '(unsigned-byte 8)))) (copy-array-contents packet buffer) (insert-rwho-packet remote-address buffer)))) (process-wait "RWHO Packet Send/Recv" #'(lambda (s) (or (send s :listen) (not (time-lessp (zl:time) *udp-rwho-server-next-broadcast-time*)))) stream))))) )) ; From modified file DJ: L.NETWORK.IP-TCP.SERVER; UDP-RWHO-SERVER.LISP#29 at 4-Dec-87 11:44:46 #10R TCP-APPLICATION#: (COMPILER-LET ((*PACKAGE* (GLOBAL:PKG-FIND-PACKAGE "TCP-APPLICATION"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; IP-TCP; SERVER; UDP-RWHO-SERVER  " (send *udp-rwho-server-process* :reset) ))