14 #ifndef NETWORK_CORE_TCP_LISTEN_H 
   15 #define NETWORK_CORE_TCP_LISTEN_H 
   18 #include "../network.h" 
   19 #include "../../core/pool_type.hpp" 
   20 #include "../../debug.h" 
   21 #include "table/strings.h" 
   31 template <
class Tsocket, PacketType Tfull_packet, PacketType Tban_packet>
 
   44       struct sockaddr_storage sin;
 
   45       memset(&sin, 0, 
sizeof(sin));
 
   46       socklen_t sin_len = 
sizeof(sin);
 
   47       SOCKET s = accept(ls, (
struct sockaddr*)&sin, &sin_len);
 
   48       if (s == INVALID_SOCKET) 
return;
 
   65           DEBUG(net, 1, 
"[%s] Banned ip tried to join (%s), refused", Tsocket::GetName(), *iter);
 
   67           if (send(s, (
const char*)p.
buffer, p.
size, 0) < 0) {
 
   68             DEBUG(net, 0, 
"send failed with error %d", GET_LAST_ERROR());
 
   78       if (!Tsocket::AllowConnection()) {
 
   84         if (send(s, (
const char*)p.
buffer, p.
size, 0) < 0) {
 
   85           DEBUG(net, 0, 
"send failed with error %d", GET_LAST_ERROR());
 
   92       Tsocket::AcceptConnection(s, address);
 
  102     fd_set read_fd, write_fd;
 
  110     FOR_ALL_ITEMS_FROM(Tsocket, idx, cs, 0) {
 
  111       FD_SET(cs->sock, &read_fd);
 
  112       FD_SET(cs->sock, &write_fd);
 
  117       FD_SET(s->second, &read_fd);
 
  120     tv.tv_sec = tv.tv_usec = 0; 
 
  121 #if !defined(__MORPHOS__) && !defined(__AMIGA__) 
  122     if (select(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv) < 0) 
return false;
 
  124     if (WaitSelect(FD_SETSIZE, &read_fd, &write_fd, NULL, &tv, NULL) < 0) 
return false;
 
  129       if (FD_ISSET(s->second, &read_fd)) 
AcceptClient(s->second);
 
  133     FOR_ALL_ITEMS_FROM(Tsocket, idx, cs, 0) {
 
  134       cs->writable = !!FD_ISSET(cs->sock, &write_fd);
 
  135       if (FD_ISSET(cs->sock, &read_fd)) {
 
  136         cs->ReceivePackets();
 
  154     for (
NetworkAddress *address = addresses.Begin(); address != addresses.End(); address++) {
 
  155       address->Listen(SOCK_STREAM, &
sockets);
 
  159       DEBUG(net, 0, 
"[server] could not start network: could not create listening socket");
 
  160       NetworkError(STR_NETWORK_ERROR_SERVER_START);
 
  171       closesocket(s->second);
 
  174     DEBUG(net, 1, 
"[%s] closed listeners", Tsocket::GetName());