)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"622ff2478ecf0fcf69f13c0cfb57ef6b001631b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6108cc68_eb61d42e","updated":"2026-06-22 14:00:36.000000000","message":"Broken build","commit_id":"516b6556e193aeb3a43c85599605d77fb38e68bb"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"d617adaf36dcaf0fa62d9f2407d0b10970bf664a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"50c37511_284356c5","updated":"2026-07-06 12:18:28.000000000","message":"Code looks good, but comment could use some fixes","commit_id":"b418167638991954a02dc17e3c4e4b5953a07e88"}],"src/openvpn/multi.c":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"622ff2478ecf0fcf69f13c0cfb57ef6b001631b3","unresolved":true,"context_lines":[{"line_number":3127,"context_line":"    struct tls_multi *m1 \u003d mi-\u003econtext.c2.tls_multi;"},{"line_number":3128,"context_line":"    struct tls_multi *m2 \u003d ex_mi-\u003econtext.c2.tls_multi;"},{"line_number":3129,"context_line":""},{"line_number":3130,"context_line":"    struct gc_arena gc \u003d gc_new();"},{"line_number":3131,"context_line":"    int ret \u003d false;"},{"line_number":3132,"context_line":""},{"line_number":3133,"context_line":"    /* do not allow if target address is taken by client with another cert */"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"99128d05_87a18c70","line":3130,"updated":"2026-06-22 14:00:36.000000000","message":"```\nmulti.c:3130:21: error: redefinition of \u0027gc\u0027\n 3130 |     struct gc_arena gc \u003d gc_new();\n      |                     ^\nmulti.c:3111:21: note: previous definition is here\n 3111 |     struct gc_arena gc \u003d gc_new();\n      |                     ^\n```","commit_id":"516b6556e193aeb3a43c85599605d77fb38e68bb"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"95972480b1c25f7fbfdf4cee01d25e6238633f09","unresolved":false,"context_lines":[{"line_number":3127,"context_line":"    struct tls_multi *m1 \u003d mi-\u003econtext.c2.tls_multi;"},{"line_number":3128,"context_line":"    struct tls_multi *m2 \u003d ex_mi-\u003econtext.c2.tls_multi;"},{"line_number":3129,"context_line":""},{"line_number":3130,"context_line":"    struct gc_arena gc \u003d gc_new();"},{"line_number":3131,"context_line":"    int ret \u003d false;"},{"line_number":3132,"context_line":""},{"line_number":3133,"context_line":"    /* do not allow if target address is taken by client with another cert */"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"c5cce27c_3fcac0b4","line":3130,"in_reply_to":"99128d05_87a18c70","updated":"2026-06-22 15:25:05.000000000","message":"Done","commit_id":"516b6556e193aeb3a43c85599605d77fb38e68bb"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"2d8fb7141350954da9ab178387273874ae49a690","unresolved":true,"context_lines":[{"line_number":3105,"context_line":"}"},{"line_number":3106,"context_line":""},{"line_number":3107,"context_line":"static bool"},{"line_number":3108,"context_line":"multi_check_dest_addr_allowed(struct multi_context *m, struct multi_instance *mi, struct mroute_addr *real)"},{"line_number":3109,"context_line":"{"},{"line_number":3110,"context_line":"    struct hash *hash \u003d m-\u003ehash;"},{"line_number":3111,"context_line":"    const uint64_t hv \u003d hash_value(hash, real);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"7140175d_e2b8c40f","line":3108,"updated":"2026-06-24 14:30:24.000000000","message":"please add documentation for new functions","commit_id":"e2d45132404457d5aec9042793f893d4a28d721c"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"6364ed3456fdab5b72a8a6ec1f37a77dcfb6e057","unresolved":false,"context_lines":[{"line_number":3105,"context_line":"}"},{"line_number":3106,"context_line":""},{"line_number":3107,"context_line":"static bool"},{"line_number":3108,"context_line":"multi_check_dest_addr_allowed(struct multi_context *m, struct multi_instance *mi, struct mroute_addr *real)"},{"line_number":3109,"context_line":"{"},{"line_number":3110,"context_line":"    struct hash *hash \u003d m-\u003ehash;"},{"line_number":3111,"context_line":"    const uint64_t hv \u003d hash_value(hash, real);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"c3878726_8d460658","line":3108,"in_reply_to":"7140175d_e2b8c40f","updated":"2026-06-25 13:26:57.000000000","message":"Done","commit_id":"e2d45132404457d5aec9042793f893d4a28d721c"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"2d8fb7141350954da9ab178387273874ae49a690","unresolved":true,"context_lines":[{"line_number":3157,"context_line":"        \"using the same certificate\","},{"line_number":3158,"context_line":"        multi_instance_string(ex_mi, false, \u0026gc), multi_instance_string(mi, false, \u0026gc));"},{"line_number":3159,"context_line":"    multi_close_instance(m, ex_mi, false);"},{"line_number":3160,"context_line":"    return true;"},{"line_number":3161,"context_line":""},{"line_number":3162,"context_line":"done:"},{"line_number":3163,"context_line":"    gc_free(\u0026gc);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"32ab1e90_2949bcce","line":3160,"updated":"2026-06-24 14:30:24.000000000","message":"this return is wrong and leads to memory leak","commit_id":"e2d45132404457d5aec9042793f893d4a28d721c"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"6364ed3456fdab5b72a8a6ec1f37a77dcfb6e057","unresolved":false,"context_lines":[{"line_number":3157,"context_line":"        \"using the same certificate\","},{"line_number":3158,"context_line":"        multi_instance_string(ex_mi, false, \u0026gc), multi_instance_string(mi, false, \u0026gc));"},{"line_number":3159,"context_line":"    multi_close_instance(m, ex_mi, false);"},{"line_number":3160,"context_line":"    return true;"},{"line_number":3161,"context_line":""},{"line_number":3162,"context_line":"done:"},{"line_number":3163,"context_line":"    gc_free(\u0026gc);"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"b6132ddf_970f1f5b","line":3160,"in_reply_to":"32ab1e90_2949bcce","updated":"2026-06-25 13:26:57.000000000","message":"Acknowledged","commit_id":"e2d45132404457d5aec9042793f893d4a28d721c"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"d617adaf36dcaf0fa62d9f2407d0b10970bf664a","unresolved":true,"context_lines":[{"line_number":3075,"context_line":"/**"},{"line_number":3076,"context_line":" * This methods checks if a client instance is allowed to use an address"},{"line_number":3077,"context_line":" *"},{"line_number":3078,"context_line":" * Reasons for disallowing a specific adress are that a client might be"},{"line_number":3079,"context_line":" * already using that address. In that case the method need to decide"},{"line_number":3080,"context_line":" * if the this instance can kick out the other instance."},{"line_number":3081,"context_line":" *"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"a7ac98b9_1e5c38cf","line":3078,"updated":"2026-07-06 12:18:28.000000000","message":"\"address\"","commit_id":"b418167638991954a02dc17e3c4e4b5953a07e88"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"a62bc1ed1ceeb51e73159406ac982b45769d78df","unresolved":false,"context_lines":[{"line_number":3075,"context_line":"/**"},{"line_number":3076,"context_line":" * This methods checks if a client instance is allowed to use an address"},{"line_number":3077,"context_line":" *"},{"line_number":3078,"context_line":" * Reasons for disallowing a specific adress are that a client might be"},{"line_number":3079,"context_line":" * already using that address. In that case the method need to decide"},{"line_number":3080,"context_line":" * if the this instance can kick out the other instance."},{"line_number":3081,"context_line":" *"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"846b7077_46f7e2b0","line":3078,"in_reply_to":"a7ac98b9_1e5c38cf","updated":"2026-07-14 12:08:37.000000000","message":"Done","commit_id":"b418167638991954a02dc17e3c4e4b5953a07e88"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"d617adaf36dcaf0fa62d9f2407d0b10970bf664a","unresolved":true,"context_lines":[{"line_number":3076,"context_line":" * This methods checks if a client instance is allowed to use an address"},{"line_number":3077,"context_line":" *"},{"line_number":3078,"context_line":" * Reasons for disallowing a specific adress are that a client might be"},{"line_number":3079,"context_line":" * already using that address. In that case the method need to decide"},{"line_number":3080,"context_line":" * if the this instance can kick out the other instance."},{"line_number":3081,"context_line":" *"},{"line_number":3082,"context_line":" * The method will then terminate the other instance if that check was"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"46679090_5e10169b","line":3079,"updated":"2026-07-06 12:18:28.000000000","message":"\"needs\"","commit_id":"b418167638991954a02dc17e3c4e4b5953a07e88"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"a62bc1ed1ceeb51e73159406ac982b45769d78df","unresolved":false,"context_lines":[{"line_number":3076,"context_line":" * This methods checks if a client instance is allowed to use an address"},{"line_number":3077,"context_line":" *"},{"line_number":3078,"context_line":" * Reasons for disallowing a specific adress are that a client might be"},{"line_number":3079,"context_line":" * already using that address. In that case the method need to decide"},{"line_number":3080,"context_line":" * if the this instance can kick out the other instance."},{"line_number":3081,"context_line":" *"},{"line_number":3082,"context_line":" * The method will then terminate the other instance if that check was"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"6023b641_07da7bae","line":3079,"in_reply_to":"46679090_5e10169b","updated":"2026-07-14 12:08:37.000000000","message":"Done","commit_id":"b418167638991954a02dc17e3c4e4b5953a07e88"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"d617adaf36dcaf0fa62d9f2407d0b10970bf664a","unresolved":true,"context_lines":[{"line_number":3077,"context_line":" *"},{"line_number":3078,"context_line":" * Reasons for disallowing a specific adress are that a client might be"},{"line_number":3079,"context_line":" * already using that address. In that case the method need to decide"},{"line_number":3080,"context_line":" * if the this instance can kick out the other instance."},{"line_number":3081,"context_line":" *"},{"line_number":3082,"context_line":" * The method will then terminate the other instance if that check was"},{"line_number":3083,"context_line":" * positive."}],"source_content_type":"text/x-csrc","patch_set":3,"id":"9754a51e_35cbd68e","line":3080,"updated":"2026-07-06 12:18:28.000000000","message":"\"the this\" -\u003e \"this\"","commit_id":"b418167638991954a02dc17e3c4e4b5953a07e88"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"a62bc1ed1ceeb51e73159406ac982b45769d78df","unresolved":false,"context_lines":[{"line_number":3077,"context_line":" *"},{"line_number":3078,"context_line":" * Reasons for disallowing a specific adress are that a client might be"},{"line_number":3079,"context_line":" * already using that address. In that case the method need to decide"},{"line_number":3080,"context_line":" * if the this instance can kick out the other instance."},{"line_number":3081,"context_line":" *"},{"line_number":3082,"context_line":" * The method will then terminate the other instance if that check was"},{"line_number":3083,"context_line":" * positive."}],"source_content_type":"text/x-csrc","patch_set":3,"id":"39ac9edd_ffee1eaa","line":3080,"in_reply_to":"9754a51e_35cbd68e","updated":"2026-07-14 12:08:37.000000000","message":"Done","commit_id":"b418167638991954a02dc17e3c4e4b5953a07e88"}]}
