X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/79bc02a3499931de53f5e9ea74795d691b3a9569..3327394394a45c79cd48b2091536f6a6b8ba32a3:/src/src/dbstuff.h diff --git a/src/src/dbstuff.h b/src/src/dbstuff.h index a45874dc9..8a8a5fb67 100644 --- a/src/src/dbstuff.h +++ b/src/src/dbstuff.h @@ -3,6 +3,7 @@ *************************************************/ /* Copyright (c) University of Cambridge 1995 - 2018 */ +/* Copyright (c) The Exim Maintainers 2020 */ /* See the file NOTICE for conditions of use and distribution. */ /* This header file contains macro definitions so that a variety of DBM @@ -74,7 +75,7 @@ free() must not die when passed NULL */ key.dptr != NULL) /* EXIM_DBDELETE_CURSOR - terminate scanning operation. */ -#define EXIM_DBDELETE_CURSOR(cursor) free(cursor) +#define EXIM_DBDELETE_CURSOR(cursor) store_free(cursor) /* EXIM_DBCLOSE */ #define EXIM_DBCLOSE__(db) tdb_close(db) @@ -435,9 +436,8 @@ before been able to pass successfully. */ #define EXIM_DBSCAN(db, key, data, first, cursor) \ ((db)->seq(db, &key, &data, (first? R_FIRST : R_NEXT)) == 0) -/* EXIM_DBDELETE_CURSOR - terminate scanning operation (null). Make it -refer to cursor, to keep picky compilers happy. */ -#define EXIM_DBDELETE_CURSOR(cursor) { cursor = cursor; } +/* EXIM_DBDELETE_CURSOR - terminate scanning operation (null). */ +#define EXIM_DBDELETE_CURSOR(cursor) { } /* EXIM_DBCLOSE */ #define EXIM_DBCLOSE__(db) (db)->close(db) @@ -523,9 +523,8 @@ typedef struct { (((db)->lkey.dptr != NULL)? (free((db)->lkey.dptr),1) : 1),\ db->lkey = key, key.dptr != NULL) -/* EXIM_DBDELETE_CURSOR - terminate scanning operation (null). Make it -refer to cursor, to keep picky compilers happy. */ -#define EXIM_DBDELETE_CURSOR(cursor) { cursor = cursor; } +/* EXIM_DBDELETE_CURSOR - terminate scanning operation (null). */ +#define EXIM_DBDELETE_CURSOR(cursor) { } /* EXIM_DBCLOSE */ #define EXIM_DBCLOSE__(db) \ @@ -601,9 +600,8 @@ interface */ #define EXIM_DBSCAN(db, key, data, first, cursor) \ (key = (first? dbm_firstkey(db) : dbm_nextkey(db)), key.dptr != NULL) -/* EXIM_DBDELETE_CURSOR - terminate scanning operation (null). Make it -refer to cursor, to keep picky compilers happy. */ -#define EXIM_DBDELETE_CURSOR(cursor) { cursor = cursor; } +/* EXIM_DBDELETE_CURSOR - terminate scanning operation (null). */ +#define EXIM_DBDELETE_CURSOR(cursor) { } /* EXIM_DBCLOSE */ #define EXIM_DBCLOSE__(db) dbm_close(db) @@ -794,13 +792,21 @@ typedef struct { #ifndef DISABLE_PIPE_CONNECT /* This structure records the EHLO responses, cleartext and crypted, -for an IP, as bitmasks (cf. OPTION_TLS) */ +for an IP, as bitmasks (cf. OPTION_TLS). For LIMITS, also values +advertised for MAILMAX, RCPTMAX and RCPTDOMAINMAX; zero meaning no +value advertised. */ typedef struct { unsigned short cleartext_features; unsigned short crypted_features; unsigned short cleartext_auths; unsigned short crypted_auths; + +# ifdef EXPERIMENTAL_ESMTP_LIMITS + unsigned int limit_mail; + unsigned int limit_rcpt; + unsigned int limit_rcptdom; +# endif } ehlo_resp_precis; typedef struct {