)]}'
{"src/openvpn/multi.c":[{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"4c72d771eeb31ebbd4571c4b6013e7253a7f83ef","unresolved":true,"context_lines":[{"line_number":1360,"context_line":"    while ((he \u003d hash_iterator_next(\u0026hi)) !\u003d NULL)"},{"line_number":1361,"context_line":"    {"},{"line_number":1362,"context_line":"        struct multi_route *r \u003d (struct multi_route *)he-\u003evalue;"},{"line_number":1363,"context_line":"        if (multi_route_defined(m, r) \u0026\u0026 !(r-\u003eflags \u0026 MULTI_ROUTE_PERMANENT)"},{"line_number":1364,"context_line":"            \u0026\u0026 difftime(now, r-\u003elast_reference) \u003e\u003d m-\u003etop.options.stale_routes_ageing_time)"},{"line_number":1365,"context_line":"        {"},{"line_number":1366,"context_line":"            dmsg(D_MULTI_DEBUG, \"MULTI: Deleting stale route for address \u0027%s\u0027\","}],"source_content_type":"text/x-csrc","patch_set":1,"id":"edd0f44c_5462d744","line":1363,"updated":"2026-06-24 09:51:20.000000000","message":"Why do we need the PERMANENT flag? Cannot we just use here r-\u003eflags \u0026 MULTI_ROUTE_CACHE? Or are there routes that are not cached that we want to remove here as well?","commit_id":"78a52c142ef1f4957c01f932c088fb78e58ac5a7"},{"author":{"_account_id":1000007,"name":"ordex","display_name":"Antonio Quartulli","email":"antonio@mandelbit.com","username":"ordex"},"change_message_id":"ebbbe719ba0b428cd12e441e06af35866d2f7bbe","unresolved":true,"context_lines":[{"line_number":1360,"context_line":"    while ((he \u003d hash_iterator_next(\u0026hi)) !\u003d NULL)"},{"line_number":1361,"context_line":"    {"},{"line_number":1362,"context_line":"        struct multi_route *r \u003d (struct multi_route *)he-\u003evalue;"},{"line_number":1363,"context_line":"        if (multi_route_defined(m, r) \u0026\u0026 !(r-\u003eflags \u0026 MULTI_ROUTE_PERMANENT)"},{"line_number":1364,"context_line":"            \u0026\u0026 difftime(now, r-\u003elast_reference) \u003e\u003d m-\u003etop.options.stale_routes_ageing_time)"},{"line_number":1365,"context_line":"        {"},{"line_number":1366,"context_line":"            dmsg(D_MULTI_DEBUG, \"MULTI: Deleting stale route for address \u0027%s\u0027\","}],"source_content_type":"text/x-csrc","patch_set":1,"id":"a9a46ab7_6fd7dcb5","line":1363,"in_reply_to":"edd0f44c_5462d744","updated":"2026-06-24 10:50:49.000000000","message":"as per the commit message:\n\n\"Routes learned from configuration (iroutes and pushed ifconfig\naddresses) and genuinely dynamic routes (TAP source addresses learned\nfrom the data channel) were both added with flags \u003d\u003d 0, so\ncheck_stale_routes() could not tell them apart and aged out all of\nthem.\"\n\nhence the PERMANENT flag is to make the distinction clear. Those learnt through TAP still have no flags and are expected to go through the stale check","commit_id":"78a52c142ef1f4957c01f932c088fb78e58ac5a7"}]}
