Properly distinguish 3 different cases:

No redial command. Empty redial command. Non-empty redial command.
Pointed-by: bde
This commit is contained in:
Andrey A. Chernov 1996-03-12 23:14:45 +00:00
parent 29b5d06655
commit da1842c866
2 changed files with 23 additions and 10 deletions

View File

@ -31,7 +31,7 @@
.\"
.\" @(#)slattach.8 6.4 (Berkeley) 3/16/91
.\"
.\" $Header: /home/ncvs/src/sbin/slattach/slattach.8,v 1.9 1996/01/29 23:52:39 mpp Exp $
.\" $Header: /home/ncvs/src/sbin/slattach/slattach.8,v 1.10 1996/02/17 19:21:40 ache Exp $
.\"
.Dd April 4, 1993
.Dt SLATTACH 8
@ -99,7 +99,13 @@ to prevent slow lines being saturated by ICMP responses.
.It Fl r Ar redial-command
Specifies a command to be invoked within a shell
.Ql sh \-c Ar redial-command
whenever carrier is lost on the line.
whenever carrier is lost on the modem line.
Empty
.Ar redial-command
i.e.
.Fl r Qq ""
cause connection reestablishing on leased line
without any external command invoked.
.It Fl s Ar baudrate
Specifies the speed of the connection. If not specified, the
default of 9600 is used.

View File

@ -239,8 +239,7 @@ int main(int argc, char **argv)
kill (getpid(), SIGHUP);
} else
configure_network();
}
else
} else
configure_network(); /* configure the network if needed. */
for (;;) {
@ -450,14 +449,18 @@ void configure_network()
void sighup_handler()
{
if(exiting) return;
again:
acquire_line(); /* reopen dead line */
if (redial_cmd == NULL) {
syslog(LOG_NOTICE,"SIGHUP on %s (sl%d); exiting", dev, unit);
exit_handler(1);
}
again:
/* invoke a shell for redial_cmd or punt. */
if (redial_cmd) {
if (*redial_cmd) {
syslog(LOG_NOTICE,"SIGHUP on %s (sl%d); running '%s'",
dev, unit, redial_cmd);
acquire_line(); /* reopen dead line */
setup_line(CLOCAL);
syslog(LOG_NOTICE,"SIGHUP on %s (sl%d); running %s",
dev,unit,redial_cmd);
if (locked) {
if (uucp_lock)
uu_unlock(dvname); /* for redial */
@ -487,12 +490,16 @@ void sighup_handler()
}
} else
setup_line(0);
} else {
} else { /* Empty redial command */
syslog(LOG_NOTICE,"SIGHUP on %s (sl%d); reestablish connection",
dev, unit);
acquire_line(); /* reopen dead line */
setup_line(0); /* restore ospeed from hangup (B0) */
/* If modem control, just wait for carrier before attaching.
If no modem control, just fall through immediately. */
if (!(modem_control & CLOCAL)) {
int carrier = 0;
syslog(LOG_NOTICE, "Waiting for carrier on %s (sl%d)",
dev, unit);
/* Now wait for carrier before attaching line. */