|
From: Mattias A. <mat...@us...> - 2001-06-06 15:06:00
|
The following file was modified in apps/bluetooth/experimental:
Name Old version New version Comment
---- ----------- ----------- -------
modememul.c 1.7 1.8=20=20=20=20=20=20=20=20=20=20=20=20=20
The accompanying log:
* Added call to setsid =3D> become session leader to catch SIGHUPS
* Removed O_NOCTTY flag when opening ttyBTx
The diff of the modified file(s):
--- modememul.c 2001/05/17 10:36:36 1.7
+++ modememul.c 2001/06/06 15:06:00 1.8
@@ -83,8 +83,8 @@
void
sighandler(int sig)
{
- syslog(LOG_INFO, "got signal %d\n", sig);
- if (sig =3D=3D SIGQUIT)
+ syslog(LOG_INFO, "got signal %d", sig);
+ if ((sig =3D=3D SIGQUIT) || (sig =3D=3D SIGTERM || (sig =3D=3D SIGHUP)))
{
syslog(LOG_INFO, "Modem emulator exiting\n");
exit(0);
@@ -100,7 +100,9 @@
act.sa_handler =3D sighandler;
sigemptyset(&act.sa_mask);
act.sa_flags =3D 0;
+ sigaction(SIGHUP, &act, 0);
sigaction(SIGQUIT, &act, 0);
+ sigaction(SIGTERM, &act, 0); /* Received when kill cmd is used */
}
=20
int
@@ -110,15 +112,16 @@
int speed =3D 0;
int done =3D 0;
=20
- speed =3D atoi(argv[2]);
+ setsid(); /* become session leader (to catch SIGHUPS) */=20=20
+ init_sighandler();
=20
- syslog(LOG_INFO, "Opening %s (%d baud) for modem emulation\n",
- argv[1], speed);
+ speed =3D atoi(argv[2]);
=20
while (done !=3D START_PPP)
{
- syslog(LOG_INFO, "Open %s", argv[1]);
- if ((btfd =3D open(argv[1], O_RDWR | O_NOCTTY)) < 0)
+ syslog(LOG_INFO, "Starting modem emulator on %s\n", argv[1]);
+
+ if ((btfd =3D open(argv[1], O_RDWR, 0)) < 0)
{
perror("open");
exit(1);
@@ -126,11 +129,9 @@
=20
/* not necessary for BT devices... */
fd_setup(btfd, speed, USE_NO_FLOW, DONT_USE_BCSP);
-
- syslog(LOG_INFO, "done.");
done =3D modem_emulator(btfd);
- syslog(LOG_INFO, "Exit modem emulator");
close(btfd);
+ syslog(LOG_INFO, "Closing %s", argv[1], speed);=20=20
}
=20
/* replace first arg with pppd instead of modem emulator=20
@@ -154,6 +155,7 @@
fd_set rfd;
=20
syslog(LOG_INFO, "Modem emulator starting\n");
+
while (!done)
{=20=20
FD_ZERO(&rfd);=20
@@ -165,7 +167,7 @@
int len =3D read(bt_fd, &data, 128);=20=20=20=20=20=20
data[len] =3D 0;
=20=20=20=20=20=20=20
- D(syslog(LOG_INFO, "Modem emulator got %d bytes\n", len));
+ syslog(LOG_INFO, "Modem emulator got %d bytes\n", len);
=20=20=20=20=20=20=20
if (len <=3D 0)
return RESTART;=20=20=20=20=20=20
@@ -174,7 +176,6 @@
=20
for (i =3D 0; i < len; i++)
{
-
if ((data[i] =3D=3D PPP_FLAGSEQUENCE))
{
if ((len - i) >=3D 7)
|