Mercurial > dovecot > core-2.2
annotate src/auth/auth-postfix-connection.c @ 22614:cf66220d281e
doveadm proxy: Don't crash if remote doesn't support log proxying
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Sat, 14 Oct 2017 12:54:18 +0300 |
parents | 2e2563132d5f |
children | cb108f786fb4 |
rev | line source |
---|---|
21390
2e2563132d5f
Updated copyright notices to include the year 2017.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents:
19552
diff
changeset
|
1 /* Copyright (c) 2011-2017 Dovecot authors, see the included COPYING file */ |
13912
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 #include "auth-common.h" |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
4 #include "ioloop.h" |
15187
02451e967a06
Renamed network.[ch] to net.[ch].
Timo Sirainen <tss@iki.fi>
parents:
14681
diff
changeset
|
5 #include "net.h" |
13912
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 #include "istream.h" |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
7 #include "ostream.h" |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
8 #include "llist.h" |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
9 #include "str.h" |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
10 #include "strescape.h" |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
11 #include "str-sanitize.h" |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
12 #include "master-service.h" |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
13 #include "userdb.h" |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
14 #include "auth-postfix-connection.h" |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
15 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
16 #include <unistd.h> |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
17 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
18 #define MAX_INBUF_SIZE 1024 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
19 #define MAX_OUTBUF_SIZE (1024*50) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
20 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
21 struct auth_postfix_connection { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
22 struct auth_postfix_connection *prev, *next; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
23 struct auth *auth; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
24 int refcount; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
25 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
26 int fd; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
27 char *path; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
28 struct istream *input; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
29 struct ostream *output; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
30 struct io *io; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
31 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
32 unsigned int destroyed:1; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
33 }; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
34 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
35 static void postfix_input(struct auth_postfix_connection *conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
36 static void auth_postfix_connection_ref(struct auth_postfix_connection *conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
37 static void auth_postfix_connection_destroy(struct auth_postfix_connection **_conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
38 static void auth_postfix_connection_unref(struct auth_postfix_connection **_conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
39 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
40 static struct auth_postfix_connection *auth_postfix_connections; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
41 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
42 static int |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
43 postfix_input_auth_request(struct auth_postfix_connection *conn, |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
44 const char *username, |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
45 struct auth_request **request_r, const char **error_r) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
46 { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
47 struct auth_request *auth_request; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
48 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
49 auth_request = auth_request_new_dummy(); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
50 auth_request->id = 1; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
51 auth_request->context = conn; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
52 auth_postfix_connection_ref(conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
53 |
17735
c3da5ffaa0f2
auth: protocol-specific username settings weren't used for userdb lookups.
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
54 (void)auth_request_import_info(auth_request, "service", "postfix"); |
c3da5ffaa0f2
auth: protocol-specific username settings weren't used for userdb lookups.
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
55 auth_request_init(auth_request); |
c3da5ffaa0f2
auth: protocol-specific username settings weren't used for userdb lookups.
Timo Sirainen <tss@iki.fi>
parents:
17130
diff
changeset
|
56 |
13912
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
57 if (!auth_request_set_username(auth_request, username, error_r)) { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
58 *request_r = auth_request; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
59 return FALSE; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
60 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
61 *request_r = auth_request; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
62 return TRUE; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
63 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
64 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
65 static void |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
66 user_callback(enum userdb_result result, struct auth_request *auth_request) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
67 { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
68 struct auth_postfix_connection *conn = auth_request->context; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
69 string_t *str; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
70 const char *value; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
71 |
17042
eeadb7b5045b
auth: Added userdb result_success/failure/tempfail and skip settings, similar to passdb's.
Timo Sirainen <tss@iki.fi>
parents:
15715
diff
changeset
|
72 if (auth_request->userdb_lookup_tempfailed) |
13912
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
73 result = USERDB_RESULT_INTERNAL_FAILURE; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
74 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
75 str = t_str_new(128); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
76 switch (result) { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
77 case USERDB_RESULT_INTERNAL_FAILURE: |
17042
eeadb7b5045b
auth: Added userdb result_success/failure/tempfail and skip settings, similar to passdb's.
Timo Sirainen <tss@iki.fi>
parents:
15715
diff
changeset
|
78 if (auth_request->userdb_lookup_tempfailed) |
15685
17f5257d60c1
auth: Code cleanup: Renamed auth-stream to auth-fields.
Timo Sirainen <tss@iki.fi>
parents:
15187
diff
changeset
|
79 value = auth_fields_find(auth_request->userdb_reply, "reason"); |
13912
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
80 else |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
81 value = NULL; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
82 str_printfa(str, "400 %s", |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
83 value != NULL ? value: "Internal failure"); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
84 break; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
85 case USERDB_RESULT_USER_UNKNOWN: |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
86 str_append(str, "500 User not found"); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
87 break; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
88 case USERDB_RESULT_OK: |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
89 str_append(str, "200 1"); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
90 break; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
91 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
92 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
93 if (conn->auth->set->debug) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
94 i_debug("postfix out: %s", str_c(str)); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
95 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
96 str_append_c(str, '\n'); |
14681
ca37d1577291
Added o_stream_nsend*() and related functions to make delayed error handling safer.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
97 o_stream_nsend(conn->output, str_data(str), str_len(str)); |
13912
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
98 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
99 i_assert(conn->io == NULL); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
100 if (!conn->destroyed) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
101 conn->io = io_add(conn->fd, IO_READ, postfix_input, conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
102 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
103 auth_request_unref(&auth_request); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
104 auth_postfix_connection_unref(&conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
105 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
106 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
107 static bool |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
108 postfix_input_user(struct auth_postfix_connection *conn, const char *username) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
109 { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
110 struct auth_request *auth_request; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
111 const char *error; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
112 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
113 io_remove(&conn->io); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
114 if (!postfix_input_auth_request(conn, username, |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
115 &auth_request, &error)) { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
116 auth_request_log_info(auth_request, "postfix", "%s", error); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
117 user_callback(USERDB_RESULT_USER_UNKNOWN, auth_request); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
118 } else { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
119 auth_request_set_state(auth_request, AUTH_REQUEST_STATE_USERDB); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
120 auth_request_lookup_user(auth_request, user_callback); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
121 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
122 return TRUE; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
123 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
124 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
125 static bool |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
126 auth_postfix_input_line(struct auth_postfix_connection *conn, const char *line) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
127 { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
128 if (conn->auth->set->debug) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
129 i_debug("postfix in: %s", line); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
130 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
131 if (strncasecmp(line, "get ", 4) == 0) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
132 return postfix_input_user(conn, line + 4); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
133 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
134 i_error("BUG: Unknown command in postfix socket: %s", |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
135 str_sanitize(line, 80)); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
136 return FALSE; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
137 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
138 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
139 static void postfix_input(struct auth_postfix_connection *conn) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
140 { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
141 char *line; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
142 bool ret; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
143 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
144 switch (i_stream_read(conn->input)) { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
145 case 0: |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
146 return; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
147 case -1: |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
148 /* disconnected */ |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
149 auth_postfix_connection_destroy(&conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
150 return; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
151 case -2: |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
152 /* buffer full */ |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
153 i_error("BUG: Postfix sent us more than %d bytes", |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
154 (int)MAX_INBUF_SIZE); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
155 auth_postfix_connection_destroy(&conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
156 return; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
157 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
158 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
159 while ((line = i_stream_next_line(conn->input)) != NULL) { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
160 T_BEGIN { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
161 ret = auth_postfix_input_line(conn, line); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
162 } T_END; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
163 if (!ret) { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
164 auth_postfix_connection_destroy(&conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
165 return; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
166 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
167 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
168 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
169 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
170 struct auth_postfix_connection * |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
171 auth_postfix_connection_create(struct auth *auth, int fd) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
172 { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
173 struct auth_postfix_connection *conn; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
174 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
175 conn = i_new(struct auth_postfix_connection, 1); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
176 conn->refcount = 1; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
177 conn->fd = fd; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
178 conn->auth = auth; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
179 conn->input = i_stream_create_fd(fd, MAX_INBUF_SIZE, FALSE); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
180 conn->output = o_stream_create_fd(fd, (size_t)-1, FALSE); |
14681
ca37d1577291
Added o_stream_nsend*() and related functions to make delayed error handling safer.
Timo Sirainen <tss@iki.fi>
parents:
14133
diff
changeset
|
181 o_stream_set_no_error_handling(conn->output, TRUE); |
13912
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
182 conn->io = io_add(fd, IO_READ, postfix_input, conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
183 DLLIST_PREPEND(&auth_postfix_connections, conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
184 return conn; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
185 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
186 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
187 static void |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
188 auth_postfix_connection_destroy(struct auth_postfix_connection **_conn) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
189 { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
190 struct auth_postfix_connection *conn = *_conn; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
191 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
192 *_conn = NULL; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
193 if (conn->destroyed) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
194 return; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
195 conn->destroyed = TRUE; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
196 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
197 DLLIST_REMOVE(&auth_postfix_connections, conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
198 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
199 if (conn->input != NULL) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
200 i_stream_close(conn->input); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
201 if (conn->output != NULL) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
202 o_stream_close(conn->output); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
203 if (conn->io != NULL) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
204 io_remove(&conn->io); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
205 if (conn->fd != -1) { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
206 if (close(conn->fd) < 0) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
207 i_error("close(%s): %m", conn->path); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
208 conn->fd = -1; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
209 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
210 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
211 master_service_client_connection_destroyed(master_service); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
212 auth_postfix_connection_unref(&conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
213 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
214 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
215 static void auth_postfix_connection_ref(struct auth_postfix_connection *conn) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
216 { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
217 i_assert(conn->refcount > 0); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
218 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
219 conn->refcount++; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
220 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
221 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
222 static void |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
223 auth_postfix_connection_unref(struct auth_postfix_connection **_conn) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
224 { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
225 struct auth_postfix_connection *conn = *_conn; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
226 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
227 *_conn = NULL; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
228 i_assert(conn->refcount > 0); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
229 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
230 if (--conn->refcount > 0) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
231 return; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
232 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
233 if (conn->input != NULL) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
234 i_stream_unref(&conn->input); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
235 if (conn->output != NULL) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
236 o_stream_unref(&conn->output); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
237 i_free(conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
238 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
239 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
240 void auth_postfix_connections_destroy_all(void) |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
241 { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
242 struct auth_postfix_connection *conn; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
243 |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
244 while (auth_postfix_connections != NULL) { |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
245 conn = auth_postfix_connections; |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
246 auth_postfix_connection_destroy(&conn); |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
247 } |
f562bcaca215
auth: Implemented support for Postfix's "TCP map" sockets for user existence lookups.
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
248 } |