X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/3d040d098384c48be39e47862d55cac1bc0c578c..38965d80d70cacd0c944d32f7107549a3a272b35:/src/src/auths/dovecot.c diff --git a/src/src/auths/dovecot.c b/src/src/auths/dovecot.c index ca3d1bd1c..7f437fa0d 100644 --- a/src/src/auths/dovecot.c +++ b/src/src/auths/dovecot.c @@ -1,6 +1,7 @@ /* + * Copyright (c) The Exim Maintainers 2006 - 2023 * Copyright (c) 2004 Andrey Panin - * Copyright (c) 2006-2020 The Exim Maintainers + * SPDX-License-Identifier: GPL-2.0-or-later * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published @@ -22,6 +23,8 @@ because using C buffered I/O gives problems on some operating systems. PH */ */ #include "../exim.h" + +#ifdef AUTH_DOVECOT /* Remainder of file */ #include "dovecot.h" #define VERSION_MAJOR 1 @@ -96,13 +99,15 @@ static int socket_buffer_left; enable consistency checks to be done, or anything else that needs to be set up. */ -void auth_dovecot_init(auth_instance *ablock) +void +auth_dovecot_init(auth_instance * ablock) { -auth_dovecot_options_block *ob = +auth_dovecot_options_block * ob = (auth_dovecot_options_block *)(ablock->options_block); if (!ablock->public_name) ablock->public_name = ablock->name; if (ob->server_socket) ablock->server = TRUE; +else DEBUG(D_auth) debug_printf("Dovecot auth driver: no server_socket for %s\n", ablock->public_name); ablock->client = FALSE; } @@ -303,16 +308,14 @@ auth_defer_msg = US"authentication socket protocol error"; socket_buffer_left = 0; /* Global, used to read more than a line but return by line */ for (;;) { -debug_printf("%s %d\n", __FUNCTION__, __LINE__); if (!dc_gets(buffer, sizeof(buffer), &cctx)) OUT("authentication socket read error or premature eof"); -debug_printf("%s %d\n", __FUNCTION__, __LINE__); p = buffer + Ustrlen(buffer) - 1; if (*p != '\n') OUT("authentication socket protocol line too long"); *p = '\0'; - HDEBUG(D_auth) debug_printf("received: '%s'\n", buffer); + HDEBUG(D_auth) debug_printf(" DOVECOT<< '%s'\n", buffer); nargs = strcut(buffer, args, nelem(args)); @@ -422,12 +425,12 @@ if (( HDEBUG(D_auth) debug_printf("error sending auth_command: %s\n", strerror(errno)); -HDEBUG(D_auth) debug_printf("sent: '%s'\n", auth_command); +HDEBUG(D_auth) debug_printf(" DOVECOT>> '%s'\n", auth_command); while (1) { - uschar *temp; - uschar *auth_id_pre = NULL; + uschar * temp; + uschar * auth_id_pre = NULL; if (!dc_gets(buffer, sizeof(buffer), &cctx)) { @@ -436,7 +439,7 @@ while (1) } buffer[Ustrlen(buffer) - 1] = 0; - HDEBUG(D_auth) debug_printf("received: '%s'\n", buffer); + HDEBUG(D_auth) debug_printf(" DOVECOT<< '%s'\n", buffer); nargs = strcut(buffer, args, nelem(args)); HDEBUG(D_auth) debug_strcut(args, nargs, nelem(args)); @@ -470,6 +473,8 @@ while (1) #endif write(cctx.sock, temp, Ustrlen(temp))) < 0) OUT("authentication socket write error"); + + HDEBUG(D_auth) debug_printf(" DOVECOT>> '%s'\n", temp); break; case 'F': @@ -523,8 +528,13 @@ if (cctx.sock >= 0) close(cctx.sock); /* Expand server_condition as an authorization check */ -return ret == OK ? auth_check_serv_cond(ablock) : ret; +if (ret == OK) ret = auth_check_serv_cond(ablock); + +HDEBUG(D_auth) debug_printf("dovecot auth ret: %s\n", rc_names[ret]); +return ret; } -#endif /*!MACRO_PREDEF*/ +#endif /*!MACRO_PREDEF*/ +#endif /*AUTH_DOVECOT*/ +/* end of auths/dovecot.c */