summaryrefslogtreecommitdiffstats
path: root/rfcomm
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2004-04-09 15:37:46 +0000
committerMarcel Holtmann <marcel@holtmann.org>2004-04-09 15:37:46 +0000
commitfb022821661f5cc051061fe01818d58bad4cfd06 (patch)
tree217b175bbb1a7934b467bfb16f184203130bc784 /rfcomm
parent83e17dd1c277876889fee5334ef9eb09713f5331 (diff)
Try to release the TTY if no device node is found
Diffstat (limited to 'rfcomm')
-rw-r--r--rfcomm/main.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/rfcomm/main.c b/rfcomm/main.c
index 52701d40..5d061fb7 100644
--- a/rfcomm/main.c
+++ b/rfcomm/main.c
@@ -323,14 +323,21 @@ static void cmd_connect(int ctl, int dev, bdaddr_t *bdaddr, int argc, char **arg
}
snprintf(devname, MAXPATHLEN - 1, "/dev/rfcomm%d", dev);
- if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) {
+ while ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) {
snprintf(devname, MAXPATHLEN - 1, "/dev/bluetooth/rfcomm/%d", dev);
- while ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) {
+ if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) {
if (try--) {
+ snprintf(devname, MAXPATHLEN - 1, "/dev/rfcomm%d", dev);
sleep(1);
continue;
}
perror("Can't open RFCOMM device");
+
+ memset(&req, 0, sizeof(req));
+ req.dev_id = dev;
+ req.flags = (1 << RFCOMM_HANGUP_NOW);
+ ioctl(ctl, RFCOMMRELEASEDEV, &req);
+
close(sk);
return;
}