Mercurial > dovecot > core-2.2
changeset 21970:866421afc7b7
*-login: Add client_vfuncs.send_raw_data()
This allows login plugins to hook into seeing all the data that is sent to
the imap/pop3 client.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Fri, 21 Apr 2017 13:35:33 +0300 |
parents | 60ee14b2fa4b |
children | 486b1b94f39c |
files | src/imap-login/imap-login-client.c src/imap-urlauth/imap-urlauth-login.c src/login-common/client-common.c src/login-common/client-common.h src/pop3-login/client.c |
diffstat | 5 files changed, 18 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/imap-login/imap-login-client.c Fri Apr 21 13:27:18 2017 +0300 +++ b/src/imap-login/imap-login-client.c Fri Apr 21 13:35:33 2017 +0300 @@ -757,6 +757,7 @@ imap_proxy_parse_line, imap_proxy_error, imap_proxy_get_state, + client_common_send_raw_data, }; static const struct login_binary imap_login_binary = {
--- a/src/imap-urlauth/imap-urlauth-login.c Fri Apr 21 13:27:18 2017 +0300 +++ b/src/imap-urlauth/imap-urlauth-login.c Fri Apr 21 13:35:33 2017 +0300 @@ -174,6 +174,7 @@ NULL, NULL, NULL, + client_common_send_raw_data, }; static const struct login_binary imap_urlauth_login_binary = {
--- a/src/login-common/client-common.c Fri Apr 21 13:27:18 2017 +0300 +++ b/src/login-common/client-common.c Fri Apr 21 13:35:33 2017 +0300 @@ -856,7 +856,8 @@ client->v.notify_status(client, bad, text); } -void client_send_raw_data(struct client *client, const void *data, size_t size) +void client_common_send_raw_data(struct client *client, + const void *data, size_t size) { ssize_t ret; @@ -870,6 +871,15 @@ } } +void client_send_raw_data(struct client *client, const void *data, size_t size) +{ + /* FIXME: NULL check is only for backwards compatibility - remove */ + if (client->v.send_raw_data != NULL) + client->v.send_raw_data(client, data, size); + else + client_common_send_raw_data(client, data, size); +} + void client_send_raw(struct client *client, const char *data) { client_send_raw_data(client, data, strlen(data));
--- a/src/login-common/client-common.h Fri Apr 21 13:27:18 2017 +0300 +++ b/src/login-common/client-common.h Fri Apr 21 13:35:33 2017 +0300 @@ -103,6 +103,8 @@ int (*proxy_parse_line)(struct client *client, const char *line); void (*proxy_error)(struct client *client, const char *text); const char *(*proxy_get_state)(struct client *client); + void (*send_raw_data)(struct client *client, + const void *data, size_t size); }; struct client { @@ -254,6 +256,8 @@ void client_send_raw_data(struct client *client, const void *data, size_t size); void client_send_raw(struct client *client, const char *data); +void client_common_send_raw_data(struct client *client, + const void *data, size_t size); void client_set_auth_waiting(struct client *client); void client_auth_send_challenge(struct client *client, const char *data);