Fix crash on expired keyboard prompts
[silc.git] / apps / irssi / src / silc / core / silc-servers.h
index 1f9dd7f172821b26e8ee6a07fad012a9ccd77ccf..a638b1627ee721f394ac96755a5c4e40d1bb98b0 100644 (file)
@@ -7,14 +7,11 @@
 /* returns SILC_SERVER_REC if it's SILC server, NULL if it isn't */
 #define SILC_SERVER(server) \
        PROTO_CHECK_CAST(SERVER(server), SILC_SERVER_REC, chat_type, "SILC")
-
 #define SILC_SERVER_CONNECT(conn) \
        PROTO_CHECK_CAST(SERVER_CONNECT(conn), SILC_SERVER_CONNECT_REC, \
                         chat_type, "SILC")
-
 #define IS_SILC_SERVER(server) \
        (SILC_SERVER(server) ? TRUE : FALSE)
-
 #define IS_SILC_SERVER_CONNECT(conn) \
        (SILC_SERVER_CONNECT(conn) ? TRUE : FALSE)
 
@@ -24,34 +21,52 @@ typedef struct {
 #include "server-connect-rec.h"
 } SILC_SERVER_CONNECT_REC;
 
+typedef struct {
+  SilcClientEntry client_entry;
+  SilcClientConnection conn;
+  SilcUInt32 session_id;
+  char *filepath;
+  bool send;
+
+  long starttime;              /* Start time of transfer */
+  double kps;                  /* Kilos per second */
+  SilcUInt64 offset;           /* Current offset */
+  SilcUInt64 filesize;         /* Total file size */
+  SilcUInt32 percent;          /* Percent of current transmission */
+} *FtpSession;
+
 #define STRUCT_SERVER_CONNECT_REC SILC_SERVER_CONNECT_REC
 typedef struct {
 #include "server-rec.h"
-  /* Command sending queue */
-  int cmdcount;                /* number of commands in `cmdqueue'. Can be more than
-                          there actually is, to make flood control remember
-                          how many messages can be sent before starting the
-                          flood control */
-  int cmd_last_split;  /* Last command wasn't sent entirely to server.
-                          First item in `cmdqueue' should be re-sent. */
-  GSList *cmdqueue;
-  GTimeVal last_cmd;   /* last time command was sent to server */
-  
-  GSList *idles;       /* Idle queue - send these commands to server
-                          if there's nothing else to do */
-  
+
+  SilcDList ftp_sessions;
+  FtpSession current_session;
+
   gpointer chanqueries;
   SilcClientConnection conn;
+  SilcAsyncOperation op;       /* Key exchange operation handle */
+  SilcAsyncOperation tcp_op;   /* TCP stream creation operation handle */
+  SilcAsyncOperation prompt_op; /* Key verification operation handle */
+  SilcUInt32 umode;
 } SILC_SERVER_REC;
 
-SILC_SERVER_REC *silc_server_connect(SILC_SERVER_CONNECT_REC *conn);
+SERVER_REC *silc_server_init_connect(SERVER_CONNECT_REC *conn);
+void silc_server_connect(SERVER_REC *server);
 
-/* Return a string of all channels in server in server->channels_join() 
+/* Return a string of all channels in server in server->channels_join()
    format */
 char *silc_server_get_channels(SILC_SERVER_REC *server);
 void silc_command_exec(SILC_SERVER_REC *server,
                       const char *command, const char *args);
 void silc_server_init(void);
 void silc_server_deinit(void);
+void silc_server_free_ftp(SILC_SERVER_REC *server,
+                         SilcClientEntry client_entry);
+bool silc_term_utf8(void);
 
+int silc_send_msg(SILC_SERVER_REC *server, char *nick, char *msg,
+                 int msg_len, SilcMessageFlags flags);
+int silc_send_channel(SILC_SERVER_REC *server,
+                     char *channel, char *msg,
+                     SilcMessageFlags flags);
 #endif