From a3607755c836532a6a6e3cb8acc911b8cf2b61da Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 13 Mar 2004 12:31:29 +0000 Subject: Give udev some time to create the RFCOMM device nodes --- rfcomm/main.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'rfcomm') diff --git a/rfcomm/main.c b/rfcomm/main.c index 17cb14b6..68396b5e 100644 --- a/rfcomm/main.c +++ b/rfcomm/main.c @@ -250,7 +250,7 @@ static void cmd_connect(int ctl, int dev, bdaddr_t *bdaddr, int argc, char **arg struct sigaction sa; struct pollfd p; char dst[18], devname[MAXPATHLEN]; - int sk, fd, alen; + int sk, fd, alen, try = 3; laddr.rc_family = AF_BLUETOOTH; bacpy(&laddr.rc_bdaddr, bdaddr); @@ -270,7 +270,6 @@ static void cmd_connect(int ctl, int dev, bdaddr_t *bdaddr, int argc, char **arg fprintf(stderr, "Can't find a config entry for rfcomm%d\n", dev); return; } - } else { raddr.rc_family = AF_BLUETOOTH; str2ba(argv[1], &raddr.rc_bdaddr); @@ -322,7 +321,11 @@ 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) { snprintf(devname, MAXPATHLEN - 1, "/dev/bluetooth/rfcomm/%d", dev); - if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { + while ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { + if (try--) { + sleep(1); + continue; + } perror("Can't open RFCOMM device"); close(sk); return; @@ -377,7 +380,7 @@ static void cmd_listen(int ctl, int dev, bdaddr_t *bdaddr, int argc, char **argv struct sigaction sa; struct pollfd p; char dst[18], devname[MAXPATHLEN]; - int sk, nsk, fd, alen; + int sk, nsk, fd, alen, try = 3; laddr.rc_family = AF_BLUETOOTH; bacpy(&laddr.rc_bdaddr, bdaddr); @@ -425,7 +428,11 @@ static void cmd_listen(int ctl, int dev, bdaddr_t *bdaddr, int argc, char **argv snprintf(devname, MAXPATHLEN - 1, "/dev/rfcomm%d", dev); if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { snprintf(devname, MAXPATHLEN - 1, "/dev/bluetooth/rfcomm/%d", dev); - if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { + while ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { + if (try--) { + sleep(1); + continue; + } perror("Can't open RFCOMM device"); close(sk); return; -- cgit