-/* Called to indicate that connection was either successfully established
- or connecting failed. This is also the first time application receives
- the SilcClientConnection object which it should save somewhere. */
-
-void silc_connect(SilcClient client, SilcClientConnection conn,
- SilcClientConnectionStatus status)
-{
- SILC_SERVER_REC *server = conn->context;
-
- if (!server || server->disconnected) {
- silc_client_close_connection(client, conn);
- return;
- }
-
- switch (status) {
- case SILC_CLIENT_CONN_SUCCESS:
- /* We have successfully connected to server */
- if ((client->nickname != NULL) &&
- (strcmp(client->nickname, client->username)))
- silc_queue_enable(conn); /* enable queueing until we have our nick */
- server->connected = TRUE;
- signal_emit("event connected", 1, server);
- break;
-
- case SILC_CLIENT_CONN_SUCCESS_RESUME:
- /* We have successfully resumed old detached session */
- server->connected = TRUE;
- signal_emit("event connected", 1, server);
-
- /* If we resumed old session check whether we need to update
- our nickname */
- if (strcmp(server->nick, conn->local_entry->nickname)) {
- char *old;
- old = g_strdup(server->nick);
- server_change_nick(SERVER(server), conn->local_entry->nickname);
- nicklist_rename_unique(SERVER(server),
- conn->local_entry, server->nick,
- conn->local_entry, conn->local_entry->nickname);
- signal_emit("message own_nick", 4, server, server->nick, old, "");
- g_free(old);
- }
-
- /* remove the detach data now */
- {
- char *file;
-
- file = silc_get_session_filename(server);
-
- unlink(file);
- silc_free(file);
- }
- break;
-
- default:
- {
- char * file;
-
- file = silc_get_session_filename(server);
-
- if (silc_file_size(file) > 0)
- printformat_module("fe-common/silc", server, NULL,
- MSGLEVEL_CRAP, SILCTXT_REATTACH_FAILED, file);
-
- silc_free(file);
-
- server->connection_lost = TRUE;
- if (server->conn)
- server->conn->context = NULL;
- server_disconnect(SERVER(server));
-
- break;
- }
- }
-}
-
-/* Called to indicate that connection was disconnected to the server. */
-
-void silc_disconnect(SilcClient client, SilcClientConnection conn,
- SilcStatus status, const char *message)
-{
- SILC_SERVER_REC *server = conn->context;
-
- SILC_LOG_DEBUG(("Start"));
-
- if (!server || server->connection_lost)
- return;
-
- if (server->conn && server->conn->local_entry) {
- nicklist_rename_unique(SERVER(server),
- server->conn->local_entry, server->nick,
- server->conn->local_entry,
- silc_client->username);
- silc_change_nick(server, silc_client->username);
- }
-
- if (message)
- silc_say(client, conn, SILC_CLIENT_MESSAGE_AUDIT,
- "Server closed connection: %s (%d) %s",
- silc_get_status_message(status), status,
- message ? message : "");
-
- if (server->conn)
- server->conn->context = NULL;
- server->conn = NULL;
- server->connection_lost = TRUE;
- server_disconnect(SERVER(server));
-}
-