)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"92b8562acaa637bd0ec95e40359025d0eddc9dda","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"50513388_803f8a2b","updated":"2026-06-22 14:03:17.000000000","message":"build fails","commit_id":"43b6031f882d58e4d5b9790c558b913926128399"}],"doc/man-sections/advanced-options.rst":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"6b4618739f3cb09b1211ec06646c238950d46563","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"--hash-size args"},{"line_number":31,"context_line":"  Set the size of the real address hash table to ``r`` and the virtual"},{"line_number":32,"context_line":"  address table to ``v``. And if specified the session id hash table to"},{"line_number":33,"context_line":"  ``s``. Otherwise ``s`` be set to the same value as ``r``."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"  Valid syntax:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"063287a6_ad77a9f8","line":32,"updated":"2026-07-06 12:47:29.000000000","message":"\"If specified set the size of the session id hash table to\"","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"3441e3d3513906e4366fa4905ac47f060ad15deb","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"--hash-size args"},{"line_number":31,"context_line":"  Set the size of the real address hash table to ``r`` and the virtual"},{"line_number":32,"context_line":"  address table to ``v``. And if specified the session id hash table to"},{"line_number":33,"context_line":"  ``s``. Otherwise ``s`` be set to the same value as ``r``."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"  Valid syntax:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"d82a4f50_1f10f5ae","line":32,"in_reply_to":"063287a6_ad77a9f8","updated":"2026-07-14 13:01:00.000000000","message":"Done","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"6b4618739f3cb09b1211ec06646c238950d46563","unresolved":true,"context_lines":[{"line_number":30,"context_line":"--hash-size args"},{"line_number":31,"context_line":"  Set the size of the real address hash table to ``r`` and the virtual"},{"line_number":32,"context_line":"  address table to ``v``. And if specified the session id hash table to"},{"line_number":33,"context_line":"  ``s``. Otherwise ``s`` be set to the same value as ``r``."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"  Valid syntax:"},{"line_number":36,"context_line":"  ::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"adc8d07e_8b554a73","line":33,"updated":"2026-07-06 12:47:29.000000000","message":"\"will be\"","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"3441e3d3513906e4366fa4905ac47f060ad15deb","unresolved":false,"context_lines":[{"line_number":30,"context_line":"--hash-size args"},{"line_number":31,"context_line":"  Set the size of the real address hash table to ``r`` and the virtual"},{"line_number":32,"context_line":"  address table to ``v``. And if specified the session id hash table to"},{"line_number":33,"context_line":"  ``s``. Otherwise ``s`` be set to the same value as ``r``."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"  Valid syntax:"},{"line_number":36,"context_line":"  ::"}],"source_content_type":"text/x-rst","patch_set":3,"id":"2336da00_72054d17","line":33,"in_reply_to":"adc8d07e_8b554a73","updated":"2026-07-14 13:01:00.000000000","message":"Done","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"}],"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":"92b8562acaa637bd0ec95e40359025d0eddc9dda","unresolved":true,"context_lines":[{"line_number":348,"context_line":"    }"},{"line_number":349,"context_line":"    if (!v2 || peer_id_disabled)"},{"line_number":350,"context_line":"    {"},{"line_number":351,"context_line":"        return multi_get_instance_real_udp_real(m, real);"},{"line_number":352,"context_line":"    }"},{"line_number":353,"context_line":"    return NULL;"},{"line_number":354,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"1640ce6c_498f33f7","line":351,"updated":"2026-06-22 14:03:17.000000000","message":"```\nmudp.c:351:56: error: too few arguments to function call, expected 3, have 2\n  351 |         return multi_get_instance_real_udp_real(m, real);\n      |                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        ^\nmudp.c:265:1: note: \u0027multi_get_instance_real_udp_real\u0027 declared here\n  265 | multi_get_instance_real_udp_real(struct multi_context *m,struct mroute_addr *real, struct link_socket *sock)\n      | ^                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n```","commit_id":"43b6031f882d58e4d5b9790c558b913926128399"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"eeb4e7911d1e4393d85318cba58fbdc0f5930a28","unresolved":false,"context_lines":[{"line_number":348,"context_line":"    }"},{"line_number":349,"context_line":"    if (!v2 || peer_id_disabled)"},{"line_number":350,"context_line":"    {"},{"line_number":351,"context_line":"        return multi_get_instance_real_udp_real(m, real);"},{"line_number":352,"context_line":"    }"},{"line_number":353,"context_line":"    return NULL;"},{"line_number":354,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"982ebae0_09be7b2b","line":351,"in_reply_to":"1640ce6c_498f33f7","updated":"2026-06-22 15:29:40.000000000","message":"Done","commit_id":"43b6031f882d58e4d5b9790c558b913926128399"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"6b4618739f3cb09b1211ec06646c238950d46563","unresolved":true,"context_lines":[{"line_number":380,"context_line":"    }"},{"line_number":381,"context_line":"    else"},{"line_number":382,"context_line":"    {"},{"line_number":383,"context_line":"        if (m-\u003etop.c2.buf.len \u003c 9)"},{"line_number":384,"context_line":"        {"},{"line_number":385,"context_line":"            /* control packets must be at least the opcode byte + session id"},{"line_number":386,"context_line":"             * (8 byte) long, otherwise they are not valid packets */"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"d3040fdc_2606f6b9","line":383,"updated":"2026-07-06 12:47:29.000000000","message":"Why hardcode 9 instead of \"sizeof(struct session_id) + 1\" ?","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"3441e3d3513906e4366fa4905ac47f060ad15deb","unresolved":false,"context_lines":[{"line_number":380,"context_line":"    }"},{"line_number":381,"context_line":"    else"},{"line_number":382,"context_line":"    {"},{"line_number":383,"context_line":"        if (m-\u003etop.c2.buf.len \u003c 9)"},{"line_number":384,"context_line":"        {"},{"line_number":385,"context_line":"            /* control packets must be at least the opcode byte + session id"},{"line_number":386,"context_line":"             * (8 byte) long, otherwise they are not valid packets */"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"fa7d8345_5eed2d6d","line":383,"in_reply_to":"d3040fdc_2606f6b9","updated":"2026-07-14 13:01:00.000000000","message":"Replaced with (int)SID_SIZE + 1.","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"}],"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":"6b4618739f3cb09b1211ec06646c238950d46563","unresolved":true,"context_lines":[{"line_number":438,"context_line":"            buf_printf(\u0026out, \"%s/\", cn);"},{"line_number":439,"context_line":"        }"},{"line_number":440,"context_line":"        buf_printf(\u0026out, \"%s\", mroute_addr_print(\u0026mi-\u003ereal, gc));"},{"line_number":441,"context_line":"        if (mi-\u003econtext.c2.tls_multi \u0026\u0026 true)"},{"line_number":442,"context_line":"        {"},{"line_number":443,"context_line":"            buf_printf(\u0026out, \" rx-peer-id\u003d%d\", mi-\u003econtext.c2.tls_multi-\u003erx_peer_id);"},{"line_number":444,"context_line":"        }"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"ad114933_bf7dfcce","line":441,"updated":"2026-07-06 12:47:29.000000000","message":"\"\u0026\u0026 true\" ?","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"3441e3d3513906e4366fa4905ac47f060ad15deb","unresolved":false,"context_lines":[{"line_number":438,"context_line":"            buf_printf(\u0026out, \"%s/\", cn);"},{"line_number":439,"context_line":"        }"},{"line_number":440,"context_line":"        buf_printf(\u0026out, \"%s\", mroute_addr_print(\u0026mi-\u003ereal, gc));"},{"line_number":441,"context_line":"        if (mi-\u003econtext.c2.tls_multi \u0026\u0026 true)"},{"line_number":442,"context_line":"        {"},{"line_number":443,"context_line":"            buf_printf(\u0026out, \" rx-peer-id\u003d%d\", mi-\u003econtext.c2.tls_multi-\u003erx_peer_id);"},{"line_number":444,"context_line":"        }"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"03567279_523e52ce","line":441,"in_reply_to":"ad114933_bf7dfcce","updated":"2026-07-14 13:01:00.000000000","message":"sorry. Debug leftover. Removed","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"f2ad96d3ed3e793728e30e9b78af4beed21585ab","unresolved":true,"context_lines":[{"line_number":428,"context_line":"        }"},{"line_number":429,"context_line":"        buf_printf(\u0026out, \"%s\", mroute_addr_print(\u0026mi-\u003ereal, gc));"},{"line_number":430,"context_line":"        if (mi-\u003econtext.c2.tls_multi \u0026\u0026 check_debug_level(D_DCO_DEBUG)"},{"line_number":431,"context_line":"            \u0026\u0026 dco_enabled(\u0026mi-\u003econtext.options))"},{"line_number":432,"context_line":"        {"},{"line_number":433,"context_line":"            buf_printf(\u0026out, \" rx-peer-id\u003d%d\", mi-\u003econtext.c2.tls_multi-\u003erx_peer_id);"},{"line_number":434,"context_line":"        }"}],"source_content_type":"text/x-csrc","patch_set":26,"id":"d89279c8_857f730e","side":"PARENT","line":431,"updated":"2026-08-07 15:57:10.000000000","message":"is this an intended change or a debugging left-over?","commit_id":"e4c4e2fff1272a6a949b347d4bfe38d3d4278f6d"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"745126b44dc27fc8a92978e16775aa15322a1778","unresolved":false,"context_lines":[{"line_number":428,"context_line":"        }"},{"line_number":429,"context_line":"        buf_printf(\u0026out, \"%s\", mroute_addr_print(\u0026mi-\u003ereal, gc));"},{"line_number":430,"context_line":"        if (mi-\u003econtext.c2.tls_multi \u0026\u0026 check_debug_level(D_DCO_DEBUG)"},{"line_number":431,"context_line":"            \u0026\u0026 dco_enabled(\u0026mi-\u003econtext.options))"},{"line_number":432,"context_line":"        {"},{"line_number":433,"context_line":"            buf_printf(\u0026out, \" rx-peer-id\u003d%d\", mi-\u003econtext.c2.tls_multi-\u003erx_peer_id);"},{"line_number":434,"context_line":"        }"}],"source_content_type":"text/x-csrc","patch_set":26,"id":"de3e6230_c5a2a5a0","side":"PARENT","line":431,"in_reply_to":"d89279c8_857f730e","updated":"2026-08-08 21:53:02.000000000","message":"I think that is a leftover of some of the many assym peer id back and forth that accidentially ended up in this patch. I remove that change.","commit_id":"e4c4e2fff1272a6a949b347d4bfe38d3d4278f6d"}],"src/openvpn/multi.h":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"6b4618739f3cb09b1211ec06646c238950d46563","unresolved":true,"context_lines":[{"line_number":135,"context_line":"#ifdef ENABLE_MANAGEMENT"},{"line_number":136,"context_line":"    bool did_cid_hash;"},{"line_number":137,"context_line":"    /* If this is multi_insance is hashed in the sid lookup table the session"},{"line_number":138,"context_line":"     * id here is non-null and the hash map\u0027s key pointer uses is pointing"},{"line_number":139,"context_line":"     * here */"},{"line_number":140,"context_line":"    struct session_id sid_hashed_value;"},{"line_number":141,"context_line":"    struct buffer_list *cc_config;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"f186bf4c_f7a8e8df","line":138,"updated":"2026-07-06 12:47:29.000000000","message":"Not sure what \"uses\" is supposed to mean here?","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"3441e3d3513906e4366fa4905ac47f060ad15deb","unresolved":false,"context_lines":[{"line_number":135,"context_line":"#ifdef ENABLE_MANAGEMENT"},{"line_number":136,"context_line":"    bool did_cid_hash;"},{"line_number":137,"context_line":"    /* If this is multi_insance is hashed in the sid lookup table the session"},{"line_number":138,"context_line":"     * id here is non-null and the hash map\u0027s key pointer uses is pointing"},{"line_number":139,"context_line":"     * here */"},{"line_number":140,"context_line":"    struct session_id sid_hashed_value;"},{"line_number":141,"context_line":"    struct buffer_list *cc_config;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"10ae17ac_5a2d983b","line":138,"in_reply_to":"f186bf4c_f7a8e8df","updated":"2026-07-14 13:01:00.000000000","message":"Done","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"6b4618739f3cb09b1211ec06646c238950d46563","unresolved":true,"context_lines":[{"line_number":136,"context_line":"    bool did_cid_hash;"},{"line_number":137,"context_line":"    /* If this is multi_insance is hashed in the sid lookup table the session"},{"line_number":138,"context_line":"     * id here is non-null and the hash map\u0027s key pointer uses is pointing"},{"line_number":139,"context_line":"     * here */"},{"line_number":140,"context_line":"    struct session_id sid_hashed_value;"},{"line_number":141,"context_line":"    struct buffer_list *cc_config;"},{"line_number":142,"context_line":"#endif"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"4df36e1e_1916a232","line":139,"updated":"2026-07-06 12:47:29.000000000","message":"What is \"here\"? Sounds like it points to this part of the struct, but it actually points to the beginning of the struct, doesn\u0027t it?","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"3441e3d3513906e4366fa4905ac47f060ad15deb","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    bool did_cid_hash;"},{"line_number":137,"context_line":"    /* If this is multi_insance is hashed in the sid lookup table the session"},{"line_number":138,"context_line":"     * id here is non-null and the hash map\u0027s key pointer uses is pointing"},{"line_number":139,"context_line":"     * here */"},{"line_number":140,"context_line":"    struct session_id sid_hashed_value;"},{"line_number":141,"context_line":"    struct buffer_list *cc_config;"},{"line_number":142,"context_line":"#endif"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"0e7fda90_da142616","line":139,"in_reply_to":"4df36e1e_1916a232","updated":"2026-07-14 13:01:00.000000000","message":"Our hash map is a bit weird in the way that it does not store the keys but actually only pointers to the keys and this field is the key while the whole struct is the value. I adjusted the comment to reflect this pbacker","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"6b4618739f3cb09b1211ec06646c238950d46563","unresolved":true,"context_lines":[{"line_number":175,"context_line":"    struct hash *vhash;                /**\u003c VPN tunnel instances indexed by"},{"line_number":176,"context_line":"                                        *   virtual address of remote hosts. */"},{"line_number":177,"context_line":"    struct hash *sid_hash;             /**\u003c TLS sessions indexed by the peer\u0027s"},{"line_number":178,"context_line":"                                            session id. We do not care collisions here"},{"line_number":179,"context_line":"                                            as clients should have unique ids and"},{"line_number":180,"context_line":"                                            supporting clients with identical SIDs"},{"line_number":181,"context_line":"                                            is not needed */"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"2fd8e60c_76963cb3","line":178,"updated":"2026-07-06 12:47:29.000000000","message":"\"care about\"","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"3441e3d3513906e4366fa4905ac47f060ad15deb","unresolved":false,"context_lines":[{"line_number":175,"context_line":"    struct hash *vhash;                /**\u003c VPN tunnel instances indexed by"},{"line_number":176,"context_line":"                                        *   virtual address of remote hosts. */"},{"line_number":177,"context_line":"    struct hash *sid_hash;             /**\u003c TLS sessions indexed by the peer\u0027s"},{"line_number":178,"context_line":"                                            session id. We do not care collisions here"},{"line_number":179,"context_line":"                                            as clients should have unique ids and"},{"line_number":180,"context_line":"                                            supporting clients with identical SIDs"},{"line_number":181,"context_line":"                                            is not needed */"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"cddba2a0_341624a4","line":178,"in_reply_to":"2fd8e60c_76963cb3","updated":"2026-07-14 13:01:00.000000000","message":"Done","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"f2ad96d3ed3e793728e30e9b78af4beed21585ab","unresolved":true,"context_lines":[{"line_number":135,"context_line":"     * the multi_context m-\u003ehash table. */"},{"line_number":136,"context_line":"    bool did_real_hash;"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    /** If this is multi_instance is hashed in the sid lookup table the session"},{"line_number":139,"context_line":"     * id here is a non-null session id and the hash map\u0027s key pointer points"},{"line_number":140,"context_line":"     * to this field (the value pointer points to the whole struct) */"},{"line_number":141,"context_line":"    struct session_id sid_hashed_value;"}],"source_content_type":"text/x-csrc","patch_set":26,"id":"94ecc620_97e9f078","line":138,"updated":"2026-08-07 15:57:10.000000000","message":"Remove the first \"is\" and the second \"session id\"","commit_id":"40cfe5c6d64dcd4fb6cbe8dbd3268a21527e71a3"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"745126b44dc27fc8a92978e16775aa15322a1778","unresolved":false,"context_lines":[{"line_number":135,"context_line":"     * the multi_context m-\u003ehash table. */"},{"line_number":136,"context_line":"    bool did_real_hash;"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    /** If this is multi_instance is hashed in the sid lookup table the session"},{"line_number":139,"context_line":"     * id here is a non-null session id and the hash map\u0027s key pointer points"},{"line_number":140,"context_line":"     * to this field (the value pointer points to the whole struct) */"},{"line_number":141,"context_line":"    struct session_id sid_hashed_value;"}],"source_content_type":"text/x-csrc","patch_set":26,"id":"d55f5112_31eb2707","line":138,"in_reply_to":"94ecc620_97e9f078","updated":"2026-08-08 21:53:02.000000000","message":"Done","commit_id":"40cfe5c6d64dcd4fb6cbe8dbd3268a21527e71a3"}],"src/openvpn/sid_hash.h":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"6b4618739f3cb09b1211ec06646c238950d46563","unresolved":true,"context_lines":[{"line_number":32,"context_line":"multi_hash_sid_add(struct multi_context *m, struct session_id *sid,"},{"line_number":33,"context_line":"                   struct multi_instance *mi)"},{"line_number":34,"context_line":"{"},{"line_number":35,"context_line":"    /* This only be called if the multi instance is not already present"},{"line_number":36,"context_line":"     * in the hash table */"},{"line_number":37,"context_line":"    ASSERT(!session_id_defined(\u0026mi-\u003esid_hashed_value));"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":3,"id":"30682dc5_7bd0156f","line":35,"updated":"2026-07-06 12:47:29.000000000","message":"\"This should\" or \"This must\"?","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"3441e3d3513906e4366fa4905ac47f060ad15deb","unresolved":false,"context_lines":[{"line_number":32,"context_line":"multi_hash_sid_add(struct multi_context *m, struct session_id *sid,"},{"line_number":33,"context_line":"                   struct multi_instance *mi)"},{"line_number":34,"context_line":"{"},{"line_number":35,"context_line":"    /* This only be called if the multi instance is not already present"},{"line_number":36,"context_line":"     * in the hash table */"},{"line_number":37,"context_line":"    ASSERT(!session_id_defined(\u0026mi-\u003esid_hashed_value));"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":3,"id":"7f6f7a89_099de1be","line":35,"in_reply_to":"30682dc5_7bd0156f","updated":"2026-07-14 13:01:00.000000000","message":"Done","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"6b4618739f3cb09b1211ec06646c238950d46563","unresolved":true,"context_lines":[{"line_number":49,"context_line":"{"},{"line_number":50,"context_line":"    const uint64_t hv \u003d hash_value(m-\u003esid_hash, sid);"},{"line_number":51,"context_line":"    struct hash_bucket *bucket \u003d hash_bucket(m-\u003esid_hash, hv);"},{"line_number":52,"context_line":"    struct hash_element *he \u003d hash_lookup_fast(m-\u003esid_hash, bucket, sid, hv);"},{"line_number":53,"context_line":"    if (he)"},{"line_number":54,"context_line":"    {"},{"line_number":55,"context_line":"        struct multi_instance *mi \u003d he-\u003evalue;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"1001dcdb_16f4167a","line":52,"updated":"2026-07-06 12:47:29.000000000","message":"Could reduce code duplication slightly by using multi_hash_sid_lookup here.","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"3441e3d3513906e4366fa4905ac47f060ad15deb","unresolved":false,"context_lines":[{"line_number":49,"context_line":"{"},{"line_number":50,"context_line":"    const uint64_t hv \u003d hash_value(m-\u003esid_hash, sid);"},{"line_number":51,"context_line":"    struct hash_bucket *bucket \u003d hash_bucket(m-\u003esid_hash, hv);"},{"line_number":52,"context_line":"    struct hash_element *he \u003d hash_lookup_fast(m-\u003esid_hash, bucket, sid, hv);"},{"line_number":53,"context_line":"    if (he)"},{"line_number":54,"context_line":"    {"},{"line_number":55,"context_line":"        struct multi_instance *mi \u003d he-\u003evalue;"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"ba72e6af_e5b31bda","line":52,"in_reply_to":"1001dcdb_16f4167a","updated":"2026-07-14 13:01:00.000000000","message":"Good catch. Thanks.","commit_id":"3d148280b63a069b8d6879a7d9be7e5175292aa9"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"1ff58817f1678e7de450f556f75bbb02094b24a3","unresolved":true,"context_lines":[{"line_number":56,"context_line":"inline static bool"},{"line_number":57,"context_line":"multi_hash_sid_remove(struct multi_context *m, const struct session_id *sid)"},{"line_number":58,"context_line":"{"},{"line_number":59,"context_line":"    struct hash_element *he \u003d multi_hash_sid_lookup(m, sid);"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    if (he)"},{"line_number":62,"context_line":"    {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"5f1dda6a_a224f258","line":59,"updated":"2026-07-17 15:25:24.000000000","message":"```\nsid_hash.h:59:56: error: passing argument 2 of ‘multi_hash_sid_lookup’ discards ‘const’ qualifier from pointer target type [-Werror\u003ddiscarded-qualifiers]\n   59 |     struct hash_element *he \u003d multi_hash_sid_lookup(m, sid);\n      |                                                        ^~~\nsid_hash.h:48:67: note: expected ‘struct session_id *’ but argument is of type ‘const struct session_id *’\n   48 | multi_hash_sid_lookup(struct multi_context *m, struct session_id *sid)\n```","commit_id":"2c063aab2095cb86186f395d73a59626431ea289"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"93f4f02de467bc31a37f30c79b35794251df215f","unresolved":true,"context_lines":[{"line_number":56,"context_line":"inline static bool"},{"line_number":57,"context_line":"multi_hash_sid_remove(struct multi_context *m, const struct session_id *sid)"},{"line_number":58,"context_line":"{"},{"line_number":59,"context_line":"    struct hash_element *he \u003d multi_hash_sid_lookup(m, sid);"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    if (he)"},{"line_number":62,"context_line":"    {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"710c4a27_8bb4a5f3","line":59,"in_reply_to":"5f1dda6a_a224f258","updated":"2026-07-20 10:55:13.000000000","message":"yeah looks like the \"just quickly inline the function\" in last iteration was not a good or quick fix. I reverted that since it is different enough to not easily work that way.","commit_id":"2c063aab2095cb86186f395d73a59626431ea289"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"b6ad10d493de7f7bdd7638f5bf64827fba2f2ca1","unresolved":false,"context_lines":[{"line_number":56,"context_line":"inline static bool"},{"line_number":57,"context_line":"multi_hash_sid_remove(struct multi_context *m, const struct session_id *sid)"},{"line_number":58,"context_line":"{"},{"line_number":59,"context_line":"    struct hash_element *he \u003d multi_hash_sid_lookup(m, sid);"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    if (he)"},{"line_number":62,"context_line":"    {"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"66cdb410_efe372ef","line":59,"in_reply_to":"710c4a27_8bb4a5f3","updated":"2026-07-22 10:11:58.000000000","message":"Done","commit_id":"2c063aab2095cb86186f395d73a59626431ea289"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"1ff58817f1678e7de450f556f75bbb02094b24a3","unresolved":true,"context_lines":[{"line_number":61,"context_line":"    if (he)"},{"line_number":62,"context_line":"    {"},{"line_number":63,"context_line":"        struct multi_instance *mi \u003d he-\u003evalue;"},{"line_number":64,"context_line":"        ASSERT(hash_remove_fast(m-\u003esid_hash, bucket, sid, hv));"},{"line_number":65,"context_line":"        CLEAR(mi-\u003esid_hashed_value);"},{"line_number":66,"context_line":"        multi_instance_dec_refcount(mi);"},{"line_number":67,"context_line":"        return true;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"73b795c6_c478883e","line":64,"updated":"2026-07-17 15:25:24.000000000","message":"```\nsid_hash.h:64:46: error: ‘bucket’ undeclared (first use in this function); did you mean ‘socket’?\n   64 |         ASSERT(hash_remove_fast(m-\u003esid_hash, bucket, sid, hv));\nsid_hash.h:64:59: error: ‘hv’ undeclared (first use in this function); did you mean ‘he’?\n   64 |         ASSERT(hash_remove_fast(m-\u003esid_hash, bucket, sid, hv));\n```","commit_id":"2c063aab2095cb86186f395d73a59626431ea289"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"93f4f02de467bc31a37f30c79b35794251df215f","unresolved":false,"context_lines":[{"line_number":61,"context_line":"    if (he)"},{"line_number":62,"context_line":"    {"},{"line_number":63,"context_line":"        struct multi_instance *mi \u003d he-\u003evalue;"},{"line_number":64,"context_line":"        ASSERT(hash_remove_fast(m-\u003esid_hash, bucket, sid, hv));"},{"line_number":65,"context_line":"        CLEAR(mi-\u003esid_hashed_value);"},{"line_number":66,"context_line":"        multi_instance_dec_refcount(mi);"},{"line_number":67,"context_line":"        return true;"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"b4b7f9d6_c2a71540","line":64,"in_reply_to":"73b795c6_c478883e","updated":"2026-07-20 10:55:13.000000000","message":"Done","commit_id":"2c063aab2095cb86186f395d73a59626431ea289"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"f2ad96d3ed3e793728e30e9b78af4beed21585ab","unresolved":true,"context_lines":[{"line_number":20,"context_line":" *"},{"line_number":21,"context_line":" *  You should have received a copy of the GNU General Public License along"},{"line_number":22,"context_line":" *  with this program; if not, write to the Free Software Foundation, Inc.,"},{"line_number":23,"context_line":" *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."},{"line_number":24,"context_line":" */"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"#include \"session_id.h\""}],"source_content_type":"text/x-csrc","patch_set":26,"id":"48c942e9_b37ff5c7","line":23,"updated":"2026-08-07 15:57:10.000000000","message":"old header","commit_id":"40cfe5c6d64dcd4fb6cbe8dbd3268a21527e71a3"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"745126b44dc27fc8a92978e16775aa15322a1778","unresolved":false,"context_lines":[{"line_number":20,"context_line":" *"},{"line_number":21,"context_line":" *  You should have received a copy of the GNU General Public License along"},{"line_number":22,"context_line":" *  with this program; if not, write to the Free Software Foundation, Inc.,"},{"line_number":23,"context_line":" *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."},{"line_number":24,"context_line":" */"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"#include \"session_id.h\""}],"source_content_type":"text/x-csrc","patch_set":26,"id":"32b92473_dd418a1a","line":23,"in_reply_to":"48c942e9_b37ff5c7","updated":"2026-08-08 21:53:02.000000000","message":"Done","commit_id":"40cfe5c6d64dcd4fb6cbe8dbd3268a21527e71a3"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"f2ad96d3ed3e793728e30e9b78af4beed21585ab","unresolved":true,"context_lines":[{"line_number":58,"context_line":"{"},{"line_number":59,"context_line":"    const uint64_t sid_hv \u003d hash_value(m-\u003esid_hash, sid);"},{"line_number":60,"context_line":"    struct hash_bucket *sid_bucket \u003d hash_bucket(m-\u003esid_hash, sid_hv);"},{"line_number":61,"context_line":"    struct hash_element *he_sid \u003d hash_lookup_fast(m-\u003esid_hash, sid_bucket, sid, sid_hv);"},{"line_number":62,"context_line":"    if (he_sid)"},{"line_number":63,"context_line":"    {"},{"line_number":64,"context_line":"        struct multi_instance *mi \u003d he_sid-\u003evalue;"}],"source_content_type":"text/x-csrc","patch_set":26,"id":"9082db0b_a7b8f735","line":61,"updated":"2026-08-07 15:57:10.000000000","message":"should use `multi_hash_sid_lookup()`","commit_id":"40cfe5c6d64dcd4fb6cbe8dbd3268a21527e71a3"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"745126b44dc27fc8a92978e16775aa15322a1778","unresolved":true,"context_lines":[{"line_number":58,"context_line":"{"},{"line_number":59,"context_line":"    const uint64_t sid_hv \u003d hash_value(m-\u003esid_hash, sid);"},{"line_number":60,"context_line":"    struct hash_bucket *sid_bucket \u003d hash_bucket(m-\u003esid_hash, sid_hv);"},{"line_number":61,"context_line":"    struct hash_element *he_sid \u003d hash_lookup_fast(m-\u003esid_hash, sid_bucket, sid, sid_hv);"},{"line_number":62,"context_line":"    if (he_sid)"},{"line_number":63,"context_line":"    {"},{"line_number":64,"context_line":"        struct multi_instance *mi \u003d he_sid-\u003evalue;"}],"source_content_type":"text/x-csrc","patch_set":26,"id":"a7038ae0_64e00167","line":61,"in_reply_to":"9082db0b_a7b8f735","updated":"2026-08-08 21:53:02.000000000","message":"It looks like that but that does not actually work. The function hash_remove_fast later the function requires sid_bucket and multi_hash_sid_lookup does not actually return that.","commit_id":"40cfe5c6d64dcd4fb6cbe8dbd3268a21527e71a3"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"b163739decb32ab68bf17bf1b85531d2ef310b5d","unresolved":false,"context_lines":[{"line_number":58,"context_line":"{"},{"line_number":59,"context_line":"    const uint64_t sid_hv \u003d hash_value(m-\u003esid_hash, sid);"},{"line_number":60,"context_line":"    struct hash_bucket *sid_bucket \u003d hash_bucket(m-\u003esid_hash, sid_hv);"},{"line_number":61,"context_line":"    struct hash_element *he_sid \u003d hash_lookup_fast(m-\u003esid_hash, sid_bucket, sid, sid_hv);"},{"line_number":62,"context_line":"    if (he_sid)"},{"line_number":63,"context_line":"    {"},{"line_number":64,"context_line":"        struct multi_instance *mi \u003d he_sid-\u003evalue;"}],"source_content_type":"text/x-csrc","patch_set":26,"id":"70845c90_d3187834","line":61,"in_reply_to":"a7038ae0_64e00167","updated":"2026-08-10 14:20:05.000000000","message":"Acknowledged","commit_id":"40cfe5c6d64dcd4fb6cbe8dbd3268a21527e71a3"}],"tests/unit_tests/openvpn/test_misc.c":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"6b4618739f3cb09b1211ec06646c238950d46563","unresolved":true,"context_lines":[{"line_number":140,"context_line":"}"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"static uint32_t"},{"line_number":143,"context_line":"get_random(void)"},{"line_number":144,"context_line":"{"},{"line_number":145,"context_line":"    /* rand() is not very random, but it\u0027s C99 and this is just for testing */"},{"line_number":146,"context_line":"    return (uint32_t)rand();"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"c82c40ee_2c2abdc4","side":"PARENT","line":143,"updated":"2026-07-06 12:47:29.000000000","message":"```\ntest_misc.c: In function ‘test_list’:\ntest_misc.c:258:19: error: conversion from ‘long int’ to ‘uint32_t’ {aka ‘unsigned int’} may change value [-Werror\u003dconversion]\n  258 |             inc \u003d (get_random() % 3) + 1;\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":"3441e3d3513906e4366fa4905ac47f060ad15deb","unresolved":false,"context_lines":[{"line_number":140,"context_line":"}"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"static uint32_t"},{"line_number":143,"context_line":"get_random(void)"},{"line_number":144,"context_line":"{"},{"line_number":145,"context_line":"    /* rand() is not very random, but it\u0027s C99 and this is just for testing */"},{"line_number":146,"context_line":"    return (uint32_t)rand();"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"b66473fc_30efedcc","side":"PARENT","line":143,"in_reply_to":"c82c40ee_2c2abdc4","updated":"2026-07-14 13:01:00.000000000","message":"Done","commit_id":"30112912578226bfe2e750920037a567b6ca5a16"}]}
