client.h revision afd0a4b74b14ba4d01175ab13fc5eeedff1e8b06
76b43e4417bab52e913da39b5f5bc2a130d3f149Timo Sirainen#ifndef CLIENT_H
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen#define CLIENT_H
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen#include "network.h"
2fbc2a7c65d30e46803195ebb4547176b85c22c7Timo Sirainen#include "master.h"
d5abbb932a0a598f002da39a8b3326643b1b5efcTimo Sirainen#include "client-common.h"
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen#include "auth-client.h"
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen
806cb455553b71934314da98f1b4a694a3aa152eTimo Sirainenstruct pop3_client {
806cb455553b71934314da98f1b4a694a3aa152eTimo Sirainen struct client common;
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen time_t created;
806cb455553b71934314da98f1b4a694a3aa152eTimo Sirainen int refcount;
806cb455553b71934314da98f1b4a694a3aa152eTimo Sirainen
806cb455553b71934314da98f1b4a694a3aa152eTimo Sirainen struct io *io;
806cb455553b71934314da98f1b4a694a3aa152eTimo Sirainen struct istream *input;
806cb455553b71934314da98f1b4a694a3aa152eTimo Sirainen struct ostream *output;
806cb455553b71934314da98f1b4a694a3aa152eTimo Sirainen struct timeout *to_idle_disconnect;
806cb455553b71934314da98f1b4a694a3aa152eTimo Sirainen
49e513d090753ccbf95560b2f3a21f081a5b6c51Timo Sirainen struct login_proxy *proxy;
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen char *proxy_user, *proxy_password;
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen int proxy_state;
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen unsigned int bad_counter;
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen
473080c7c0d25ddfdf77e7dfa0ba8f73c6c669d5Timo Sirainen char *last_user;
473080c7c0d25ddfdf77e7dfa0ba8f73c6c669d5Timo Sirainen
473080c7c0d25ddfdf77e7dfa0ba8f73c6c669d5Timo Sirainen char *apop_challenge;
473080c7c0d25ddfdf77e7dfa0ba8f73c6c669d5Timo Sirainen struct auth_connect_id auth_id;
473080c7c0d25ddfdf77e7dfa0ba8f73c6c669d5Timo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen unsigned int login_success:1;
356303df200c991580bd24041996a070ad08c05eTimo Sirainen unsigned int authenticating:1;
473080c7c0d25ddfdf77e7dfa0ba8f73c6c669d5Timo Sirainen unsigned int auth_connected:1;
49e513d090753ccbf95560b2f3a21f081a5b6c51Timo Sirainen unsigned int destroyed:1;
49e513d090753ccbf95560b2f3a21f081a5b6c51Timo Sirainen};
473080c7c0d25ddfdf77e7dfa0ba8f73c6c669d5Timo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenvoid client_destroy(struct pop3_client *client, const char *reason);
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenvoid client_destroy_success(struct pop3_client *client, const char *reason);
d9b73f3eb3d5f608dfd438cee89ce2b27547173fTimo Sirainenvoid client_destroy_internal_failure(struct pop3_client *client);
00bde9ae9eab9e720462bf6ec9a4dd85e88c3bbfTimo Sirainen
00bde9ae9eab9e720462bf6ec9a4dd85e88c3bbfTimo Sirainenvoid client_send_line(struct pop3_client *client, const char *line);
00bde9ae9eab9e720462bf6ec9a4dd85e88c3bbfTimo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenbool client_read(struct pop3_client *client);
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenvoid client_input(struct pop3_client *client);
49e513d090753ccbf95560b2f3a21f081a5b6c51Timo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenvoid client_ref(struct pop3_client *client);
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenbool client_unref(struct pop3_client *client);
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen#endif
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen