)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"245ed7d7fb09bcb50667df1eb5e8a1d856e3c290","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8a8aaac3_bfe99f13","updated":"2025-10-10 08:03:31.000000000","message":"This does not work for me.\n\nI have 3 clients connected, 2 with \"master, sends IV\" and 1 on 2.6 (freebsd-14-amd64 is \"2.6\")\n\n```\nCLIENT_LIST     freebsd-14-amd64        udp6:194.97.140.5:64748 10.204.2.46    fd00:abcd:204:2::100a    6448    5636    2025-10-10 09:57:55     1760083075     MyTokenUser      57      2       AES-256-GCM\nCLIENT_LIST     cron2-freebsd-tc-amd64-25       udp6:194.97.140.21:25690       10.204.2.38      fd00:abcd:204:2::1008   5383    5284    2025-10-10 09:58:43    1760083123       MyTokenUser     59      3       AES-256-GCM\nCLIENT_LIST     cron2-macos-arm64-m2    udp6:193.149.48.144:51724       10.204.2.50     fd00:abcd:204:2::100b   8497    7237    2025-10-10 09:52:05     1760082725      MyTokenUser     55      0       AES-256-GCM\n```\n\nThen I do a push-update-broad \"-dns\" (something harmless).  The log file shows\n\n```\nOct 10 09:59:17 gentoo tun-udp-p2mp[24491]: SENT CONTROL [freebsd-14-amd64]: \u0027PUSH_UPDATE,-dns\u0027 (status\u003d1)\nOct 10 09:59:17 gentoo tun-udp-p2mp[24491]: SENT CONTROL [cron2-macos-arm64-m2]: \u0027\u0027 (status\u003d1)\nOct 10 09:59:17 gentoo tun-udp-p2mp[24491]: Failed to process push update message sent to client ID: 0\n```\n\nwhy only 2 clients?  why is the message empty on the second one?","commit_id":"6ed264057316c8792c958979a7009d66d049eecd"},{"author":{"_account_id":1000007,"name":"ordex","display_name":"Antonio Quartulli","email":"antonio@mandelbit.com","username":"ordex"},"change_message_id":"015af5ba593c30dc93ce51e298e25d100459c641","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"94832fd6_20d2813d","updated":"2025-10-09 11:52:59.000000000","message":"ok, this looks good to me","commit_id":"6ed264057316c8792c958979a7009d66d049eecd"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"fa3fabe2a35b9bee28dc598b29fb75d6884bd392","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5ca59bf0_5bcf07ef","updated":"2025-10-10 14:20:24.000000000","message":"with the bugfix from #1264, this works","commit_id":"6ed264057316c8792c958979a7009d66d049eecd"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"ee0931963eb9d5767b959dee1523c0df9c59d6de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7c3bf79a_407cab7d","in_reply_to":"8a8aaac3_bfe99f13","updated":"2025-10-10 10:23:18.000000000","message":"It\u0027s a bug unrelated to this patch, I sent another patch to fix it https://gerrit.openvpn.net/c/openvpn/+/1264","commit_id":"6ed264057316c8792c958979a7009d66d049eecd"}],"src/openvpn/push_util.c":[{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"9a98bbf86e6349bb82a60d6e4413867d738a43df","unresolved":true,"context_lines":[{"line_number":196,"context_line":"    if (!mi)"},{"line_number":197,"context_line":"    {"},{"line_number":198,"context_line":"        return false;"},{"line_number":199,"context_line":"    }"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    const unsigned int iv_proto_peer \u003d extract_iv_proto(mi-\u003econtext.c2.tls_multi-\u003epeer_info);"},{"line_number":202,"context_line":"    if (!(iv_proto_peer \u0026 IV_PROTO_PUSH_UPDATE))"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"c4b5cab5_f39d3a8a","line":199,"updated":"2025-10-08 12:10:48.000000000","message":"this cannot be NULL - but if you doubt your own callers, make it in an `ASSERT(mi)`.","commit_id":"ff545a94061c2f567d4c48008b1fe95af0932ee8"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"bd36d58560c9e6a33ba01630f7ea38f0e6f57cf0","unresolved":false,"context_lines":[{"line_number":196,"context_line":"    if (!mi)"},{"line_number":197,"context_line":"    {"},{"line_number":198,"context_line":"        return false;"},{"line_number":199,"context_line":"    }"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    const unsigned int iv_proto_peer \u003d extract_iv_proto(mi-\u003econtext.c2.tls_multi-\u003epeer_info);"},{"line_number":202,"context_line":"    if (!(iv_proto_peer \u0026 IV_PROTO_PUSH_UPDATE))"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"df855855_fc7dc98e","line":199,"in_reply_to":"c4b5cab5_f39d3a8a","updated":"2025-10-08 12:19:06.000000000","message":"Acknowledged","commit_id":"ff545a94061c2f567d4c48008b1fe95af0932ee8"},{"author":{"_account_id":1000007,"name":"ordex","display_name":"Antonio Quartulli","email":"antonio@mandelbit.com","username":"ordex"},"change_message_id":"d8c05c3eb0bdb4c146f8072c555a21718132d615","unresolved":true,"context_lines":[{"line_number":201,"context_line":"    const unsigned int iv_proto_peer \u003d extract_iv_proto(mi-\u003econtext.c2.tls_multi-\u003epeer_info);"},{"line_number":202,"context_line":"    if (!(iv_proto_peer \u0026 IV_PROTO_PUSH_UPDATE))"},{"line_number":203,"context_line":"    {"},{"line_number":204,"context_line":"        msg(M_CLIENT, \"ERROR: Peer ID: %u does not support push-update\","},{"line_number":205,"context_line":"            mi-\u003econtext.c2.tls_multi ? mi-\u003econtext.c2.tls_multi-\u003epeer_id : UINT32_MAX);"},{"line_number":206,"context_line":"        return false;"},{"line_number":207,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"af9bdc8d_7673d872","line":204,"updated":"2025-10-08 12:03:01.000000000","message":"I\u0027d remove the \"ERROR:\" label - this is just an information that we have unsupported clients connected and they won\u0027t receive the message.\n\nmaybe something: \"PUSH_UPDATE: not sending message to unsupported peer with ID %u\"?","commit_id":"ff545a94061c2f567d4c48008b1fe95af0932ee8"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"9a98bbf86e6349bb82a60d6e4413867d738a43df","unresolved":true,"context_lines":[{"line_number":201,"context_line":"    const unsigned int iv_proto_peer \u003d extract_iv_proto(mi-\u003econtext.c2.tls_multi-\u003epeer_info);"},{"line_number":202,"context_line":"    if (!(iv_proto_peer \u0026 IV_PROTO_PUSH_UPDATE))"},{"line_number":203,"context_line":"    {"},{"line_number":204,"context_line":"        msg(M_CLIENT, \"ERROR: Peer ID: %u does not support push-update\","},{"line_number":205,"context_line":"            mi-\u003econtext.c2.tls_multi ? mi-\u003econtext.c2.tls_multi-\u003epeer_id : UINT32_MAX);"},{"line_number":206,"context_line":"        return false;"},{"line_number":207,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"df6efcad_2cdada10","line":204,"in_reply_to":"af9bdc8d_7673d872","updated":"2025-10-08 12:10:48.000000000","message":"For the \"I want *this* one client\" case, an ERROR is valid, for the \"send to all\" it\u0027s a bit excessive (\"there are 400 clients connected, only 2 of them are new enough to receive this, so 398 error messages\").  So maybe moving the `msg()` call to `UPD_BY_CID` case in send_push_update()?","commit_id":"ff545a94061c2f567d4c48008b1fe95af0932ee8"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"cedaaf61d2913939fd132c69452f80cbb4caa3ab","unresolved":false,"context_lines":[{"line_number":201,"context_line":"    const unsigned int iv_proto_peer \u003d extract_iv_proto(mi-\u003econtext.c2.tls_multi-\u003epeer_info);"},{"line_number":202,"context_line":"    if (!(iv_proto_peer \u0026 IV_PROTO_PUSH_UPDATE))"},{"line_number":203,"context_line":"    {"},{"line_number":204,"context_line":"        msg(M_CLIENT, \"ERROR: Peer ID: %u does not support push-update\","},{"line_number":205,"context_line":"            mi-\u003econtext.c2.tls_multi ? mi-\u003econtext.c2.tls_multi-\u003epeer_id : UINT32_MAX);"},{"line_number":206,"context_line":"        return false;"},{"line_number":207,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"8cf8fa77_19df11d9","line":204,"in_reply_to":"d70a48ea_ca9f747a","updated":"2025-10-08 13:32:24.000000000","message":"Now i log the message \"PUSH_UPDATE: not sending message to unsupported peer with ID %u\" just in upt-cid. After that a \"ERROR: no client updated\" message will be logged so should be clear it\u0027s an error anyway.","commit_id":"ff545a94061c2f567d4c48008b1fe95af0932ee8"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"bd36d58560c9e6a33ba01630f7ea38f0e6f57cf0","unresolved":false,"context_lines":[{"line_number":201,"context_line":"    const unsigned int iv_proto_peer \u003d extract_iv_proto(mi-\u003econtext.c2.tls_multi-\u003epeer_info);"},{"line_number":202,"context_line":"    if (!(iv_proto_peer \u0026 IV_PROTO_PUSH_UPDATE))"},{"line_number":203,"context_line":"    {"},{"line_number":204,"context_line":"        msg(M_CLIENT, \"ERROR: Peer ID: %u does not support push-update\","},{"line_number":205,"context_line":"            mi-\u003econtext.c2.tls_multi ? mi-\u003econtext.c2.tls_multi-\u003epeer_id : UINT32_MAX);"},{"line_number":206,"context_line":"        return false;"},{"line_number":207,"context_line":"    }"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"d70a48ea_ca9f747a","line":204,"in_reply_to":"df6efcad_2cdada10","updated":"2025-10-08 12:19:06.000000000","message":"Acknowledged","commit_id":"ff545a94061c2f567d4c48008b1fe95af0932ee8"},{"author":{"_account_id":1000007,"name":"ordex","display_name":"Antonio Quartulli","email":"antonio@mandelbit.com","username":"ordex"},"change_message_id":"d8c05c3eb0bdb4c146f8072c555a21718132d615","unresolved":true,"context_lines":[{"line_number":202,"context_line":"    if (!(iv_proto_peer \u0026 IV_PROTO_PUSH_UPDATE))"},{"line_number":203,"context_line":"    {"},{"line_number":204,"context_line":"        msg(M_CLIENT, \"ERROR: Peer ID: %u does not support push-update\","},{"line_number":205,"context_line":"            mi-\u003econtext.c2.tls_multi ? mi-\u003econtext.c2.tls_multi-\u003epeer_id : UINT32_MAX);"},{"line_number":206,"context_line":"        return false;"},{"line_number":207,"context_line":"    }"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"352256e9_45e6f7bc","line":205,"updated":"2025-10-08 12:03:01.000000000","message":"you just dereferenced \"tls_multi\" a few lines above, therefore it must be non-NULL at this point.\nIf you believe it can be NULL, this check should happen earlier on. But can it really happen? I am not sure.","commit_id":"ff545a94061c2f567d4c48008b1fe95af0932ee8"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"bd36d58560c9e6a33ba01630f7ea38f0e6f57cf0","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    if (!(iv_proto_peer \u0026 IV_PROTO_PUSH_UPDATE))"},{"line_number":203,"context_line":"    {"},{"line_number":204,"context_line":"        msg(M_CLIENT, \"ERROR: Peer ID: %u does not support push-update\","},{"line_number":205,"context_line":"            mi-\u003econtext.c2.tls_multi ? mi-\u003econtext.c2.tls_multi-\u003epeer_id : UINT32_MAX);"},{"line_number":206,"context_line":"        return false;"},{"line_number":207,"context_line":"    }"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"275c68b2_08325ea1","line":205,"in_reply_to":"352256e9_45e6f7bc","updated":"2025-10-08 12:19:06.000000000","message":"Acknowledged","commit_id":"ff545a94061c2f567d4c48008b1fe95af0932ee8"},{"author":{"_account_id":1000007,"name":"ordex","display_name":"Antonio Quartulli","email":"antonio@mandelbit.com","username":"ordex"},"change_message_id":"d8c05c3eb0bdb4c146f8072c555a21718132d615","unresolved":true,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        if (!mi)"},{"line_number":251,"context_line":"        {"},{"line_number":252,"context_line":"            gc_free(\u0026gc);"},{"line_number":253,"context_line":"            return -ENOENT;"},{"line_number":254,"context_line":"        }"},{"line_number":255,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"ac206d3c_e8cbc84e","line":252,"updated":"2025-10-08 12:03:01.000000000","message":"am I wrong or this is totally unrelated?\nIt still seems a valid fix, but please submit it in its own patch.","commit_id":"ff545a94061c2f567d4c48008b1fe95af0932ee8"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"cedaaf61d2913939fd132c69452f80cbb4caa3ab","unresolved":false,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        if (!mi)"},{"line_number":251,"context_line":"        {"},{"line_number":252,"context_line":"            gc_free(\u0026gc);"},{"line_number":253,"context_line":"            return -ENOENT;"},{"line_number":254,"context_line":"        }"},{"line_number":255,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"cbf60c60_b11a51e8","line":252,"in_reply_to":"1b73c2df_7d09cc66","updated":"2025-10-08 13:32:24.000000000","message":"Done","commit_id":"ff545a94061c2f567d4c48008b1fe95af0932ee8"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"bd36d58560c9e6a33ba01630f7ea38f0e6f57cf0","unresolved":true,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        if (!mi)"},{"line_number":251,"context_line":"        {"},{"line_number":252,"context_line":"            gc_free(\u0026gc);"},{"line_number":253,"context_line":"            return -ENOENT;"},{"line_number":254,"context_line":"        }"},{"line_number":255,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"b80626a7_60d0008d","line":252,"in_reply_to":"ac206d3c_e8cbc84e","updated":"2025-10-08 12:19:06.000000000","message":"yeah, it is unrelated, but a patch only for this?","commit_id":"ff545a94061c2f567d4c48008b1fe95af0932ee8"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"57f084a3c0b5688a68bc16a3b2e7f9805e049846","unresolved":true,"context_lines":[{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        if (!mi)"},{"line_number":251,"context_line":"        {"},{"line_number":252,"context_line":"            gc_free(\u0026gc);"},{"line_number":253,"context_line":"            return -ENOENT;"},{"line_number":254,"context_line":"        }"},{"line_number":255,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"1b73c2df_7d09cc66","line":252,"in_reply_to":"b80626a7_60d0008d","updated":"2025-10-08 12:21:35.000000000","message":"I\u0027l leave it in, and mention it in the commit message\n\n\"while at it, fix a gc_arena mem leak in one of the error paths\"","commit_id":"ff545a94061c2f567d4c48008b1fe95af0932ee8"},{"author":{"_account_id":1000007,"name":"ordex","display_name":"Antonio Quartulli","email":"antonio@mandelbit.com","username":"ordex"},"change_message_id":"7cca2fe11d69a8b45262c7b935c19cfc2ab8a630","unresolved":true,"context_lines":[{"line_number":291,"context_line":"        const char *old_ipv6 \u003d curr_mi-\u003econtext.options.ifconfig_ipv6_local;"},{"line_number":292,"context_line":"        if (!send_single_push_update(\u0026curr_mi-\u003econtext, msgs, \u0026option_types_found))"},{"line_number":293,"context_line":"        {"},{"line_number":294,"context_line":"            msg(M_CLIENT, \"ERROR: Peer ID: %u has not been updated\", curr_mi-\u003econtext.c2.tls_multi-\u003epeer_id);"},{"line_number":295,"context_line":"            continue;"},{"line_number":296,"context_line":"        }"},{"line_number":297,"context_line":"        if (option_types_found \u0026 OPT_P_UP)"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"9f86880a_824507c6","line":294,"updated":"2025-10-09 11:21:47.000000000","message":"I thought we wanted to print a message only in the BY_ID command, no? Here it\u0027s the broadcast branch.","commit_id":"6ed264057316c8792c958979a7009d66d049eecd"},{"author":{"_account_id":1000040,"name":"mrbff","email":"marco@mandelbit.com","username":"mrbff"},"change_message_id":"a735034dede54016d05f22fadee443e4cd243f4c","unresolved":false,"context_lines":[{"line_number":291,"context_line":"        const char *old_ipv6 \u003d curr_mi-\u003econtext.options.ifconfig_ipv6_local;"},{"line_number":292,"context_line":"        if (!send_single_push_update(\u0026curr_mi-\u003econtext, msgs, \u0026option_types_found))"},{"line_number":293,"context_line":"        {"},{"line_number":294,"context_line":"            msg(M_CLIENT, \"ERROR: Peer ID: %u has not been updated\", curr_mi-\u003econtext.c2.tls_multi-\u003epeer_id);"},{"line_number":295,"context_line":"            continue;"},{"line_number":296,"context_line":"        }"},{"line_number":297,"context_line":"        if (option_types_found \u0026 OPT_P_UP)"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"b02c6dcb_0391bff1","line":294,"in_reply_to":"9f86880a_824507c6","updated":"2025-10-09 11:45:08.000000000","message":"this is unrelated to the new patch, the error message was already, here, but it is not triggered by the presence or not of the IV_PROTO_PUSH_UPDATE. It\u0027s just in case there is another generic problem, it should not happen normally. I just removed the inline statement since I assert that tls_multi is not NULL (in support_push_update()).","commit_id":"6ed264057316c8792c958979a7009d66d049eecd"}]}
