| /* This Source Code Form is subject to the terms of the Mozilla Public |
| * License, v. 2.0. If a copy of the MPL was not distributed with this |
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| /* |
| * pkix_pl_ldapdefaultclient.h |
| * |
| * LDAPDefaultClient Object Type Definition |
| * |
| */ |
| |
| #ifndef _PKIX_PL_LDAPDEFAULTCLIENT_H |
| #define _PKIX_PL_LDAPDEFAULTCLIENT_H |
| |
| #include "pkix_pl_ldapt.h" |
| #include "pkix_pl_common.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* |
| * At the time of this version, there are unresolved questions about the LDAP |
| * protocol. Although RFC1777 describes a BIND and UNBIND message, it is not |
| * clear whether they are appropriate to this application. We have tested only |
| * using servers that do not expect authentication, and that reject BIND |
| * messages. It is not clear what values might be appropriate for the bindname |
| * and authentication fields, which are currently implemented as char strings |
| * supplied by the caller. (If this changes, the API and possibly the templates |
| * will have to change.) Therefore the LDAPClient_Create API contains a |
| * BindAPI structure, a union, which will have to be revised and extended when |
| * this area of the protocol is better understood. |
| * |
| */ |
| |
| typedef enum { |
| CONNECT_PENDING, |
| CONNECTED, |
| BIND_PENDING, |
| BIND_RESPONSE, |
| BIND_RESPONSE_PENDING, |
| BOUND, |
| SEND_PENDING, |
| RECV, |
| RECV_PENDING, |
| RECV_INITIAL, |
| RECV_NONINITIAL, |
| ABANDON_PENDING |
| } LdapClientConnectStatus; |
| |
| struct PKIX_PL_LdapDefaultClientStruct { |
| PKIX_PL_LdapClient vtable; |
| LdapClientConnectStatus connectStatus; |
| PKIX_UInt32 messageID; |
| PKIX_PL_HashTable *cachePtr; |
| PKIX_PL_Socket *clientSocket; |
| PRPollDesc pollDesc; |
| void *callbackList; /* cast this to (PKIX_PL_Socket_Callback *) */ |
| LDAPBindAPI *bindAPI; |
| PLArenaPool *arena; |
| PRTime lastIO; |
| void *sendBuf; |
| PKIX_UInt32 bytesToWrite; |
| void *rcvBuf; |
| PKIX_UInt32 capacity; |
| void *currentInPtr; |
| PKIX_UInt32 currentBytesAvailable; |
| void *bindMsg; |
| PKIX_UInt32 bindMsgLen; |
| PKIX_List *entriesFound; |
| PKIX_PL_LdapRequest *currentRequest; |
| PKIX_PL_LdapResponse *currentResponse; |
| }; |
| |
| /* see source file for function documentation */ |
| |
| PKIX_Error *pkix_pl_LdapDefaultClient_RegisterSelf(void *plContext); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* _PKIX_PL_LDAPDEFAULTCLIENT_H */ |