1 #ifndef AUTH_CLIENT_PRIVATE_H 2 #define AUTH_CLIENT_PRIVATE_H 3 4 #include "connection.h" 5 6 #include "auth-client.h" 7 8 #define AUTH_CONNECT_TIMEOUT_MSECS (30*1000) 9 10 struct auth_client_request { 11 pool_t pool; 12 struct event *event; 13 14 struct auth_client_connection *conn; 15 unsigned int id; 16 time_t created; 17 18 auth_request_callback_t *callback; 19 void *context; 20 }; 21 22 struct auth_client_connection { 23 struct connection conn; 24 pool_t pool; 25 26 struct auth_client *client; 27 time_t last_connect; 28 29 struct timeout *to; 30 31 unsigned int server_pid; 32 unsigned int connect_uid; 33 char *cookie; 34 35 ARRAY(struct auth_mech_desc) available_auth_mechs; 36 37 /* id => request */ 38 HASH_TABLE(void *, struct auth_client_request *) requests; 39 40 bool has_plain_mech:1; 41 bool connected:1; 42 }; 43 44 struct auth_client { 45 char *auth_socket_path; 46 unsigned int client_pid; 47 struct event *event; 48 49 struct connection_list *clist; 50 struct auth_client_connection *conn; 51 52 auth_connect_notify_callback_t *connect_notify_callback; 53 void *connect_notify_context; 54 55 unsigned int request_id_counter; 56 57 unsigned int connect_timeout_msecs; 58 59 bool debug:1; 60 }; 61 62 extern struct event_category event_category_auth_client; 63 64 bool auth_client_request_is_aborted(struct auth_client_request *request); 65 time_t auth_client_request_get_create_time(struct auth_client_request *request); 66 67 void auth_client_request_server_input(struct auth_client_request *request, 68 enum auth_request_status status, 69 const char *const *args); 70 71 struct connection_list *auth_client_connection_list_init(void); 72 73 struct auth_client_connection * 74 auth_client_connection_init(struct auth_client *client); 75 void auth_client_connection_deinit(struct auth_client_connection **conn); 76 77 int auth_client_connection_connect(struct auth_client_connection *conn); 78 void auth_client_connection_disconnect(struct auth_client_connection *conn, 79 const char *reason); 80 81 /* Queues a new request. Must not be called if connection is not connected. */ 82 unsigned int 83 auth_client_connection_add_request(struct auth_client_connection *conn, 84 struct auth_client_request *request); 85 void auth_client_connection_remove_request(struct auth_client_connection *conn, 86 unsigned int id); 87 88 #endif 89