)]}'
{"src/openvpn/list.c":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"4bb907161fe50d288d4bcb3c81cced612018f598","unresolved":true,"context_lines":[{"line_number":422,"context_line":" * @return a new context for the use with hash_func"},{"line_number":423,"context_line":" */"},{"line_number":424,"context_line":"void *"},{"line_number":425,"context_line":"hash_func_new_ctx(void)"},{"line_number":426,"context_line":"{"},{"line_number":427,"context_line":"    uint32_t *ctx \u003d malloc(sizeof(uint32_t));"},{"line_number":428,"context_line":"    *ctx \u003d (uint32_t)get_random();"}],"source_content_type":"text/x-csrc","patch_set":19,"id":"1a426261_45a9bafa","line":425,"updated":"2026-07-29 14:04:56.000000000","message":"forgot to remove?","commit_id":"856ed1b248f7eaaa70f87ab69bbdc1f2cbec09cd"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"5c0d6c2283e109295c6e3dfc6530aadf57bbe736","unresolved":false,"context_lines":[{"line_number":422,"context_line":" * @return a new context for the use with hash_func"},{"line_number":423,"context_line":" */"},{"line_number":424,"context_line":"void *"},{"line_number":425,"context_line":"hash_func_new_ctx(void)"},{"line_number":426,"context_line":"{"},{"line_number":427,"context_line":"    uint32_t *ctx \u003d malloc(sizeof(uint32_t));"},{"line_number":428,"context_line":"    *ctx \u003d (uint32_t)get_random();"}],"source_content_type":"text/x-csrc","patch_set":19,"id":"8f17200a_f4d143cb","line":425,"in_reply_to":"1a426261_45a9bafa","updated":"2026-07-30 09:28:38.000000000","message":"Done","commit_id":"856ed1b248f7eaaa70f87ab69bbdc1f2cbec09cd"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"fe0a49367c15718c6edf2b4c49fc4243f21c5afa","unresolved":false,"context_lines":[{"line_number":422,"context_line":" * @return a new context for the use with hash_func"},{"line_number":423,"context_line":" */"},{"line_number":424,"context_line":"void *"},{"line_number":425,"context_line":"hash_func_new_ctx(void)"},{"line_number":426,"context_line":"{"},{"line_number":427,"context_line":"    uint32_t *ctx \u003d malloc(sizeof(uint32_t));"},{"line_number":428,"context_line":"    *ctx \u003d (uint32_t)get_random();"}],"source_content_type":"text/x-csrc","patch_set":19,"id":"df7e5f88_b8113cd6","line":425,"in_reply_to":"1a426261_45a9bafa","updated":"2026-07-30 16:01:00.000000000","message":"yes. Removed","commit_id":"856ed1b248f7eaaa70f87ab69bbdc1f2cbec09cd"}],"src/openvpn/list.h":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"25dea37f7818ae010e71e15b0d0d05a69ed2a956","unresolved":true,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"uint64_t hash_func(const uint8_t *k, uint32_t length, uint32_t initval);"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"void *hash_func_new_ctx(void);"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"static inline uint64_t"},{"line_number":109,"context_line":"hash_value(const struct hash *hash, const void *key)"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"93d3f73b_2fadf384","line":106,"updated":"2026-06-22 15:34:24.000000000","message":"please provide documentation for new functions","commit_id":"cec5d730f75582881ab94c57a3df6c32f26232fa"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"6438bbdb5b99aee24392dd402832639acf5dd181","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"uint64_t hash_func(const uint8_t *k, uint32_t length, uint32_t initval);"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"void *hash_func_new_ctx(void);"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"static inline uint64_t"},{"line_number":109,"context_line":"hash_value(const struct hash *hash, const void *key)"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"9d04d567_f5eeb4db","line":106,"in_reply_to":"1f6643fe_55d84d36","updated":"2026-07-17 14:34:13.000000000","message":"Acknowledged","commit_id":"cec5d730f75582881ab94c57a3df6c32f26232fa"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"655203ae8278fcd2b5610e1f08f43ce1db0e6637","unresolved":true,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"uint64_t hash_func(const uint8_t *k, uint32_t length, uint32_t initval);"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"void *hash_func_new_ctx(void);"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"static inline uint64_t"},{"line_number":109,"context_line":"hash_value(const struct hash *hash, const void *key)"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"1f6643fe_55d84d36","line":106,"in_reply_to":"93d3f73b_2fadf384","updated":"2026-07-17 14:34:01.000000000","message":"This is removed again in #1573","commit_id":"cec5d730f75582881ab94c57a3df6c32f26232fa"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"c2b98ebb842474411740532c7d06eceaa70eef13","unresolved":true,"context_lines":[{"line_number":58,"context_line":"    uint64_t (*hash_function)(const void *key, void *ctx);"},{"line_number":59,"context_line":"    bool (*compare_function)(const void *key1, const void *key2); /* return true if equal */"},{"line_number":60,"context_line":"    void (*free_ctx)(void *ctx);"},{"line_number":61,"context_line":"    void *free_ctx_arg;"},{"line_number":62,"context_line":"    struct hash_bucket *buckets;"},{"line_number":63,"context_line":"};"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":10,"id":"af26d1b9_c3019f4c","line":61,"updated":"2026-07-17 14:46:13.000000000","message":"This seems to be unused?","commit_id":"6e4746b5ad1e73d7bf95b650d780b7a07e7a7506"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"74d5fab1e4d64e7e96e59314a647943904e6f45d","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    uint64_t (*hash_function)(const void *key, void *ctx);"},{"line_number":59,"context_line":"    bool (*compare_function)(const void *key1, const void *key2); /* return true if equal */"},{"line_number":60,"context_line":"    void (*free_ctx)(void *ctx);"},{"line_number":61,"context_line":"    void *free_ctx_arg;"},{"line_number":62,"context_line":"    struct hash_bucket *buckets;"},{"line_number":63,"context_line":"};"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":10,"id":"d6e3c5ab_0fb755cb","line":61,"in_reply_to":"af26d1b9_c3019f4c","updated":"2026-07-22 10:26:15.000000000","message":"Acknowledged","commit_id":"6e4746b5ad1e73d7bf95b650d780b7a07e7a7506"}],"src/openvpn/mroute.c":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"2f5b02729c9f6afdea48843542b6fcb94d56ec36","unresolved":true,"context_lines":[{"line_number":358,"context_line":"mroute_addr_hash_function(const void *key, const uint8_t hash_key[HASH_KEY_LEN])"},{"line_number":359,"context_line":"{"},{"line_number":360,"context_line":"    return hash_func(mroute_addr_hash_ptr((const struct mroute_addr *)key),"},{"line_number":361,"context_line":"                     mroute_addr_hash_len((const struct mroute_addr *)key), *(int32_t *)hash_key);"},{"line_number":362,"context_line":"}"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"bool"}],"source_content_type":"text/x-csrc","patch_set":20,"id":"400191c1_fbfefae1","line":361,"updated":"2026-07-30 10:21:08.000000000","message":"Should be `uint32_t*`","commit_id":"124613f88855cf4b97c403de5d5ca145d5cd44f5"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"fe0a49367c15718c6edf2b4c49fc4243f21c5afa","unresolved":false,"context_lines":[{"line_number":358,"context_line":"mroute_addr_hash_function(const void *key, const uint8_t hash_key[HASH_KEY_LEN])"},{"line_number":359,"context_line":"{"},{"line_number":360,"context_line":"    return hash_func(mroute_addr_hash_ptr((const struct mroute_addr *)key),"},{"line_number":361,"context_line":"                     mroute_addr_hash_len((const struct mroute_addr *)key), *(int32_t *)hash_key);"},{"line_number":362,"context_line":"}"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"bool"}],"source_content_type":"text/x-csrc","patch_set":20,"id":"c129ac68_53fe4557","line":361,"in_reply_to":"400191c1_fbfefae1","updated":"2026-07-30 16:01:00.000000000","message":"Done","commit_id":"124613f88855cf4b97c403de5d5ca145d5cd44f5"}],"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":"25dea37f7818ae010e71e15b0d0d05a69ed2a956","unresolved":true,"context_lines":[{"line_number":310,"context_line":"     * multi_instances."},{"line_number":311,"context_line":"     */"},{"line_number":312,"context_line":"    m-\u003einotify_watchers \u003d"},{"line_number":313,"context_line":"        hash_init(t-\u003eoptions.real_hash_size, NULL, free, int_hash_function, int_compare_function);"},{"line_number":314,"context_line":"#endif"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    /*"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"9a502f44_82e37234","line":313,"updated":"2026-06-22 15:34:24.000000000","message":"why NULL here and not hash_func_new_ctx ?","commit_id":"cec5d730f75582881ab94c57a3df6c32f26232fa"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"f49bce0d089ae54162317260096175fa81253fee","unresolved":false,"context_lines":[{"line_number":310,"context_line":"     * multi_instances."},{"line_number":311,"context_line":"     */"},{"line_number":312,"context_line":"    m-\u003einotify_watchers \u003d"},{"line_number":313,"context_line":"        hash_init(t-\u003eoptions.real_hash_size, NULL, free, int_hash_function, int_compare_function);"},{"line_number":314,"context_line":"#endif"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    /*"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"3f2398b2_dda35ea1","line":313,"in_reply_to":"41b08c3b_7709e537","updated":"2026-07-14 11:02:06.000000000","message":"Done","commit_id":"cec5d730f75582881ab94c57a3df6c32f26232fa"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"e618f3cc654a8768937a132c5d6e99e5de086888","unresolved":true,"context_lines":[{"line_number":310,"context_line":"     * multi_instances."},{"line_number":311,"context_line":"     */"},{"line_number":312,"context_line":"    m-\u003einotify_watchers \u003d"},{"line_number":313,"context_line":"        hash_init(t-\u003eoptions.real_hash_size, NULL, free, int_hash_function, int_compare_function);"},{"line_number":314,"context_line":"#endif"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"    /*"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"41b08c3b_7709e537","line":313,"in_reply_to":"9a502f44_82e37234","updated":"2026-06-22 15:40:48.000000000","message":"Since this is not using the normal hash function. I added a comment to explain that.","commit_id":"cec5d730f75582881ab94c57a3df6c32f26232fa"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"4bb907161fe50d288d4bcb3c81cced612018f598","unresolved":true,"context_lines":[{"line_number":310,"context_line":"     * multi_instances."},{"line_number":311,"context_line":"     *"},{"line_number":312,"context_line":"     * Note we use a custom hash function here so we use dummy"},{"line_number":313,"context_line":"     * value and function for the context parameters."},{"line_number":314,"context_line":"     */"},{"line_number":315,"context_line":"    m-\u003einotify_watchers \u003d"},{"line_number":316,"context_line":"        hash_init(t-\u003eoptions.real_hash_size, int_hash_function, int_compare_function);"}],"source_content_type":"text/x-csrc","patch_set":19,"id":"1b99989b_137b6581","line":313,"updated":"2026-07-29 14:04:56.000000000","message":"comment is obsolete","commit_id":"856ed1b248f7eaaa70f87ab69bbdc1f2cbec09cd"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"5c0d6c2283e109295c6e3dfc6530aadf57bbe736","unresolved":false,"context_lines":[{"line_number":310,"context_line":"     * multi_instances."},{"line_number":311,"context_line":"     *"},{"line_number":312,"context_line":"     * Note we use a custom hash function here so we use dummy"},{"line_number":313,"context_line":"     * value and function for the context parameters."},{"line_number":314,"context_line":"     */"},{"line_number":315,"context_line":"    m-\u003einotify_watchers \u003d"},{"line_number":316,"context_line":"        hash_init(t-\u003eoptions.real_hash_size, int_hash_function, int_compare_function);"}],"source_content_type":"text/x-csrc","patch_set":19,"id":"ee868554_f789ca22","line":313,"in_reply_to":"1b99989b_137b6581","updated":"2026-07-30 09:28:38.000000000","message":"Done","commit_id":"856ed1b248f7eaaa70f87ab69bbdc1f2cbec09cd"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"fe0a49367c15718c6edf2b4c49fc4243f21c5afa","unresolved":false,"context_lines":[{"line_number":310,"context_line":"     * multi_instances."},{"line_number":311,"context_line":"     *"},{"line_number":312,"context_line":"     * Note we use a custom hash function here so we use dummy"},{"line_number":313,"context_line":"     * value and function for the context parameters."},{"line_number":314,"context_line":"     */"},{"line_number":315,"context_line":"    m-\u003einotify_watchers \u003d"},{"line_number":316,"context_line":"        hash_init(t-\u003eoptions.real_hash_size, int_hash_function, int_compare_function);"}],"source_content_type":"text/x-csrc","patch_set":19,"id":"f195ffaa_13f23ddc","line":313,"in_reply_to":"1b99989b_137b6581","updated":"2026-07-30 16:01:00.000000000","message":"Done","commit_id":"856ed1b248f7eaaa70f87ab69bbdc1f2cbec09cd"}],"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":"2f5b02729c9f6afdea48843542b6fcb94d56ec36","unresolved":true,"context_lines":[{"line_number":132,"context_line":"{"},{"line_number":133,"context_line":"    const char *str \u003d (const char *)key;"},{"line_number":134,"context_line":"    const uint32_t len \u003d (uint32_t)strlen(str);"},{"line_number":135,"context_line":"    return hash_func((const uint8_t *)str, len, *(int32_t *)(hash_key));"},{"line_number":136,"context_line":"}"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"static bool"}],"source_content_type":"text/x-csrc","patch_set":20,"id":"29f53a5d_6b9aef7e","line":135,"updated":"2026-07-30 10:21:08.000000000","message":"Should be `uint32_t*`","commit_id":"124613f88855cf4b97c403de5d5ca145d5cd44f5"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"fe0a49367c15718c6edf2b4c49fc4243f21c5afa","unresolved":false,"context_lines":[{"line_number":132,"context_line":"{"},{"line_number":133,"context_line":"    const char *str \u003d (const char *)key;"},{"line_number":134,"context_line":"    const uint32_t len \u003d (uint32_t)strlen(str);"},{"line_number":135,"context_line":"    return hash_func((const uint8_t *)str, len, *(int32_t *)(hash_key));"},{"line_number":136,"context_line":"}"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"static bool"}],"source_content_type":"text/x-csrc","patch_set":20,"id":"37bb3b03_050c364d","line":135,"in_reply_to":"29f53a5d_6b9aef7e","updated":"2026-07-30 16:01:00.000000000","message":"Done","commit_id":"124613f88855cf4b97c403de5d5ca145d5cd44f5"}]}
