)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"6e3625a2f6bb165e8ef59204fb357e80638fea19","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"4239907d_8e959d5b","updated":"2024-12-24 12:16:20.000000000","message":"Change makes sense, the fbsd12 build fails were due to \"local problems on the test machine\".","commit_id":"6f3b97e173fe9a04f4d690cb481e47773a22f220"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"375a6840bfbc8921c9a5e362d152b4a4a2044caa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a7cc04e0_193120f5","updated":"2024-12-24 13:54:26.000000000","message":"Hah, how annoying.\n\nThe client-side behaviour is fine (changing \"a mismatch of proto and literal address will fail\" to \"upgrade to the other proto\"), but the *server* side behaviour breaks all my dual-stack servers.\n\nSo a config with\n\n```\nport 51194\nproto udp6\n```\n\n(no `local` statement whatsoever, so \"ANY\") ends up IPv4-only\n\n```\n$ netstat -an |grep 51194\nudp        0      0 0.0.0.0:51194           0.0.0.0:*                          \n```\n\n... which is inacceptable.  (This is FreeBSD output, which clearly differentiates between \"udp\", \"udp6\" and \"0.0.0.0:51194\" vs. \":::51194\").  Meh.","commit_id":"6f3b97e173fe9a04f4d690cb481e47773a22f220"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"2d7a44e6966bd4167d0c275a4fae5ea0b8ced298","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"df72d7a7_b53e3d04","updated":"2024-12-24 14:00:18.000000000","message":"So the fix is\n\n```\nif ( hostname \u003d\u003d NULL )           /* bind to ANY, honour proto */\n{\n    hints.ai_family \u003d ai_family;\n}","commit_id":"6f3b97e173fe9a04f4d690cb481e47773a22f220"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"6ab0c3abc436fc3238817977a9b2fe88723f3034","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ea7284a7_b94bb1c9","updated":"2024-12-24 13:56:34.000000000","message":"adding `local ::` to said config makes it\n\n```\nudp6       0      0 :::51194                :::*                               \n```\n\nso it can be made to work, but I really prefer that we do not break the current behaviour for \"ANY\".","commit_id":"6f3b97e173fe9a04f4d690cb481e47773a22f220"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"a6eb789ac53f1b119d06fe789efc6f588fe42a8d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"41e53f39_b0214bfd","updated":"2024-12-27 16:17:34.000000000","message":"looks good, code is understandable, and passes all tests.  Go for it ;-)","commit_id":"b7c522adbf6eac54c3c85067a9f4dcc08d9de7e0"}],"src/openvpn/socket.c":[{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"afc0bd24747b7988afd0268a44827baad4e0a465","unresolved":true,"context_lines":[{"line_number":491,"context_line":"    /* try numeric ip addr first */"},{"line_number":492,"context_line":"    CLEAR(hints);"},{"line_number":493,"context_line":"    hints.ai_flags \u003d AI_NUMERICHOST;"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"    if (!hostname)"},{"line_number":496,"context_line":"    {"},{"line_number":497,"context_line":"        hints.ai_family \u003d ai_family;"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"46ef8fb5_f1cbeb95","line":494,"updated":"2024-12-27 11:48:57.000000000","message":"we should have a comment here that explains what `!hostname` stands for (ANY) and why honouring afi is important in this case (to use what `proto` requests, and not what the OS defaults to)","commit_id":"7a970aef0cf1dfdd53dc11cb8dfcf595a58dbcff"},{"author":{"_account_id":1000034,"name":"its_Giaan","display_name":"Gianmarco De Gregori","email":"gianmarco@mandelbit.com","username":"its_Giaan"},"change_message_id":"99114f0a1b61eab294080e976720595c9cc7ad19","unresolved":false,"context_lines":[{"line_number":491,"context_line":"    /* try numeric ip addr first */"},{"line_number":492,"context_line":"    CLEAR(hints);"},{"line_number":493,"context_line":"    hints.ai_flags \u003d AI_NUMERICHOST;"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"    if (!hostname)"},{"line_number":496,"context_line":"    {"},{"line_number":497,"context_line":"        hints.ai_family \u003d ai_family;"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"b432ca95_7c1c0b14","line":494,"in_reply_to":"46ef8fb5_f1cbeb95","updated":"2024-12-27 12:40:14.000000000","message":"Done","commit_id":"7a970aef0cf1dfdd53dc11cb8dfcf595a58dbcff"}]}
