X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcclient%2Fclient.h;h=ebe41fe903f752ee261e14cd18edd51e7042adad;hb=90e14dc985628e0b0f86e604d511039d302dc956;hp=dd4eb8a943170ad8dce9b42b55262f9bf4b2ab43;hpb=5e0534a2c468177c5c2b0c503f529380e8dd3df4;p=silc.git diff --git a/lib/silcclient/client.h b/lib/silcclient/client.h index dd4eb8a9..ebe41fe9 100644 --- a/lib/silcclient/client.h +++ b/lib/silcclient/client.h @@ -41,9 +41,9 @@ typedef struct SilcClientConnectionInternalStruct *SilcClientConnectionInternal; typedef struct SilcChannelPrivateKeyStruct *SilcChannelPrivateKey; - /* Internal client entry context */ typedef struct SilcClientEntryInternalStruct { + void *prv_waiter; /* Private message packet waiter */ SilcRwLock lock; /* Read/write lock */ SilcCipher send_key; /* Private message key for sending */ SilcCipher receive_key; /* Private message key for receiving */ @@ -54,13 +54,15 @@ typedef struct SilcClientEntryInternalStruct { SilcClientKeyAgreement ke; /* Current key agreement context or NULL */ /* Flags */ - unsigned int valid : 1; /* FALSE if this entry is not valid */ - unsigned int resolving : 1; /* TRUE when entry is being resolved */ + unsigned int valid : 1; /* FALSE if this entry is not valid. Entry + without nickname is not valid. */ unsigned int generated : 1; /* TRUE if library generated `key' */ unsigned int prv_resp : 1; /* TRUE if we are responder when using private message keys. */ SilcUInt16 resolve_cmd_ident; /* Command identifier when resolving */ - SilcAtomic8 refcnt; /* Reference counter */ + SilcAtomic32 refcnt; /* Reference counter */ + SilcAtomic32 deleted; /* Flag indicating whether the client object is + already scheduled for deletion.*/ } SilcClientEntryInternal; /* Internal channel entry context */ @@ -87,14 +89,16 @@ typedef struct SilcChannelEntryInternalStruct { stuff that relates to the channel. Not used for the channel resolving itself. */ - SilcAtomic16 refcnt; /* Reference counter */ + SilcAtomic32 refcnt; /* Reference counter */ + SilcAtomic32 deleted; /* Flag indicating whether the channel object is + already scheduled for deletion.*/ } SilcChannelEntryInternal; /* Internal server entry context */ typedef struct SilcServerEntryInternalStruct { SilcRwLock lock; /* Read/write lock */ SilcUInt16 resolve_cmd_ident; /* Resolving identifier */ - SilcAtomic8 refcnt; /* Reference counter */ + SilcAtomic32 refcnt; /* Reference counter */ } SilcServerEntryInternal; #endif /* CLIENT_H */