Call the connection callback in disconnection always as the last
[silc.git] / lib / silcclient / client_internal.h
index c7bc0434a75c36009d737df2a02bbaa251bad56f..91243d8f0564da73ad522eedad4bfbbcf41647a4 100644 (file)
@@ -111,10 +111,12 @@ struct SilcClientInternalStruct {
   SilcPacketEngine packet_engine;        /* Packet engine */
   SilcMutex lock;                       /* Client lock */
   SilcList commands;                    /* Registered commands */
+  SilcDList ftp_sessions;               /* FTP sessions */
   char *silc_client_version;            /* Version set by application */
   SilcClientRunning running;            /* Running/Stopped callback */
   void *running_context;                /* Context for runnign callback */
   SilcAtomic16 conns;                   /* Number of connections in client */
+  SilcUInt16 next_session_id;           /* Next FTP session ID */
 
   /* Events */
   unsigned int stop              : 1;   /* Stop client */
@@ -141,6 +143,7 @@ struct SilcClientConnectionInternalStruct {
   SilcAsyncOperation op;                /* Protocols async operation */
   SilcAsyncOperation cop;               /* Async operation for application */
   SilcHashTable attrs;                  /* Configured user attributes */
+  char *disconnect_message;             /* Disconnection message */
 
   SilcIDCache client_cache;             /* Client entry cache */
   SilcIDCache channel_cache;            /* Channel entry cache */
@@ -149,6 +152,8 @@ struct SilcClientConnectionInternalStruct {
   SilcAtomic16 cmd_ident;               /* Current command identifier */
   SilcUInt8 retry_count;                /* Packet retry counter */
   SilcUInt8 retry_timer;                /* Packet retry timer */
+  SilcClientConnectionStatus status;    /* Connection callback status */
+  SilcStatus error;                     /* Connection callback error */
 
   /* Events */
   unsigned int connect            : 1;  /* Connect remote host */
@@ -160,12 +165,9 @@ struct SilcClientConnectionInternalStruct {
   unsigned int verbose            : 1;   /* Notify application */
   unsigned int registering        : 1;  /* Set when registering to network */
   unsigned int rekey_responder    : 1;   /* Set when rekeying as responder */
-  unsigned int callback_called    : 1;   /* Set when connect callback called */
   unsigned int auth_request       : 1;   /* Set when requesting auth method */
 
   SilcClientAway *away;
-  SilcDList ftp_sessions;
-  SilcUInt32 next_session_id;
   SilcClientFtpSession active_session;
   SilcHashTable privmsg_wait;           /* Waited private messages */
 };