X-Git-Url: https://git.exim.org/users/jgh/exim.git/blobdiff_plain/f3ebb786e451da973560f1c9d8cdb151d25108b5..fc7bae7f2fa3668ada9bd173e9f24c7166e1dd13:/src/src/exim.c diff --git a/src/src/exim.c b/src/src/exim.c index f163b1249..3290d6346 100644 --- a/src/src/exim.c +++ b/src/src/exim.c @@ -916,6 +916,9 @@ fprintf(fp, "Support for:"); #ifdef SUPPORT_SPF fprintf(fp, " SPF"); #endif +#ifdef SUPPORT_DMARC + fprintf(fp, " DMARC"); +#endif #ifdef TCP_FASTOPEN deliver_init(); if (f.tcp_fastopen_ok) fprintf(fp, " TCP_Fast_Open"); @@ -938,9 +941,6 @@ fprintf(fp, "Support for:"); #ifdef EXPERIMENTAL_DCC fprintf(fp, " Experimental_DCC"); #endif -#ifdef EXPERIMENTAL_DMARC - fprintf(fp, " Experimental_DMARC"); -#endif #ifdef EXPERIMENTAL_DSN_INFO fprintf(fp, " Experimental_DSN_info"); #endif @@ -1593,6 +1593,10 @@ because some OS define it in /usr/include/unistd.h. */ extern char **environ; +#ifdef MEASURE_TIMING +(void)gettimeofday(×tamp_startup, NULL); +#endif + /* If the Exim user and/or group and/or the configuration file owner/group were defined by ref:name at build time, we must now find the actual uid/gid values. This is a feature to make the lives of binary distributors easier. */ @@ -2665,7 +2669,7 @@ for (i = 1; i < argc; i++) exim_fail("exim: getsockname() failed after -MC option: %s\n", strerror(errno)); - if (f.running_in_test_harness) millisleep(500); + testharness_pause_ms(500); break; } @@ -2783,6 +2787,11 @@ for (i = 1; i < argc; i++) msg_action = MSG_DELIVER; deliver_give_up = TRUE; } + else if (Ustrcmp(argrest, "G") == 0) + { + msg_action = MSG_SETQUEUE; + queue_name_dest = argv[++i]; + } else if (Ustrcmp(argrest, "mad") == 0) { msg_action = MSG_MARK_ALL_DELIVERED; @@ -3464,7 +3473,7 @@ if (debug_selector != 0) debug_file = stderr; debug_fd = fileno(debug_file); f.background_daemon = FALSE; - if (f.running_in_test_harness) millisleep(100); /* lets caller finish */ + testharness_pause_ms(100); /* lets caller finish */ if (debug_selector != D_v) /* -v only doesn't show this */ { debug_printf("Exim version %s uid=%ld gid=%ld pid=%d D=%x\n", @@ -3686,7 +3695,18 @@ If any of these options is set, we suppress warnings about configuration issues (currently about tls_advertise_hosts and keep_environment not being defined) */ -readconf_main(checking || list_options); + { +#ifdef MEASURE_TIMING + struct timeval t0, diff; + (void)gettimeofday(&t0, NULL); +#endif + + readconf_main(checking || list_options); + +#ifdef MEASURE_TIMING + report_time_since(&t0, US"readconf_main (delta)"); +#endif + } /* Now in directory "/" */ @@ -4049,11 +4069,13 @@ count. Only an admin user can use the test interface to scan for email if (!f.admin_user) { BOOL debugset = (debug_selector & ~D_v) != 0; - if (deliver_give_up || f.daemon_listen || malware_test_file || - (count_queue && queue_list_requires_admin) || - (list_queue && queue_list_requires_admin) || - (queue_interval >= 0 && prod_requires_admin) || - (debugset && !f.running_in_test_harness)) + if ( deliver_give_up || f.daemon_listen || malware_test_file + || count_queue && queue_list_requires_admin + || list_queue && queue_list_requires_admin + || queue_interval >= 0 && prod_requires_admin + || queue_name_dest && prod_requires_admin + || debugset && !f.running_in_test_harness + ) exim_fail("exim:%s permission denied\n", debugset? " debugging" : ""); } @@ -4150,13 +4172,9 @@ now for those OS that require the first call to os_getloadavg() to be done as root. There will be further calls later for each message received. */ #ifdef LOAD_AVG_NEEDS_ROOT -if (receiving_message && - (queue_only_load >= 0 || - (f.is_inetd && smtp_load_reserve >= 0) - )) - { +if ( receiving_message + && (queue_only_load >= 0 || (f.is_inetd && smtp_load_reserve >= 0))) load_average = OS_GETLOADAVG(); - } #endif /* The queue_only configuration option can be overridden by -odx on the command @@ -4294,7 +4312,18 @@ if (msg_action_arg > 0 && msg_action != MSG_DELIVER && msg_action != MSG_LOAD) Now, since the intro of the ${acl } expansion, ACL definitions may be needed in transports so we lost the optimisation. */ -readconf_rest(); + { +#ifdef MEASURE_TIMING + struct timeval t0, diff; + (void)gettimeofday(&t0, NULL); +#endif + + readconf_rest(); + +#ifdef MEASURE_TIMING + report_time_since(&t0, US"readconf_rest (delta)"); +#endif + } /* Handle the -brt option. This is for checking out retry configurations. The next three arguments are a domain name or a complete address, and @@ -4456,9 +4485,28 @@ if (list_config) /* Initialise subsystems as required */ #ifndef DISABLE_DKIM -dkim_exim_init(); + { +# ifdef MEASURE_TIMING + struct timeval t0; + gettimeofday(&t0, NULL); +# endif + dkim_exim_init(); +# ifdef MEASURE_TIMING + report_time_since(&t0, US"dkim_exim_init (delta)"); +# endif + } +#endif + + { +#ifdef MEASURE_TIMING + struct timeval t0; + gettimeofday(&t0, NULL); #endif -deliver_init(); + deliver_init(); +#ifdef MEASURE_TIMING + report_time_since(&t0, US"deliver_init (delta)"); +#endif + } /* Handle a request to deliver one or more messages that are already on the