Fixed public key saving in WHOIS -details. Get user public key
[silc.git] / apps / irssi / src / silc / core / silc-servers.c
index 59739a1e2ff844126f64ce50f6ad95cbc220cef8..11f1032e06fee5a891aa0dbf5ce04dda627fbf7c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   silc-server.c : irssi
 
-  Copyright (C) 2000 - 2006 Timo Sirainen
+  Copyright (C) 2000 - 2007 Timo Sirainen
                             Pekka Riikonen <priikone@silcnet.org>
 
   This program is free software; you can redistribute it and/or modify
@@ -223,7 +223,7 @@ void silc_send_mime(SILC_SERVER_REC *server, int channel, const char *to,
   silc_free(unescaped_data);
 }
 
-static int isnickflag_func(char flag)
+static int isnickflag_func(SERVER_REC *server, char flag)
 {
   return flag == '@' || flag == '+';
 }
@@ -233,7 +233,7 @@ static int ischannel_func(SERVER_REC *server, const char *data)
   return FALSE;
 }
 
-const char *get_nick_flags(void)
+const char *get_nick_flags(SERVER_REC *server)
 {
   return "@\0\0";
 }
@@ -292,6 +292,9 @@ static void silc_connect_cb(SilcClient client,
   SILC_SERVER_REC *server = context;
   char *file;
 
+  SILC_LOG_DEBUG(("Connection callback %p, status %d, error %d, message %s",
+                 conn, status, error, message ? message : "N/A"));
+
   server->op = NULL;
 
   switch (status) {
@@ -335,19 +338,6 @@ static void silc_connect_cb(SilcClient client,
     /* Put default attributes */
     silc_query_attributes_default(silc_client, conn);
 
-    /* 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 */
     file = silc_get_session_filename(server);
     unlink(file);
@@ -384,7 +374,6 @@ static void silc_connect_cb(SilcClient client,
     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;
@@ -397,6 +386,8 @@ static void silc_connect_cb(SilcClient client,
   }
 }
 
+/* Called after TCP stream has been created */
+
 static void sig_connected_stream_created(SilcSocketStreamStatus status,
                                         SilcStream stream, void *context)
 {
@@ -473,16 +464,18 @@ static void sig_disconnected(SILC_SERVER_REC *server)
   silc_dlist_uninit(server->ftp_sessions);
 
   if (server->conn) {
+    /* Close connection */
     silc_client_close_connection(silc_client, server->conn);
-
-    /* SILC closes the handle */
-    g_io_channel_unref(net_sendbuffer_handle(server->handle));
-    net_sendbuffer_destroy(server->handle, FALSE);
-    server->handle = NULL;
   } else if (server->op) {
+    /* Abort on going connecting (key exchange) */
     silc_async_abort(server->op, NULL, NULL);
     server->op = NULL;
   }
+
+  /* SILC closes the handle */
+  g_io_channel_unref(net_sendbuffer_handle(server->handle));
+  net_sendbuffer_destroy(server->handle, FALSE);
+  server->handle = NULL;
 }
 
 SERVER_REC *silc_server_init_connect(SERVER_CONNECT_REC *conn)
@@ -1315,7 +1308,7 @@ void silc_server_free_ftp(SILC_SERVER_REC *server,
 bool silc_term_utf8(void)
 {
   const char *str;
-  str = settings_get_str("term_type");
+  str = settings_get_str("term_charset");
   if (str)
     if (g_strcasecmp(str, "utf-8") == 0)
       return TRUE;