+Mon Feb 5 20:08:30 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added reconnection support to server if the normal server looses
+ its connection to the router (for example if router is rebooted).
+ The server performs normal reconnection strategy implemented
+ to the server. Affected file silcd/server.c.
+
Sun Feb 4 13:18:32 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
* Added new packet type SILC_PACKET_SET_MODE that is used to
void silc_server_remove_id(SilcServer server,
SilcSocketConnection sock,
SilcPacketContext *packet);
+void silc_server_set_mode(SilcServer server,
+ SilcSocketConnection sock,
+ SilcPacketContext *packet);
#endif
protocol. */
silc_socket_alloc(sock, SILC_SOCKET_TYPE_UNKNOWN, NULL, &newsocket);
server->sockets[sock] = newsocket;
- newsocket->hostname = sconn->remote_host;
+ newsocket->hostname = strdup(sconn->remote_host);
newsocket->port = sconn->remote_port;
sconn->sock = newsocket;
break;
}
+ /* Statistics */
server->stat.my_clients++;
server->stat.clients++;
+ if (server->server_type == SILC_ROUTER)
+ server->stat.cell_clients++;
id_entry = (void *)client;
break;
break;
}
+ /* Statistics */
if (sock->type == SILC_SOCKET_TYPE_SERVER)
server->stat.my_servers++;
else
SILC_LOG_DEBUG(("Premature EOF from connection %d", sock->sock));
+ /* If the closed connection was our primary router connection the
+ start re-connecting phase. */
+ if (!server->standalone && server->server_type == SILC_SERVER &&
+ sock == server->router->connection)
+ silc_task_register(server->timeout_queue, 0,
+ silc_server_connect_to_router,
+ context, 0, 500000,
+ SILC_TASK_TIMEOUT,
+ SILC_TASK_PRI_NORMAL);
+
if (sock->user_data)
silc_server_free_sock_user_data(server, sock);
silc_server_close_connection(server, sock);
*/
SILC_LOG_DEBUG(("Set Mode packet"));
silc_server_set_mode(server, sock, packet);
- break
+ break;
default:
SILC_LOG_ERROR(("Incorrect packet type %d, packet dropped", type));