(svn r26046) -Fix: handle a number of failure conditions from methods called in the network code

This commit is contained in:
rubidium 2013-11-22 21:41:19 +00:00
parent b37d402b2d
commit fad4fa09ba
3 changed files with 13 additions and 7 deletions

View File

@ -237,9 +237,9 @@ bool NetworkTCPSocketHandler::CanSendReceive()
tv.tv_sec = tv.tv_usec = 0; // don't block at all. tv.tv_sec = tv.tv_usec = 0; // don't block at all.
#if !defined(__MORPHOS__) && !defined(__AMIGA__) #if !defined(__MORPHOS__) && !defined(__AMIGA__)
select(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv); if (select(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv) < 0) return false;
#else #else
WaitSelect(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv, NULL); if (WaitSelect(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv, NULL) < 0) return false;
#endif #endif
this->writable = !!FD_ISSET(this->sock, &write_fd); this->writable = !!FD_ISSET(this->sock, &write_fd);

View File

@ -64,7 +64,9 @@ public:
DEBUG(net, 1, "[%s] Banned ip tried to join (%s), refused", Tsocket::GetName(), *iter); DEBUG(net, 1, "[%s] Banned ip tried to join (%s), refused", Tsocket::GetName(), *iter);
send(s, (const char*)p.buffer, p.size, 0); if (send(s, (const char*)p.buffer, p.size, 0) < 0) {
DEBUG(net, 0, "send failed with error %d", GET_LAST_ERROR());
}
closesocket(s); closesocket(s);
break; break;
} }
@ -79,7 +81,9 @@ public:
Packet p(Tfull_packet); Packet p(Tfull_packet);
p.PrepareToSend(); p.PrepareToSend();
send(s, (const char*)p.buffer, p.size, 0); if (send(s, (const char*)p.buffer, p.size, 0) < 0) {
DEBUG(net, 0, "send failed with error %d", GET_LAST_ERROR());
}
closesocket(s); closesocket(s);
continue; continue;
@ -115,9 +119,9 @@ public:
tv.tv_sec = tv.tv_usec = 0; // don't block at all. tv.tv_sec = tv.tv_usec = 0; // don't block at all.
#if !defined(__MORPHOS__) && !defined(__AMIGA__) #if !defined(__MORPHOS__) && !defined(__AMIGA__)
select(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv); if (select(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv) < 0) return false;
#else #else
WaitSelect(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv, NULL); if (WaitSelect(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv, NULL) < 0) return false;
#endif #endif
/* accept clients.. */ /* accept clients.. */

View File

@ -96,7 +96,9 @@ void NetworkUDPSocketHandler::SendPacket(Packet *p, NetworkAddress *recv, bool a
if (broadcast) { if (broadcast) {
/* Enable broadcast */ /* Enable broadcast */
unsigned long val = 1; unsigned long val = 1;
setsockopt(s->second, SOL_SOCKET, SO_BROADCAST, (char *) &val, sizeof(val)); if (setsockopt(s->second, SOL_SOCKET, SO_BROADCAST, (char *) &val, sizeof(val)) < 0) {
DEBUG(net, 1, "[udp] setting broadcast failed with: %i", GET_LAST_ERROR());
}
} }
#endif #endif