aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-helper-transport-bluetooth.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2014-06-17 20:23:42 +0000
committerChristian Grothoff <christian@grothoff.org>2014-06-17 20:23:42 +0000
commitce22207c5cd930ec86a558c1a908148ee7c938b4 (patch)
tree43c65ca77b6e80ecb941d66aeeeb1bdd80669dc4 /src/transport/gnunet-helper-transport-bluetooth.c
parente41de7ea55c318ee24a707a1002b69ba1c6402d1 (diff)
downloadgnunet-ce22207c5cd930ec86a558c1a908148ee7c938b4.tar.gz
gnunet-ce22207c5cd930ec86a558c1a908148ee7c938b4.zip
-check 'socket' call return value, handle failure
Diffstat (limited to 'src/transport/gnunet-helper-transport-bluetooth.c')
-rw-r--r--src/transport/gnunet-helper-transport-bluetooth.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/transport/gnunet-helper-transport-bluetooth.c b/src/transport/gnunet-helper-transport-bluetooth.c
index af460c832..42bb96f53 100644
--- a/src/transport/gnunet-helper-transport-bluetooth.c
+++ b/src/transport/gnunet-helper-transport-bluetooth.c
@@ -1538,22 +1538,33 @@ stdin_send_hw (void *cls, const struct GNUNET_MessageHeader *hdr)
1538 addr_rc.rc_channel = get_channel (dev, addr_rc.rc_bdaddr); 1538 addr_rc.rc_channel = get_channel (dev, addr_rc.rc_bdaddr);
1539 1539
1540 *sendsocket = socket (AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM); 1540 *sendsocket = socket (AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
1541 if (connect (*sendsocket, (struct sockaddr *)&addr_rc, sizeof (addr_rc)) == 0) 1541 if ( (-1 < *sendsocket) &&
1542 (0 == connect (*sendsocket,
1543 (struct sockaddr *) &addr_rc,
1544 sizeof (addr_rc))) )
1542 { 1545 {
1543 neighbours.fds[neighbours.pos++] = *sendsocket; 1546 neighbours.fds[neighbours.pos++] = *sendsocket;
1544 connection_successful = 1; 1547 connection_successful = 1;
1545 char addr[19] = { 0 }; 1548 char addr[19] = { 0 };
1546 ba2str (&(neighbours.devices[neighbours.pos - 1]), addr); 1549 ba2str (&(neighbours.devices[neighbours.pos - 1]), addr);
1547 fprintf (stderr, "LOG : Connected to %s\n", addr); 1550 fprintf (stderr, "LOG : Connected to %s\n", addr);
1548
1549 break; 1551 break;
1550 } 1552 }
1551 else 1553 else
1552 { 1554 {
1553 char addr[19] = { 0 }; 1555 char addr[19] = { 0 };
1554 errno_copy = errno; //Save a copy for later 1556 errno_copy = errno; //Save a copy for later
1557
1558 if (-1 != *sendsocket)
1559 {
1560 (void) close (*sendsocket);
1561 *sendsocket = -1;
1562 }
1555 ba2str (&(neighbours.devices[neighbours.pos]), addr); 1563 ba2str (&(neighbours.devices[neighbours.pos]), addr);
1556 fprintf (stderr, "LOG : Couldn't connect on device %s, error : %s\n", addr, strerror(errno)); 1564 fprintf (stderr,
1565 "LOG : Couldn't connect on device %s, error : %s\n",
1566 addr,
1567 strerror (errno));
1557 if (errno != ECONNREFUSED) //FIXME be sure that this works 1568 if (errno != ECONNREFUSED) //FIXME be sure that this works
1558 { 1569 {
1559 fprintf (stderr, "LOG : Removes %d device from the list\n", neighbours.pos); 1570 fprintf (stderr, "LOG : Removes %d device from the list\n", neighbours.pos);