)]}'
{"src/openvpn/mudp.c":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"3cf1f54f9735f2ca9fdf736a06a7bb61bb8aec63","unresolved":true,"context_lines":[{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    if (mroute_extract_openvpn_sockaddr(\u0026real, \u0026m-\u003etop.c2.from.dest, true) \u0026\u0026 m-\u003etop.c2.buf.len \u003e 0)"},{"line_number":296,"context_line":"    {"},{"line_number":297,"context_line":"        return multi_get_instance_real_udp_real(m, \u0026real);"},{"line_number":298,"context_line":"    }"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    return NULL;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"5f0803e5_1b073337","line":297,"updated":"2026-07-06 12:26:32.000000000","message":"```\nmudp.c:297:16: error: call to undeclared function \u0027multi_get_instance_real_udp_real\u0027; ISO C99 and later do not support implicit function declarations [-Werror,-Wimplicit-function-declaration]\n  297 |         return multi_get_instance_real_udp_real(m, \u0026real);\n      |                ^\nmudp.c:297:16: note: did you mean \u0027multi_get_instance_udp_real\u0027?\nmudp.c:275:1: note: \u0027multi_get_instance_udp_real\u0027 declared here\n  275 | multi_get_instance_udp_real(struct multi_context *m, struct mroute_addr *real)\n      | ^\n```","commit_id":"30112912578226bfe2e750920037a567b6ca5a16"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"e4c5fe620fb9a0ab93f3a9762d97c288c58bbff1","unresolved":false,"context_lines":[{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    if (mroute_extract_openvpn_sockaddr(\u0026real, \u0026m-\u003etop.c2.from.dest, true) \u0026\u0026 m-\u003etop.c2.buf.len \u003e 0)"},{"line_number":296,"context_line":"    {"},{"line_number":297,"context_line":"        return multi_get_instance_real_udp_real(m, \u0026real);"},{"line_number":298,"context_line":"    }"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    return NULL;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"94cb8b1b_b89af342","line":297,"in_reply_to":"5f0803e5_1b073337","updated":"2026-07-14 12:22:51.000000000","message":"Done","commit_id":"30112912578226bfe2e750920037a567b6ca5a16"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"e3a60e58cb89167670d70aa1ed96d5cccfe779f5","unresolved":true,"context_lines":[{"line_number":361,"context_line":"    struct mroute_addr real \u003d { 0 };"},{"line_number":362,"context_line":"    real.proto \u003d sock-\u003einfo.proto;"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    if (!mroute_extract_openvpn_sockaddr(\u0026real, \u0026m-\u003etop.c2.from.dest, true) || m-\u003etop.c2.buf.len \u003d\u003d 0)"},{"line_number":365,"context_line":"    {"},{"line_number":366,"context_line":"        return NULL;"},{"line_number":367,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"4600a392_e77fc5ec","line":364,"updated":"2026-07-15 10:08:45.000000000","message":"This check is too late now and it is wrong. In t_server testbed we see segfaults:\n\n```\nProgram terminated with signal SIGSEGV, Segmentation fault.\n#0  multi_get_create_instance_udp (m\u003d0x7fff74cfe0a0, \n    floated\u003dfloated@entry\u003d0x7fff74cfdfcf, sock\u003dsock@entry\u003d0x2525b90) at mudp.c:359\n\nwarning: Source file is more recent than executable.\n359\t    uint8_t op \u003d ptr[0] \u003e\u003e P_OPCODE_SHIFT;\n(gdb) print m-\u003etop.c2.buf\n$2 \u003d {capacity \u003d 2466, offset \u003d 136, len \u003d -1, data \u003d 0x2563f40 \"\"}\n\n```","commit_id":"4a81c72f784f0878124a097af3574c29ff185564"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"cbdb9db5bb64a5f3445670d5280d7807ae4b42d4","unresolved":true,"context_lines":[{"line_number":361,"context_line":"    struct mroute_addr real \u003d { 0 };"},{"line_number":362,"context_line":"    real.proto \u003d sock-\u003einfo.proto;"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    if (!mroute_extract_openvpn_sockaddr(\u0026real, \u0026m-\u003etop.c2.from.dest, true) || m-\u003etop.c2.buf.len \u003d\u003d 0)"},{"line_number":365,"context_line":"    {"},{"line_number":366,"context_line":"        return NULL;"},{"line_number":367,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"8b863414_2e4c433f","line":364,"in_reply_to":"4600a392_e77fc5ec","updated":"2026-07-15 12:17:09.000000000","message":"Yes I overlooked that || m-\u003etop.c2.buf.len \u003d\u003d 0) part during refactor being critical. \n\nI moved it to a more explicit and logical place.","commit_id":"4a81c72f784f0878124a097af3574c29ff185564"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"d2f1c5db536a88f698dfb2a6314499a48c198d64","unresolved":false,"context_lines":[{"line_number":361,"context_line":"    struct mroute_addr real \u003d { 0 };"},{"line_number":362,"context_line":"    real.proto \u003d sock-\u003einfo.proto;"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    if (!mroute_extract_openvpn_sockaddr(\u0026real, \u0026m-\u003etop.c2.from.dest, true) || m-\u003etop.c2.buf.len \u003d\u003d 0)"},{"line_number":365,"context_line":"    {"},{"line_number":366,"context_line":"        return NULL;"},{"line_number":367,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"203660ce_40aeaa0f","line":364,"in_reply_to":"8b863414_2e4c433f","updated":"2026-07-15 12:18:56.000000000","message":"Done","commit_id":"4a81c72f784f0878124a097af3574c29ff185564"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"e43ffb2e2bc67bcb07851b73199f1e76b449a674","unresolved":false,"context_lines":[{"line_number":292,"context_line":"    struct mroute_addr real \u003d { 0 };"},{"line_number":293,"context_line":"    real.proto \u003d sock-\u003einfo.proto;"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    if (mroute_extract_openvpn_sockaddr(\u0026real, \u0026m-\u003etop.c2.from.dest, true) \u0026\u0026 m-\u003etop.c2.buf.len \u003e 0)"},{"line_number":296,"context_line":"    {"},{"line_number":297,"context_line":"        return multi_get_instance_udp_real(m, \u0026real);"},{"line_number":298,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"a9148345_aeae6f6c","line":295,"updated":"2026-07-17 14:17:05.000000000","message":"This looks weird since it repeats `mroute_extract_openvpn_sockaddr` that was already done in the caller. But it will make sense in #1727.","commit_id":"d501861ad4ca12f7c402c999e914430ee48fc480"}]}
