SilcMutex lock; /* Client lock */
SilcList commands; /* Registered commands */
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 */
/* Events */
- unsigned int run_callback : 1; /* Call running callback */
+ unsigned int stop : 1; /* Stop client */
+ unsigned int run_callback : 1; /* Call running/stopped callback */
+ unsigned int connection_closed : 1; /* A connection closed */
};
/* Internal context for conn->internal in SilcClientConnection. */
SilcBuffer local_idp; /* Local ID Payload */
SilcBuffer remote_idp; /* Remote ID Payload */
SilcAsyncOperation op; /* Protocols async operation */
+ SilcAsyncOperation cop; /* Async operation for application */
SilcIDCache client_cache; /* Client entry cache */
SilcIDCache channel_cache; /* Channel entry cache */
/* Events */
unsigned int connect : 1; /* Connect remote host */
- unsigned int disconnected : 1; /* Disconnected by remote host */
+ unsigned int disconnected : 1; /* Disconnect remote connection */
unsigned int key_exchange : 1; /* Start key exchange */
unsigned int rekeying : 1; /* Start rekey */
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 */
SilcClientAway *away;
SilcClientConnAuthRequest connauth;
SILC_FSM_STATE(silc_client_connection_st_close);
SILC_FSM_STATE(silc_client_error);
SILC_FSM_STATE(silc_client_disconnect);
+SILC_FSM_STATE(silc_client_st_stop);
void silc_client_del_connection(SilcClient client, SilcClientConnection conn);
SilcBool silc_client_del_client(SilcClient client, SilcClientConnection conn,