+ SILC_LOG_DEBUG(("Connection callback %p, status %d, error %d, message %s",
+ conn, status, error, message ? message : "N/A"));
+
+ server->op = NULL;
+
+ switch (status) {
+ case SILC_CLIENT_CONN_SUCCESS:
+ if (server->disconnected) {
+ silc_client_close_connection(client, conn);
+ return;
+ }
+
+ /* We have successfully connected to server */
+
+ /* Enable queueing until we have our requested nick */
+ if (((opt_nickname &&
+ !silc_utf8_strcasecmp(opt_nickname,
+ conn->local_entry->nickname)) ||
+ (settings_get_str("nick") &&
+ !silc_utf8_strcasecmp(settings_get_str("nick"),
+ conn->local_entry->nickname))) &&
+ silc_utf8_strcasecmp(conn->local_entry->nickname,
+ conn->local_entry->username))
+ silc_queue_enable(conn);
+
+ /* Put default attributes */
+ silc_query_attributes_default(silc_client, conn);
+
+ server->connected = TRUE;
+ server->conn = conn;
+ server->conn->context = server;
+ signal_emit("event connected", 1, server);
+ break;
+
+ case SILC_CLIENT_CONN_SUCCESS_RESUME:
+ if (server->disconnected) {
+ silc_client_close_connection(client, conn);
+ return;
+ }
+
+ /* We have successfully resumed old detached session */
+ server->connected = TRUE;
+ server->conn = conn;
+ server->conn->context = server;
+ signal_emit("event connected", 1, server);
+
+ /* Put default attributes */
+ silc_query_attributes_default(silc_client, conn);
+
+ /* Remove the detach data now */
+ file = silc_get_session_filename(server);
+ unlink(file);
+ silc_free(file);
+ break;
+
+ case SILC_CLIENT_CONN_DISCONNECTED:
+ /* Server disconnected */
+ 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);
+ }