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
Copyright updates:
[exim.git]
/
src
/
src
/
routers
/
queryprogram.c
diff --git
a/src/src/routers/queryprogram.c
b/src/src/routers/queryprogram.c
index fc92835c0ea8d894ac9c330fba9ef33667c7b0e6..03c84fc8953c026bc588f8b275170a32498f5162 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 - 2016 */
+/* 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
@@
-130,7
+131,7
@@
while (generated != NULL)
next->parent = addr;
next->prop = *addr_prop;
next->parent = addr;
next->prop = *addr_prop;
- next->prop.ignore_error
|=
ignore_error;
+ next->prop.ignore_error
= next->prop.ignore_error ||
ignore_error;
next->start_router = rblock->redirect_router;
next->next = *addr_new;
next->start_router = rblock->redirect_router;
next->next = *addr_new;
@@
-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;
@@
-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);
@@
-520,14
+520,14
@@
s = expand_string(US"${extract{hosts}{$value}}");
if (*s != 0)
{
if (*s != 0)
{
- int lookup_type =
lk_default
;
+ int lookup_type =
LK_DEFAULT
;
uschar *ss = expand_string(US"${extract{lookup}{$value}}");
lookup_value = NULL;
if (*ss != 0)
{
uschar *ss = expand_string(US"${extract{lookup}{$value}}");
lookup_value = NULL;
if (*ss != 0)
{
- if (Ustrcmp(ss, "byname") == 0) lookup_type =
lk_byname
;
- else if (Ustrcmp(ss, "bydns") == 0) lookup_type =
lk_bydns
;
+ if (Ustrcmp(ss, "byname") == 0) lookup_type =
LK_BYNAME
;
+ else if (Ustrcmp(ss, "bydns") == 0) lookup_type =
LK_BYDNS
;
else
{
addr->message = string_sprintf("bad lookup type \"%s\" yielded by "
else
{
addr->message = string_sprintf("bad lookup type \"%s\" yielded by "