TLS resumption: disable on continued-connection
[exim.git] / src / src / functions.h
index 8badd90a421aff32f8f6ecd1f1653fc3b1c3e85d..224666cb121131582deadca58a8bca987032274b 100644 (file)
@@ -2,8 +2,8 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
+/* Copyright (c) The Exim Maintainers 2020 - 2022 */
 /* Copyright (c) University of Cambridge 1995 - 2018 */
-/* Copyright (c) The Exim Maintainers 2020 - 2021 */
 /* See the file NOTICE for conditions of use and distribution. */
 
 
@@ -187,7 +187,8 @@ extern void    daemon_go(void);
 extern int     dcc_process(uschar **);
 #endif
 
-extern void    debug_logging_activate(uschar *, uschar *);
+extern void    debug_logging_activate(const uschar *, const uschar *);
+extern void    debug_logging_from_spool(const uschar *);
 extern void    debug_logging_stop(BOOL);
 extern void    debug_print_argv(const uschar **);
 extern void    debug_print_ids(uschar *);
@@ -201,7 +202,7 @@ extern void    debug_print_socket(int);
 extern void    debug_trigger_fire(void);
 
 extern void    decode_bits(unsigned int *, size_t, int *,
-                  uschar *, bit_table *, int, uschar *, int);
+                  const uschar *, bit_table *, int, uschar *, int);
 extern void    delete_pid_file(void);
 extern void    deliver_local(address_item *, BOOL);
 extern address_item *deliver_make_addr(uschar *, BOOL);
@@ -323,7 +324,7 @@ extern int     ip_streamsocket(const uschar *, uschar **, int, host_item *);
 extern int     ipv6_nmtoa(int *, uschar *);
 
 extern uschar *local_part_quote(uschar *);
-extern int     log_open_as_exim(uschar * const);
+extern int     log_open_as_exim(const uschar * const);
 extern void    log_close_all(void);
 
 extern macro_item * macro_create(const uschar *, const uschar *, BOOL);
@@ -507,7 +508,7 @@ extern BOOL    smtp_hasc(void);
 extern int     smtp_handle_acl_fail(int, int, uschar *, uschar *);
 extern void    smtp_log_no_mail(void);
 extern void    smtp_message_code(uschar **, int *, uschar **, uschar **, BOOL);
-extern void    smtp_proxy_tls(void *, uschar *, size_t, int *, int) NORETURN;
+extern void    smtp_proxy_tls(void *, uschar *, size_t, int *, int, const uschar *) NORETURN;
 extern BOOL    smtp_read_response(void *, uschar *, int, int, int);
 extern void   *smtp_reset(void *);
 extern void    smtp_respond(uschar *, int, BOOL, uschar *);
@@ -788,7 +789,10 @@ static inline uschar *
 string_copyn_taint_trc(const uschar * s, unsigned len,
        const void * proto_mem, const char * func, int line)
 {
-uschar * ss = store_get_3(len + 1, proto_mem, func, line);
+uschar * ss;
+unsigned slen = Ustrlen(s);
+if (len > slen) len = slen;
+ss = store_get_3(len + 1, proto_mem, func, line);
 memcpy(ss, s, len);
 ss[len] = '\0';
 return ss;
@@ -1264,10 +1268,10 @@ HDEBUG(D_transport|D_acl|D_v) debug_printf_indent("  SMTP%c> %s\n",
 
 #  ifndef DISABLE_CLIENT_CMD_LOG
   {
+  int len = Ustrcspn(buf, " \n");
   int old_pool = store_pool;
   store_pool = POOL_PERM;      /* Main pool ACL allocations eg. callouts get released */
-  client_cmd_log = string_append_listele_n(client_cmd_log, ':', buf,
-                                         Ustrcspn(buf, " \n"));
+  client_cmd_log = string_append_listele_n(client_cmd_log, ':', buf, MIN(len, 8));
   if (mode == SCMD_BUFFER) 
     {
     client_cmd_log = string_catn(client_cmd_log, US"|", 1);