)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"414efd94c62ca56ba43d24b6f0b252ff6aeeaebe","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7553277e_97d6fed5","updated":"2024-07-19 13:16:54.000000000","message":"Needs to fix build errors first","commit_id":"575029bbf266fb7e76b30dac6b3e3e6004d40c07"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"87542ce3f7b6ac520989148a01b2051e03c207e9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"516b9c60_4bfa6866","updated":"2024-09-19 11:10:41.000000000","message":"Getting there...","commit_id":"e50c75828e92ece944a136ccfaad31a9d170d122"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"ce08f5790f9abf84718650a03c7727ccd2fa2af2","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":11,"id":"e98ee149_e5da2b87","updated":"2025-10-13 14:49:02.000000000","message":"This changes the logic of adding routes on all platforms in a very drastic way. This requires at least a note in Changes.rst to call this different default behaviour out.","commit_id":"8d7f501d1b45820f4a77c49a5ee082ee0a3f1bb4"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"80d22e5198c23a65689607554c550bdde861127e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"81600912_51628dc5","in_reply_to":"e98ee149_e5da2b87","updated":"2025-10-21 14:10:43.000000000","message":"Done","commit_id":"8d7f501d1b45820f4a77c49a5ee082ee0a3f1bb4"}],"src/openvpn/route.c":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"1f62b9f01746cef695dbb7dafd991a03cb60870b","unresolved":true,"context_lines":[{"line_number":1595,"context_line":"        goto done;"},{"line_number":1596,"context_line":"    }"},{"line_number":1597,"context_line":""},{"line_number":1598,"context_line":"    #ifndef _WIN32"},{"line_number":1599,"context_line":""},{"line_number":1600,"context_line":"    if (rgi \u0026\u0026 (rgi-\u003eflags \u0026 RGI_IFACE_DEFINED) \u0026\u0026 rgi-\u003eiface[0] !\u003d 0)  /* vpn server special route */"},{"line_number":1601,"context_line":"    {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"05ce0096_0799e982","line":1598,"updated":"2024-09-05 10:09:53.000000000","message":"preprocessor directives should not be indented","commit_id":"615b37626691bdcfe20ab9b6895c32327ca86379"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"bb033f9af539c163880678187c4a1060201cfc52","unresolved":false,"context_lines":[{"line_number":1595,"context_line":"        goto done;"},{"line_number":1596,"context_line":"    }"},{"line_number":1597,"context_line":""},{"line_number":1598,"context_line":"    #ifndef _WIN32"},{"line_number":1599,"context_line":""},{"line_number":1600,"context_line":"    if (rgi \u0026\u0026 (rgi-\u003eflags \u0026 RGI_IFACE_DEFINED) \u0026\u0026 rgi-\u003eiface[0] !\u003d 0)  /* vpn server special route */"},{"line_number":1601,"context_line":"    {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"6cceaa5b_47265977","line":1598,"in_reply_to":"05ce0096_0799e982","updated":"2024-09-19 12:58:57.000000000","message":"Done","commit_id":"615b37626691bdcfe20ab9b6895c32327ca86379"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"87542ce3f7b6ac520989148a01b2051e03c207e9","unresolved":true,"context_lines":[{"line_number":1582,"context_line":"    struct gc_arena gc \u003d gc_new();"},{"line_number":1583,"context_line":""},{"line_number":1584,"context_line":"    const char *network \u003d print_in_addr_t(r-\u003enetwork, 0, \u0026gc);"},{"line_number":1585,"context_line":"#if !defined(TARGET_LINUX)"},{"line_number":1586,"context_line":"#if !defined(TARGET_AIX)"},{"line_number":1587,"context_line":"    const char *netmask \u003d print_in_addr_t(r-\u003enetmask, 0, \u0026gc);"},{"line_number":1588,"context_line":"#endif"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"cc58944a_810b6a73","line":1585,"updated":"2024-09-19 11:10:41.000000000","message":"why is that `#ifndef` moved`?  It\u0027s not used by the new Linux code either, or am I misreading it (so, no -Werror safe)?","commit_id":"e50c75828e92ece944a136ccfaad31a9d170d122"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"bb033f9af539c163880678187c4a1060201cfc52","unresolved":false,"context_lines":[{"line_number":1582,"context_line":"    struct gc_arena gc \u003d gc_new();"},{"line_number":1583,"context_line":""},{"line_number":1584,"context_line":"    const char *network \u003d print_in_addr_t(r-\u003enetwork, 0, \u0026gc);"},{"line_number":1585,"context_line":"#if !defined(TARGET_LINUX)"},{"line_number":1586,"context_line":"#if !defined(TARGET_AIX)"},{"line_number":1587,"context_line":"    const char *netmask \u003d print_in_addr_t(r-\u003enetmask, 0, \u0026gc);"},{"line_number":1588,"context_line":"#endif"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"71e62482_873a6e01","line":1585,"in_reply_to":"cc58944a_810b6a73","updated":"2024-09-19 12:58:57.000000000","message":"\"network\" is now used in the new waning","commit_id":"e50c75828e92ece944a136ccfaad31a9d170d122"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"87542ce3f7b6ac520989148a01b2051e03c207e9","unresolved":true,"context_lines":[{"line_number":1596,"context_line":"    }"},{"line_number":1597,"context_line":""},{"line_number":1598,"context_line":"#ifndef _WIN32"},{"line_number":1599,"context_line":""},{"line_number":1600,"context_line":"    if (rgi \u0026\u0026 (rgi-\u003eflags \u0026 RGI_IFACE_DEFINED) \u0026\u0026 rgi-\u003eiface[0] !\u003d 0)  /* vpn server special route */"},{"line_number":1601,"context_line":"    {"},{"line_number":1602,"context_line":"        if (rgi-\u003eflags \u0026 RGI_ADDR_DEFINED \u0026\u0026 r-\u003egateway !\u003d 0)"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"fc88af46_52bd13d6","line":1599,"updated":"2024-09-19 11:10:41.000000000","message":"this blank line (and the one at the end of the if()) feel superfluous","commit_id":"e50c75828e92ece944a136ccfaad31a9d170d122"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"bb033f9af539c163880678187c4a1060201cfc52","unresolved":false,"context_lines":[{"line_number":1596,"context_line":"    }"},{"line_number":1597,"context_line":""},{"line_number":1598,"context_line":"#ifndef _WIN32"},{"line_number":1599,"context_line":""},{"line_number":1600,"context_line":"    if (rgi \u0026\u0026 (rgi-\u003eflags \u0026 RGI_IFACE_DEFINED) \u0026\u0026 rgi-\u003eiface[0] !\u003d 0)  /* vpn server special route */"},{"line_number":1601,"context_line":"    {"},{"line_number":1602,"context_line":"        if (rgi-\u003eflags \u0026 RGI_ADDR_DEFINED \u0026\u0026 r-\u003egateway !\u003d 0)"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"39ad8e78_7d4d9eb3","line":1599,"in_reply_to":"fc88af46_52bd13d6","updated":"2024-09-19 12:58:57.000000000","message":"Done","commit_id":"e50c75828e92ece944a136ccfaad31a9d170d122"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"87542ce3f7b6ac520989148a01b2051e03c207e9","unresolved":true,"context_lines":[{"line_number":1613,"context_line":"        gateway_needed \u003d true;"},{"line_number":1614,"context_line":"    }"},{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":"    if (gateway_needed \u0026\u0026 r-\u003egateway \u003d\u003d 0)"},{"line_number":1617,"context_line":"    {"},{"line_number":1618,"context_line":"        msg(M_WARN, \"ROUTE WARNING: \" PACKAGE_NAME \" needs a gateway \""},{"line_number":1619,"context_line":"            \"parameter for a --route option and no default was set via \""}],"source_content_type":"text/x-csrc","patch_set":9,"id":"6c4000d3_493952ff","line":1616,"updated":"2024-09-19 11:10:41.000000000","message":"if we add this here, we might consider getting rid of this warning in `init_route()` then...  but this is a bit complex, as for most platforms `gateway_needed \u003d true` is still valid, due to limits in route table handling","commit_id":"e50c75828e92ece944a136ccfaad31a9d170d122"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"bb033f9af539c163880678187c4a1060201cfc52","unresolved":false,"context_lines":[{"line_number":1613,"context_line":"        gateway_needed \u003d true;"},{"line_number":1614,"context_line":"    }"},{"line_number":1615,"context_line":""},{"line_number":1616,"context_line":"    if (gateway_needed \u0026\u0026 r-\u003egateway \u003d\u003d 0)"},{"line_number":1617,"context_line":"    {"},{"line_number":1618,"context_line":"        msg(M_WARN, \"ROUTE WARNING: \" PACKAGE_NAME \" needs a gateway \""},{"line_number":1619,"context_line":"            \"parameter for a --route option and no default was set via \""}],"source_content_type":"text/x-csrc","patch_set":9,"id":"aa38e9c7_74e2196e","line":1616,"in_reply_to":"6c4000d3_493952ff","updated":"2024-09-19 12:58:57.000000000","message":"Acknowledged","commit_id":"e50c75828e92ece944a136ccfaad31a9d170d122"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"87542ce3f7b6ac520989148a01b2051e03c207e9","unresolved":true,"context_lines":[{"line_number":1631,"context_line":"    }"},{"line_number":1632,"context_line":"#endif"},{"line_number":1633,"context_line":""},{"line_number":1634,"context_line":"#if defined(TARGET_LINUX)"},{"line_number":1635,"context_line":"    int metric \u003d -1;"},{"line_number":1636,"context_line":""},{"line_number":1637,"context_line":"    if (is_on_link(is_local_route, flags, rgi))"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"1ea919ca_7a56279c","line":1634,"updated":"2024-09-19 11:10:41.000000000","message":"this needs to go - two `#if defined(TARGET_LINUX)` next to each other, with nothing else in between.  Or am I misreading the diff?","commit_id":"e50c75828e92ece944a136ccfaad31a9d170d122"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"bb033f9af539c163880678187c4a1060201cfc52","unresolved":false,"context_lines":[{"line_number":1631,"context_line":"    }"},{"line_number":1632,"context_line":"#endif"},{"line_number":1633,"context_line":""},{"line_number":1634,"context_line":"#if defined(TARGET_LINUX)"},{"line_number":1635,"context_line":"    int metric \u003d -1;"},{"line_number":1636,"context_line":""},{"line_number":1637,"context_line":"    if (is_on_link(is_local_route, flags, rgi))"}],"source_content_type":"text/x-csrc","patch_set":9,"id":"423f7057_a24ac63a","line":1634,"in_reply_to":"1ea919ca_7a56279c","updated":"2024-09-19 12:58:57.000000000","message":"no, you are right, my bad","commit_id":"e50c75828e92ece944a136ccfaad31a9d170d122"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"ce08f5790f9abf84718650a03c7727ccd2fa2af2","unresolved":true,"context_lines":[{"line_number":1603,"context_line":"    {"},{"line_number":1604,"context_line":"        if (rgi-\u003eflags \u0026 RGI_ADDR_DEFINED \u0026\u0026 r-\u003egateway !\u003d 0)"},{"line_number":1605,"context_line":"        {"},{"line_number":1606,"context_line":"            gateway_needed \u003d true;"},{"line_number":1607,"context_line":"        }"},{"line_number":1608,"context_line":"    }"},{"line_number":1609,"context_line":"#endif"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"3706b988_994b1a63","line":1606,"updated":"2025-10-13 14:49:02.000000000","message":"Sure but why is the gateway needed in this case?\n\n And why is this always the vpn server special route? For me this is not obvious and I would like some comment describing the reason here.","commit_id":"8d7f501d1b45820f4a77c49a5ee082ee0a3f1bb4"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"80d22e5198c23a65689607554c550bdde861127e","unresolved":false,"context_lines":[{"line_number":1603,"context_line":"    {"},{"line_number":1604,"context_line":"        if (rgi-\u003eflags \u0026 RGI_ADDR_DEFINED \u0026\u0026 r-\u003egateway !\u003d 0)"},{"line_number":1605,"context_line":"        {"},{"line_number":1606,"context_line":"            gateway_needed \u003d true;"},{"line_number":1607,"context_line":"        }"},{"line_number":1608,"context_line":"    }"},{"line_number":1609,"context_line":"#endif"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"2b9f3a14_b1ffc52f","line":1606,"in_reply_to":"3706b988_994b1a63","updated":"2025-10-21 14:10:43.000000000","message":"Done","commit_id":"8d7f501d1b45820f4a77c49a5ee082ee0a3f1bb4"}]}
