[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Modems - hack



    Date: Thu, 1 Nov 90 14:26 PST
    From: JFK@BOLD-EAGLE.varian.dialnet.symbolics.com (Joe F. Karnicky)

	Date: Wed, 31 Oct 90 17:37 CST
	From: cj@GUINEVERE.tamu.edu (Chuan Jun Su)

	....
	Is it possible to use a Hayes compatible?
	....

    I am currently using a Hayes smartmodem 1200 in
    autoanswer mode and it seems to work pretty well
    with the following reservations:

    (1) I had to modify the defmethod (:dial-the-phone hayes-modem) in
    modems.lisp to get my modem to use dial tones rather than pulse dialing.
    I was told how to accomplish this same result by changing the subnets
    patterns, but I forget how to do it.

    (2) Frequently, my system gets into a state where it is not possible for
    me to successfully probe Riverside.   My modem goes off hook, dials,
    Riverside answers, and I see a carrier detect.  However, the carrier is
    then immediately lost.   This seems to be a Riverside-specific problem
    as I can successfully dial up other (non-Symbolics) computers.
    I'm currently working with Symbolics software support on sorting out
    what's going on.
    (any suggestions?)

    Regards,
    Joe

I have been having quite a war with what I take to be the same problem
as yours. In the short term, I wrote a fix that actually keeps the
mailer operational. Hoping that this is of use - and not too hideous.

;;; -*- Mode: LISP; Syntax: Common-lisp; Package: USER; Base: 10 -*-

;;; Pole Dialnet at intervals to check whether it is jammed, if so restart it.
;;; To do: post notification into S&F mail Log window

(defun FIND-DIALNET-PROCESS ()
  (process:map-over-active-processes
    #'(lambda (process) (when (let ((name (process-name process)))
				(and (string-search "Dialnet" name)
				     (string-search "answerer" name)))
				     ;;eg. "Dialnet unit 1 answerer"
			  (return-from find-dialnet-process process)))))

(defun FIND-SMTP-PROCESS ()
  (process:map-over-active-processes
    #'(lambda (process)
	(when (string-search "SMTP server" (process-name process))
	  (return-from find-smtp-process process)))))

(defvar *TIME-BEFORE-DIALNET-PROCESSES-ARE-DECLARED-HUNG* (* 60 60 10)
  "10 minutes")

(defun TEST-FOR-HUNG-DIALNET ()
  (let ((process-1 (find-dialnet-process))
	(process-2 (find-smtp-process)))
    (flet ((hung-process-p (process)
	     (and process
		  (string-search "Serial" (send process :whostate))
		  (zerop (process:percent-utilization process))
		  (> (process:process-idle-time process)
		     *time-before-dialnet-processes-are-declared-hung*))))
      (values
	(or (hung-process-p process-1)
	    (hung-process-p process-2))
	process-1 process-2))))

(defun FIX-DIALNET-IF-NECESSARY ()
  (if (not (test-for-hung-dialnet))
      "Dialnet OK"
      (send dial:*dialnet-dial-network* :reset-dialnet-interfaces)
      (send dial:*dialnet-dial-network* :enable-dialnet-interfaces)
      (tv:notify nil "Hung Dialnet has been reset")))

(defvar *DIALNET-CHECK-TIMER* nil)

(defun PUT-DIALNET-MONITOR-ON-TIMER-QUEUE (&optional (repeat-interval (* 60 15)))	; 15 minutes
  (unless *dialnet-check-timer*
    (setq *dialnet-check-timer*
	  (process:create-timer-call #'put-dialnet-monitor-on-timer-queue
				     (list repeat-interval)
				     :name "Dialnet Check")))
  (fix-dialnet-if-necessary)
  (process:reset-timer-relative *dialnet-check-timer* repeat-interval))

(add-initialization "Start Dialnet Checker" '(put-dialnet-monitor-on-timer-queue) '(:cold))