X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Froute.c;h=ede15304159b651bd38842af62efe2e1216e4e3b;hb=87abcb247b4444bab5fd0bcb212ddb26d5fd9191;hp=f50a86e9757af64a997307b985485dffc623ec51;hpb=f9ba5e2255cf18092750fffacb6a9603571a2be5;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/route.c b/src/src/route.c index f50a86e97..ede153041 100644 --- a/src/src/route.c +++ b/src/src/route.c @@ -150,12 +150,11 @@ int optionlist_routers_size = nelem(optionlist_routers); void options_routers(void) { -struct router_info * ri; uschar buf[64]; options_from_list(optionlist_routers, nelem(optionlist_routers), US"ROUTERS", NULL); -for (ri = routers_available; ri->driver_name[0]; ri++) +for (router_info * ri = routers_available; ri->driver_name[0]; ri++) { spf(buf, sizeof(buf), US"_DRIVER_ROUTER_%T", ri->driver_name); builtin_macro_create(buf); @@ -222,8 +221,6 @@ function. */ void route_init(void) { -router_instance *r; - readconf_driver_init(US"router", (driver_instance **)(&routers), /* chain anchor */ (driver_info *)routers_available, /* available drivers */ @@ -233,7 +230,7 @@ readconf_driver_init(US"router", optionlist_routers, /* generic options */ optionlist_routers_size); -for (r = routers; r; r = r->next) +for (router_instance * r = routers; r; r = r->next) { uschar *s = r->self; @@ -317,8 +314,7 @@ is finished, via this function. */ void route_tidyup(void) { -router_instance *r; -for (r = routers; r; r = r->next) +for (router_instance * r = routers; r; r = r->next) if (r->info->tidyup) (r->info->tidyup)(r); } @@ -352,9 +348,8 @@ while ((prefix = string_nextinlist(&listptr, &sep, prebuf, sizeof(prebuf)))) int plen = Ustrlen(prefix); if (prefix[0] == '*') { - const uschar *p; prefix++; - for (p = local_part + Ustrlen(local_part) - (--plen); + for (const uschar * p = local_part + Ustrlen(local_part) - (--plen); p >= local_part; p--) if (strncmpic(prefix, p, plen) == 0) return plen + p - local_part; } @@ -396,9 +391,8 @@ while ((suffix = string_nextinlist(&listptr, &sep, sufbuf, sizeof(sufbuf)))) int slen = Ustrlen(suffix); if (suffix[slen-1] == '*') { - const uschar *p, *pend; - pend = local_part + alen - (--slen) + 1; - for (p = local_part; p < pend; p++) + const uschar *pend = local_part + alen - (--slen) + 1; + for (const uschar * p = local_part; p < pend; p++) if (strncmpic(suffix, p, slen) == 0) return alen - (p - local_part); } else @@ -606,7 +600,7 @@ while ((check = string_nextinlist(&listptr, &sep, buffer, sizeof(buffer)))) if (!ss) { - if (expand_string_forcedfail) continue; + if (f.expand_string_forcedfail) continue; *perror = string_sprintf("failed to expand \"%s\" for require_files: %s", check, expand_string_message); goto RETURN_DEFER; @@ -854,7 +848,7 @@ deliver_localpart_data = NULL; sender_data = NULL; local_user_gid = (gid_t)(-1); local_user_uid = (uid_t)(-1); -search_find_defer = FALSE; +f.search_find_defer = FALSE; /* Skip this router if not verifying and it has verify_only set */ @@ -866,7 +860,7 @@ if ((verify == v_none || verify == v_expn) && r->verify_only) /* Skip this router if testing an address (-bt) and address_test is not set */ -if (address_test_mode && !r->address_test) +if (f.address_test_mode && !r->address_test) { DEBUG(D_route) debug_printf("%s router skipped: address_test is unset\n", r->name); @@ -958,7 +952,7 @@ if (r->router_home_directory) uschar *router_home = expand_string(r->router_home_directory); if (!router_home) { - if (!expand_string_forcedfail) + if (!f.expand_string_forcedfail) { *perror = string_sprintf("failed to expand \"%s\" for " "router_home_directory: %s", r->router_home_directory, @@ -1003,7 +997,7 @@ if (r->condition) 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) + if (f.search_find_defer) { *perror = US"condition check lookup defer"; DEBUG(D_route) debug_printf("%s\n", *perror); @@ -1460,7 +1454,6 @@ for (r = addr->start_router ? addr->start_router : routers; r; r = nextr) uschar *error; struct passwd *pw = NULL; struct passwd pwcopy; - address_item *parent; BOOL loop_detected = FALSE; BOOL more; int loopcount = 0; @@ -1474,7 +1467,7 @@ for (r = addr->start_router ? addr->start_router : routers; r; r = nextr) /* There are some weird cases where logging is disabled */ - disable_logging = r->disable_logging; + f.disable_logging = r->disable_logging; /* Record the last router to handle the address, and set the default next router. */ @@ -1494,7 +1487,7 @@ for (r = addr->start_router ? addr->start_router : routers; r; r = nextr) continually adding to an address, for example), put a long stop counter on the number of parents. */ - for (parent = addr->parent; parent; parent = parent->parent) + for (address_item * parent = addr->parent; parent; parent = parent->parent) { if (parent->router == r) { @@ -1620,7 +1613,7 @@ for (r = addr->start_router ? addr->start_router : routers; r; r = nextr) deliver_address_data = expand_string(r->address_data); if (!deliver_address_data) { - if (expand_string_forcedfail) + if (f.expand_string_forcedfail) { DEBUG(D_route) debug_printf("forced failure in expansion of \"%s\" " "(address_data): decline action taken\n", r->address_data); @@ -1672,10 +1665,7 @@ for (r = addr->start_router ? addr->start_router : routers; r; r = nextr) pw = &pwcopy; } - /* Run the router, and handle the consequences. */ - - /* ... but let us check on DSN before. If this should be the last hop for DSN - set flag. */ + /* If this should be the last hop for DSN flag the addr. */ if (r->dsn_lasthop && !(addr->dsn_flags & rf_dsnlasthop)) { @@ -1683,6 +1673,8 @@ for (r = addr->start_router ? addr->start_router : routers; r; r = nextr) HDEBUG(D_route) debug_printf("DSN: last hop for %s\n", addr->address); } + /* Run the router, and handle the consequences. */ + HDEBUG(D_route) debug_printf("calling %s router\n", r->name); yield = (r->info->code)(r, addr, pw, verify, paddr_local, paddr_remote, @@ -1766,7 +1758,7 @@ if (!r) uschar *expmessage = expand_string(addr->router->cannot_route_message); if (!expmessage) { - if (!expand_string_forcedfail) + if (!f.expand_string_forcedfail) log_write(0, LOG_MAIN|LOG_PANIC, "failed to expand " "cannot_route_message in %s router: %s", addr->router->name, expand_string_message); @@ -1821,8 +1813,7 @@ if (r->translate_ip_address) { int rc; int old_pool = store_pool; - host_item *h; - for (h = addr->host_list; h; h = h->next) + for (host_item * h = addr->host_list; h; h = h->next) { uschar *newaddress; uschar *oldaddress, *oldname; @@ -1835,7 +1826,7 @@ if (r->translate_ip_address) if (!newaddress) { - if (expand_string_forcedfail) continue; + if (f.expand_string_forcedfail) continue; addr->basic_errno = ERRNO_EXPANDFAIL; addr->message = string_sprintf("translate_ip_address expansion " "failed: %s", expand_string_message); @@ -1887,16 +1878,14 @@ HDEBUG(D_route) debug_printf("routed by %s router%s\n", r->name, DEBUG(D_route) { - host_item *h; - debug_printf(" envelope to: %s\n", addr->address); - debug_printf(" transport: %s\n", (addr->transport == NULL)? - US"" : addr->transport->name); + debug_printf(" transport: %s\n", addr->transport + ? addr->transport->name : US""); if (addr->prop.errors_address) debug_printf(" errors to %s\n", addr->prop.errors_address); - for (h = addr->host_list; h; h = h->next) + for (host_item * h = addr->host_list; h; h = h->next) { debug_printf(" host %s", h->name); if (h->address) debug_printf(" [%s]", h->address); @@ -1923,7 +1912,7 @@ if (yield == DEFER && addr->message) deliver_set_expansions(NULL); router_name = NULL; -disable_logging = FALSE; +f.disable_logging = FALSE; return yield; }