git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Rename EXPERIMENTAL_SRS to EXPERIMENTAL_SRS_ALT
[exim.git]
/
src
/
src
/
routers
/
queryprogram.c
diff --git
a/src/src/routers/queryprogram.c
b/src/src/routers/queryprogram.c
index 251b0b89f2d8cab2bb5a24e18eff106b131805f4..5b206c57298354d59d0412775f624fca71a5ea8e 100644
(file)
--- a/
src/src/routers/queryprogram.c
+++ b/
src/src/routers/queryprogram.c
@@
-2,7
+2,8
@@
* Exim - an Internet mail transport agent *
*************************************************/
* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) University of Cambridge 1995 - 2017 */
+/* Copyright (c) University of Cambridge 1995 - 2018 */
+/* Copyright (c) The Exim Maintainers 2020 */
/* See the file NOTICE for conditions of use and distribution. */
#include "../exim.h"
/* See the file NOTICE for conditions of use and distribution. */
#include "../exim.h"
@@
-15,23
+16,23
@@
optionlist queryprogram_router_options[] = {
{ "*expand_command_group", opt_bool | opt_hidden,
optionlist queryprogram_router_options[] = {
{ "*expand_command_group", opt_bool | opt_hidden,
-
(void *)(offsetof(queryprogram_router_options_block, expand_cmd_gid)
) },
+
OPT_OFF(queryprogram_router_options_block, expand_cmd_gid
) },
{ "*expand_command_user", opt_bool | opt_hidden,
{ "*expand_command_user", opt_bool | opt_hidden,
-
(void *)(offsetof(queryprogram_router_options_block, expand_cmd_uid)
) },
+
OPT_OFF(queryprogram_router_options_block, expand_cmd_uid
) },
{ "*set_command_group", opt_bool | opt_hidden,
{ "*set_command_group", opt_bool | opt_hidden,
-
(void *)(offsetof(queryprogram_router_options_block, cmd_gid_set)
) },
+
OPT_OFF(queryprogram_router_options_block, cmd_gid_set
) },
{ "*set_command_user", opt_bool | opt_hidden,
{ "*set_command_user", opt_bool | opt_hidden,
-
(void *)(offsetof(queryprogram_router_options_block, cmd_uid_set)
) },
+
OPT_OFF(queryprogram_router_options_block, cmd_uid_set
) },
{ "command", opt_stringptr,
{ "command", opt_stringptr,
-
(void *)(offsetof(queryprogram_router_options_block, command)
) },
+
OPT_OFF(queryprogram_router_options_block, command
) },
{ "command_group",opt_expand_gid,
{ "command_group",opt_expand_gid,
-
(void *)(offsetof(queryprogram_router_options_block, cmd_gid)
) },
+
OPT_OFF(queryprogram_router_options_block, cmd_gid
) },
{ "command_user", opt_expand_uid,
{ "command_user", opt_expand_uid,
-
(void *)(offsetof(queryprogram_router_options_block, cmd_uid)
) },
+
OPT_OFF(queryprogram_router_options_block, cmd_uid
) },
{ "current_directory", opt_stringptr,
{ "current_directory", opt_stringptr,
-
(void *)(offsetof(queryprogram_router_options_block, current_directory)
) },
+
OPT_OFF(queryprogram_router_options_block, current_directory
) },
{ "timeout", opt_time,
{ "timeout", opt_time,
-
(void *)(offsetof(queryprogram_router_options_block, timeout)
) }
+
OPT_OFF(queryprogram_router_options_block, timeout
) }
};
/* Size of the options list. An extern variable has to be used so that its
};
/* Size of the options list. An extern variable has to be used so that its
@@
-232,6
+233,7
@@
errors address and extra header stuff. */
bzero(&addr_prop, sizeof(addr_prop));
addr_prop.address_data = deliver_address_data;
bzero(&addr_prop, sizeof(addr_prop));
addr_prop.address_data = deliver_address_data;
+tree_dup((tree_node **)&addr_prop.variables, addr->prop.variables);
rc = rf_get_errors_address(addr, rblock, verify, &addr_prop.errors_address);
if (rc != OK) return rc;
rc = rf_get_errors_address(addr, rblock, verify, &addr_prop.errors_address);
if (rc != OK) return rc;
@@
-240,7
+242,7
@@
rc = rf_get_munge_headers(addr, rblock, &addr_prop.extra_headers,
&addr_prop.remove_headers);
if (rc != OK) return rc;
&addr_prop.remove_headers);
if (rc != OK) return rc;
-#ifdef EXPERIMENTAL_SRS
+#ifdef EXPERIMENTAL_SRS
_ALT
addr_prop.srs_sender = NULL;
#endif
addr_prop.srs_sender = NULL;
#endif
@@
-307,10
+309,8
@@
if (!transport_set_up_command(&argvptr, /* anchor for arg list */
/* Create the child process, making it a group leader. */
/* Create the child process, making it a group leader. */
-pid = child_open_uid(argvptr, NULL, 0077, puid, pgid, &fd_in, &fd_out,
- current_directory, TRUE);
-
-if (pid < 0)
+if ((pid = child_open_uid(argvptr, NULL, 0077, puid, pgid, &fd_in, &fd_out,
+ current_directory, TRUE, US"queryprogram-cmd")) < 0)
{
addr->message = string_sprintf("%s router couldn't create child process: %s",
rblock->name, strerror(errno));
{
addr->message = string_sprintf("%s router couldn't create child process: %s",
rblock->name, strerror(errno));
@@
-489,9
+489,9
@@
lookup_value = NULL;
if (*s != 0)
{
transport_instance *transport;
if (*s != 0)
{
transport_instance *transport;
- for (transport = transports; transport
!= NULL
; transport = transport->next)
+ for (transport = transports; transport; transport = transport->next)
if (Ustrcmp(transport->name, s) == 0) break;
if (Ustrcmp(transport->name, s) == 0) break;
- if (
transport == NULL
)
+ if (
!transport
)
{
addr->message = string_sprintf("unknown transport name %s yielded by "
"command", s);
{
addr->message = string_sprintf("unknown transport name %s yielded by "
"command", s);