int optionlist_routers_size = sizeof(optionlist_routers)/sizeof(optionlist);
+void
+readconf_options_routers(void)
+{
+struct router_info * ri;
+
+readconf_options_from_list(optionlist_routers, nelem(optionlist_routers), US"RT");
+
+for (ri = routers_available; ri->driver_name[0]; ri++)
+ {
+ macro_create(string_sprintf("_DRVR_RTR_%T", ri->driver_name), US"y", FALSE, TRUE);
+ readconf_options_from_list(ri->options, (unsigned)*ri->options_count, ri->driver_name);
+ }
+}
/*************************************************
* Set router pointer from name *
if (r->condition)
{
- DEBUG(D_route) debug_printf("checking \"condition\"\n");
+ DEBUG(D_route) debug_printf("checking \"condition\" \"%.80s\"...\n", r->condition);
if (!expand_check_condition(r->condition, r->name, US"router"))
{
if (search_find_defer)
set flag. */
if (r->dsn_lasthop && !(addr->dsn_flags & rf_dsnlasthop))
- {
+ {
addr->dsn_flags |= rf_dsnlasthop;
HDEBUG(D_route) debug_printf("DSN: last hop for %s\n", addr->address);
- }
+ }
HDEBUG(D_route) debug_printf("calling %s router\n", r->name);
/* Unset the address expansions, and return the final result. */
ROUTE_EXIT:
-if ( yield == DEFER
- && addr->message
- && ( Ustrstr(addr->message, "failed to expand") != NULL
- || Ustrstr(addr->message, "expansion of ") != NULL
- )
- && ( Ustrstr(addr->message, "mysql") != NULL
- || Ustrstr(addr->message, "pgsql") != NULL
-#ifdef EXPERIMENTAL_REDIS
- || Ustrstr(addr->message, "redis") != NULL
-#endif
- || Ustrstr(addr->message, "sqlite") != NULL
- || Ustrstr(addr->message, "ldap:") != NULL
- || Ustrstr(addr->message, "ldapdn:") != NULL
- || Ustrstr(addr->message, "ldapm:") != NULL
- )
- )
- addr->message = string_sprintf("Temporary internal error");
+if (yield == DEFER && addr->message)
+ addr->message = expand_hide_passwords(addr->message);
deliver_set_expansions(NULL);
router_name = NULL;