Mercurial > dovecot > core-2.2
annotate src/lib-master/master-login-auth.c @ 11248:1fd45deee948 HEAD
lib-master: Don't crash after timeouting an auth-master request.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 03 May 2010 16:01:09 +0300 |
parents | 0979e9e1e124 |
children | e08dd68309a9 |
rev | line source |
---|---|
10582
615eef3139c2
Updated copyright notices to include year 2010.
Timo Sirainen <tss@iki.fi>
parents:
10473
diff
changeset
|
1 /* Copyright (c) 2009-2010 Dovecot authors, see the included COPYING file */ |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 #include "lib.h" |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
4 #include "network.h" |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
5 #include "ioloop.h" |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 #include "istream.h" |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
7 #include "ostream.h" |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
8 #include "llist.h" |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
9 #include "hex-binary.h" |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
10 #include "hash.h" |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
11 #include "str.h" |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
12 #include "master-auth.h" |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
13 #include "master-login-auth.h" |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
14 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
15 #include <stdlib.h> |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
16 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
17 #define AUTH_MAX_INBUF_SIZE 8192 |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
18 #define AUTH_REQUEST_TIMEOUT_SECS (2*60) |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
19 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
20 struct master_login_auth_request { |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
21 struct master_login_auth_request *prev, *next; |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
22 |
11248
1fd45deee948
lib-master: Don't crash after timeouting an auth-master request.
Timo Sirainen <tss@iki.fi>
parents:
11097
diff
changeset
|
23 unsigned int id; |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
24 time_t create_stamp; |
11248
1fd45deee948
lib-master: Don't crash after timeouting an auth-master request.
Timo Sirainen <tss@iki.fi>
parents:
11097
diff
changeset
|
25 |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
26 master_login_auth_request_callback_t *callback; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
27 void *context; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
28 }; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
29 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
30 struct master_login_auth { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
31 pool_t pool; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
32 const char *auth_socket_path; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
33 int refcount; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
34 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
35 int fd; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
36 struct io *io; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
37 struct istream *input; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
38 struct ostream *output; |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
39 struct timeout *to; |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
40 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
41 unsigned int id_counter; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
42 struct hash_table *requests; |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
43 /* linked list of requests, ordered by create_stamp */ |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
44 struct master_login_auth_request *request_head, *request_tail; |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
45 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
46 unsigned int version_received:1; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
47 }; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
48 |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
49 static void master_login_auth_set_timeout(struct master_login_auth *auth); |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
50 |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
51 struct master_login_auth *master_login_auth_init(const char *auth_socket_path) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
52 { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
53 struct master_login_auth *auth; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
54 pool_t pool; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
55 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
56 pool = pool_alloconly_create("master login auth", 1024); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
57 auth = p_new(pool, struct master_login_auth, 1); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
58 auth->pool = pool; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
59 auth->auth_socket_path = p_strdup(pool, auth_socket_path); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
60 auth->refcount = 1; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
61 auth->fd = -1; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
62 auth->requests = hash_table_create(default_pool, pool, 0, NULL, NULL); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
63 return auth; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
64 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
65 |
10473
a0d99b374aa4
imap, pop3: Close auth/config connections when we stop accepting more connections.
Timo Sirainen <tss@iki.fi>
parents:
10199
diff
changeset
|
66 void master_login_auth_disconnect(struct master_login_auth *auth) |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
67 { |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
68 struct master_login_auth_request *request; |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
69 |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
70 while (auth->request_head != NULL) { |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
71 request = auth->request_head; |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
72 DLLIST2_REMOVE(&auth->request_head, |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
73 &auth->request_tail, request); |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
74 |
11018
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
75 request->callback(NULL, MASTER_AUTH_ERRMSG_INTERNAL_FAILURE, |
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
76 request->context); |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
77 i_free(request); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
78 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
79 hash_table_clear(auth->requests, FALSE); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
80 |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
81 if (auth->to != NULL) |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
82 timeout_remove(&auth->to); |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
83 if (auth->io != NULL) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
84 io_remove(&auth->io); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
85 if (auth->fd != -1) { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
86 i_stream_destroy(&auth->input); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
87 o_stream_destroy(&auth->output); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
88 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
89 net_disconnect(auth->fd); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
90 auth->fd = -1; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
91 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
92 auth->version_received = FALSE; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
93 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
94 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
95 static void master_login_auth_unref(struct master_login_auth **_auth) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
96 { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
97 struct master_login_auth *auth = *_auth; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
98 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
99 *_auth = NULL; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
100 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
101 i_assert(auth->refcount > 0); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
102 if (--auth->refcount > 0) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
103 return; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
104 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
105 hash_table_destroy(&auth->requests); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
106 pool_unref(&auth->pool); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
107 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
108 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
109 void master_login_auth_deinit(struct master_login_auth **_auth) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
110 { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
111 struct master_login_auth *auth = *_auth; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
112 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
113 *_auth = NULL; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
114 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
115 master_login_auth_disconnect(auth); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
116 master_login_auth_unref(&auth); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
117 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
118 |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
119 static unsigned int auth_get_next_timeout_secs(struct master_login_auth *auth) |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
120 { |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
121 time_t expires; |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
122 |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
123 expires = auth->request_head->create_stamp + AUTH_REQUEST_TIMEOUT_SECS; |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
124 return expires <= ioloop_time ? 0 : expires - ioloop_time; |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
125 } |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
126 |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
127 static void master_login_auth_timeout(struct master_login_auth *auth) |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
128 { |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
129 struct master_login_auth_request *request; |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
130 |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
131 while (auth->request_head != NULL && |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
132 auth_get_next_timeout_secs(auth) == 0) { |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
133 request = auth->request_head; |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
134 DLLIST2_REMOVE(&auth->request_head, |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
135 &auth->request_tail, request); |
11248
1fd45deee948
lib-master: Don't crash after timeouting an auth-master request.
Timo Sirainen <tss@iki.fi>
parents:
11097
diff
changeset
|
136 hash_table_remove(auth->requests, POINTER_CAST(request->id)); |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
137 |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
138 i_error("Auth server request timed out after %u secs", |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
139 (unsigned int)(ioloop_time - request->create_stamp)); |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
140 request->callback(NULL, MASTER_AUTH_ERRMSG_INTERNAL_FAILURE, |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
141 request->context); |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
142 i_free(request); |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
143 } |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
144 timeout_remove(&auth->to); |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
145 master_login_auth_set_timeout(auth); |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
146 } |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
147 |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
148 static void master_login_auth_set_timeout(struct master_login_auth *auth) |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
149 { |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
150 i_assert(auth->to == NULL); |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
151 |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
152 if (auth->request_head != NULL) { |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
153 auth->to = timeout_add(auth_get_next_timeout_secs(auth) * 1000, |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
154 master_login_auth_timeout, auth); |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
155 } |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
156 } |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
157 |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
158 static struct master_login_auth_request * |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
159 master_login_auth_lookup_request(struct master_login_auth *auth, |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
160 unsigned int id) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
161 { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
162 struct master_login_auth_request *request; |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
163 bool update_timeout; |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
164 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
165 request = hash_table_lookup(auth->requests, POINTER_CAST(id)); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
166 if (request == NULL) { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
167 i_error("Auth server sent reply with unknown ID %u", id); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
168 return NULL; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
169 } |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
170 update_timeout = request->prev == NULL; |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
171 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
172 hash_table_remove(auth->requests, POINTER_CAST(id)); |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
173 DLLIST2_REMOVE(&auth->request_head, &auth->request_tail, request); |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
174 |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
175 if (update_timeout) { |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
176 timeout_remove(&auth->to); |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
177 master_login_auth_set_timeout(auth); |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
178 } |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
179 return request; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
180 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
181 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
182 static bool |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
183 master_login_auth_input_user(struct master_login_auth *auth, const char *args) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
184 { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
185 struct master_login_auth_request *request; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
186 const char *const *list; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
187 unsigned int id; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
188 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
189 /* <id> <userid> [..] */ |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
190 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
191 list = t_strsplit(args, "\t"); |
11086
260e190306b0
Started using str_to_*() functions instead of libc's ones.
Timo Sirainen <tss@iki.fi>
parents:
11018
diff
changeset
|
192 if (list[0] == NULL || list[1] == NULL || |
260e190306b0
Started using str_to_*() functions instead of libc's ones.
Timo Sirainen <tss@iki.fi>
parents:
11018
diff
changeset
|
193 str_to_uint(list[0], &id) < 0) { |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
194 i_error("Auth server sent corrupted USER line"); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
195 return FALSE; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
196 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
197 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
198 request = master_login_auth_lookup_request(auth, id); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
199 if (request != NULL) { |
11018
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
200 request->callback(list + 1, NULL, request->context); |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
201 i_free(request); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
202 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
203 return TRUE; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
204 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
205 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
206 static bool |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
207 master_login_auth_input_notfound(struct master_login_auth *auth, |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
208 const char *args) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
209 { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
210 struct master_login_auth_request *request; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
211 unsigned int id; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
212 |
11086
260e190306b0
Started using str_to_*() functions instead of libc's ones.
Timo Sirainen <tss@iki.fi>
parents:
11018
diff
changeset
|
213 if (str_to_uint(args, &id) < 0) { |
260e190306b0
Started using str_to_*() functions instead of libc's ones.
Timo Sirainen <tss@iki.fi>
parents:
11018
diff
changeset
|
214 i_error("Auth server sent corrupted NOTFOUND line"); |
260e190306b0
Started using str_to_*() functions instead of libc's ones.
Timo Sirainen <tss@iki.fi>
parents:
11018
diff
changeset
|
215 return FALSE; |
260e190306b0
Started using str_to_*() functions instead of libc's ones.
Timo Sirainen <tss@iki.fi>
parents:
11018
diff
changeset
|
216 } |
260e190306b0
Started using str_to_*() functions instead of libc's ones.
Timo Sirainen <tss@iki.fi>
parents:
11018
diff
changeset
|
217 |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
218 request = master_login_auth_lookup_request(auth, id); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
219 if (request != NULL) { |
10589
cab5f2e7b806
auth master lookups: If request isn't found, return FAIL instead of NOTFOUND.
Timo Sirainen <tss@iki.fi>
parents:
10582
diff
changeset
|
220 i_error("Authenticated user not found from userdb"); |
11018
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
221 request->callback(NULL, MASTER_AUTH_ERRMSG_INTERNAL_FAILURE, |
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
222 request->context); |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
223 i_free(request); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
224 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
225 return TRUE; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
226 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
227 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
228 static bool |
11018
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
229 master_login_auth_input_fail(struct master_login_auth *auth, |
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
230 const char *args_line) |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
231 { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
232 struct master_login_auth_request *request; |
11018
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
233 const char *const *args, *error = NULL; |
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
234 unsigned int i, id; |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
235 |
11018
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
236 args = t_strsplit(args_line, "\t"); |
11086
260e190306b0
Started using str_to_*() functions instead of libc's ones.
Timo Sirainen <tss@iki.fi>
parents:
11018
diff
changeset
|
237 if (args[0] == NULL || str_to_uint(args[0], &id) < 0) { |
11018
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
238 i_error("Auth server sent broken FAIL line"); |
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
239 return FALSE; |
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
240 } |
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
241 for (i = 1; args[i] != NULL; i++) { |
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
242 if (strncmp(args[i], "reason=", 7) == 0) |
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
243 error = args[i] + 7; |
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
244 } |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
245 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
246 request = master_login_auth_lookup_request(auth, id); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
247 if (request != NULL) { |
11018
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
248 if (error != NULL) |
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
249 i_error("Internal auth failure"); |
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
250 request->callback(NULL, error != NULL ? error : |
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
251 MASTER_AUTH_ERRMSG_INTERNAL_FAILURE, |
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
252 request->context); |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
253 i_free(request); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
254 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
255 return TRUE; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
256 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
257 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
258 static void master_login_auth_input(struct master_login_auth *auth) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
259 { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
260 const char *line; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
261 bool ret; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
262 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
263 switch (i_stream_read(auth->input)) { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
264 case 0: |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
265 return; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
266 case -1: |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
267 /* disconnected */ |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
268 master_login_auth_disconnect(auth); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
269 return; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
270 case -2: |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
271 /* buffer full */ |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
272 i_error("Auth server sent us too long line"); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
273 master_login_auth_disconnect(auth); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
274 return; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
275 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
276 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
277 if (!auth->version_received) { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
278 line = i_stream_next_line(auth->input); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
279 if (line == NULL) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
280 return; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
281 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
282 /* make sure the major version matches */ |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
283 if (strncmp(line, "VERSION\t", 8) != 0 || |
11086
260e190306b0
Started using str_to_*() functions instead of libc's ones.
Timo Sirainen <tss@iki.fi>
parents:
11018
diff
changeset
|
284 !str_uint_equals(t_strcut(line + 8, '\t'), |
260e190306b0
Started using str_to_*() functions instead of libc's ones.
Timo Sirainen <tss@iki.fi>
parents:
11018
diff
changeset
|
285 AUTH_MASTER_PROTOCOL_MAJOR_VERSION)) { |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
286 i_error("Authentication server not compatible with " |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
287 "master process (mixed old and new binaries?)"); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
288 master_login_auth_disconnect(auth); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
289 return; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
290 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
291 auth->version_received = TRUE; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
292 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
293 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
294 auth->refcount++; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
295 while ((line = i_stream_next_line(auth->input)) != NULL) { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
296 if (strncmp(line, "USER\t", 5) == 0) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
297 ret = master_login_auth_input_user(auth, line + 5); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
298 else if (strncmp(line, "NOTFOUND\t", 9) == 0) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
299 ret = master_login_auth_input_notfound(auth, line + 9); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
300 else if (strncmp(line, "FAIL\t", 5) == 0) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
301 ret = master_login_auth_input_fail(auth, line + 5); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
302 else |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
303 ret = TRUE; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
304 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
305 if (!ret || auth->input == NULL) { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
306 master_login_auth_disconnect(auth); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
307 break; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
308 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
309 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
310 master_login_auth_unref(&auth); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
311 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
312 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
313 static int |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
314 master_login_auth_connect(struct master_login_auth *auth) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
315 { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
316 int fd; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
317 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
318 i_assert(auth->fd == -1); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
319 |
10159
e027503ddb6b
Use net_connect_unix_with_retries() instead of duplicating the code everywhere.
Timo Sirainen <tss@iki.fi>
parents:
10101
diff
changeset
|
320 fd = net_connect_unix_with_retries(auth->auth_socket_path, 1000); |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
321 if (fd == -1) { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
322 i_error("net_connect_unix(%s) failed: %m", |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
323 auth->auth_socket_path); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
324 return -1; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
325 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
326 auth->fd = fd; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
327 auth->input = i_stream_create_fd(fd, AUTH_MAX_INBUF_SIZE, FALSE); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
328 auth->output = o_stream_create_fd(fd, (size_t)-1, FALSE); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
329 auth->io = io_add(fd, IO_READ, master_login_auth_input, auth); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
330 return 0; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
331 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
332 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
333 void master_login_auth_request(struct master_login_auth *auth, |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
334 const struct master_auth_request *req, |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
335 master_login_auth_request_callback_t *callback, |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
336 void *context) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
337 { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
338 struct master_login_auth_request *login_req; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
339 unsigned int id; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
340 string_t *str; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
341 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
342 str = t_str_new(128); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
343 if (auth->fd == -1) { |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
344 if (master_login_auth_connect(auth) < 0) { |
11018
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
345 callback(NULL, MASTER_AUTH_ERRMSG_INTERNAL_FAILURE, |
2e08ce368bc0
Added support for userdb lookup to fail with a reason (many API changes).
Timo Sirainen <tss@iki.fi>
parents:
10589
diff
changeset
|
346 context); |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
347 return; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
348 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
349 str_printfa(str, "VERSION\t%u\t%u\n", |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
350 AUTH_MASTER_PROTOCOL_MAJOR_VERSION, |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
351 AUTH_MASTER_PROTOCOL_MINOR_VERSION); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
352 } |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
353 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
354 id = ++auth->id_counter; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
355 if (id == 0) |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
356 id++; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
357 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
358 str_printfa(str, "REQUEST\t%u\t%u\t%u\t", id, |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
359 req->client_pid, req->auth_id); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
360 binary_to_hex_append(str, req->cookie, sizeof(req->cookie)); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
361 str_append_c(str, '\n'); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
362 o_stream_send(auth->output, str_data(str), str_len(str)); |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
363 |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
364 login_req = i_new(struct master_login_auth_request, 1); |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
365 login_req->create_stamp = ioloop_time; |
11248
1fd45deee948
lib-master: Don't crash after timeouting an auth-master request.
Timo Sirainen <tss@iki.fi>
parents:
11097
diff
changeset
|
366 login_req->id = id; |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
367 login_req->callback = callback; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
368 login_req->context = context; |
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
369 hash_table_insert(auth->requests, POINTER_CAST(id), login_req); |
11097
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
370 DLLIST2_APPEND(&auth->request_head, &auth->request_tail, login_req); |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
371 |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
372 if (auth->to == NULL) |
0979e9e1e124
lib-master: Added timeout for auth master lookups.
Timo Sirainen <tss@iki.fi>
parents:
11086
diff
changeset
|
373 master_login_auth_set_timeout(auth); |
10101
4fe8c4382712
Redesigned how login process passes connections to mail processes and changed related APIs.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
374 } |
10199
9d13e9f78d52
lib-master: Fixes to handling master-login services.
Timo Sirainen <tss@iki.fi>
parents:
10159
diff
changeset
|
375 |
9d13e9f78d52
lib-master: Fixes to handling master-login services.
Timo Sirainen <tss@iki.fi>
parents:
10159
diff
changeset
|
376 unsigned int master_login_auth_request_count(struct master_login_auth *auth) |
9d13e9f78d52
lib-master: Fixes to handling master-login services.
Timo Sirainen <tss@iki.fi>
parents:
10159
diff
changeset
|
377 { |
9d13e9f78d52
lib-master: Fixes to handling master-login services.
Timo Sirainen <tss@iki.fi>
parents:
10159
diff
changeset
|
378 return hash_table_count(auth->requests); |
9d13e9f78d52
lib-master: Fixes to handling master-login services.
Timo Sirainen <tss@iki.fi>
parents:
10159
diff
changeset
|
379 } |