diff options
author | Christian Grothoff <christian@grothoff.org> | 2014-06-17 20:23:42 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2014-06-17 20:23:42 +0000 |
commit | ce22207c5cd930ec86a558c1a908148ee7c938b4 (patch) | |
tree | 43c65ca77b6e80ecb941d66aeeeb1bdd80669dc4 /src/transport/gnunet-helper-transport-bluetooth.c | |
parent | e41de7ea55c318ee24a707a1002b69ba1c6402d1 (diff) | |
download | gnunet-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.c | 17 |
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); |