)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000041,"name":"Ralf Lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},"change_message_id":"ac6b7e557ffba80fb5241bdfe2bfbddab06045f0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"4733fa02_629b32f3","updated":"2026-09-08 09:10:55.000000000","message":"just a couple of nits, the patch looks functionally correct.","commit_id":"e7f2021d892ea700a998d25f87b8059cec160049"}],"src/openvpn/oob.c":[{"author":{"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"43b7581cb044185a5c5180caf0427a17746e469d","unresolved":true,"context_lines":[{"line_number":188,"context_line":"        if (type \u003d\u003d wanted_type)"},{"line_number":189,"context_line":"        {"},{"line_number":190,"context_line":"            return true;"},{"line_number":191,"context_line":"        }"},{"line_number":192,"context_line":"        /* not the TLV we want: skip its value and keep scanning */"},{"line_number":193,"context_line":"        if (!buf_advance(payload, *value_len))"},{"line_number":194,"context_line":"        {"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"44ce705a_e1b25856","line":191,"updated":"2026-07-26 01:20:04.000000000","message":"In the happy case we do not check that the length is valid and inside the buffer","commit_id":"dc49b3ff37024a0bb810a18c1c03e2ec6f9df2e2"},{"author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"change_message_id":"38498f8f32e64d85717df7691f6cff262d5cfb2b","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        if (type \u003d\u003d wanted_type)"},{"line_number":189,"context_line":"        {"},{"line_number":190,"context_line":"            return true;"},{"line_number":191,"context_line":"        }"},{"line_number":192,"context_line":"        /* not the TLV we want: skip its value and keep scanning */"},{"line_number":193,"context_line":"        if (!buf_advance(payload, *value_len))"},{"line_number":194,"context_line":"        {"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"4f18c478_99a430d6","line":191,"in_reply_to":"44ce705a_e1b25856","updated":"2026-07-28 15:05:20.000000000","message":"Agreed","commit_id":"dc49b3ff37024a0bb810a18c1c03e2ec6f9df2e2"},{"author":{"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"43b7581cb044185a5c5180caf0427a17746e469d","unresolved":true,"context_lines":[{"line_number":193,"context_line":"        if (!buf_advance(payload, *value_len))"},{"line_number":194,"context_line":"        {"},{"line_number":195,"context_line":"            return false;"},{"line_number":196,"context_line":"        }"},{"line_number":197,"context_line":"    }"},{"line_number":198,"context_line":"    return false;"},{"line_number":199,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"82a7b47d_f8e4d6de","line":196,"updated":"2026-07-26 01:20:04.000000000","message":"for the other case we check this.","commit_id":"dc49b3ff37024a0bb810a18c1c03e2ec6f9df2e2"},{"author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"change_message_id":"38498f8f32e64d85717df7691f6cff262d5cfb2b","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        if (!buf_advance(payload, *value_len))"},{"line_number":194,"context_line":"        {"},{"line_number":195,"context_line":"            return false;"},{"line_number":196,"context_line":"        }"},{"line_number":197,"context_line":"    }"},{"line_number":198,"context_line":"    return false;"},{"line_number":199,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"b29199f5_f8ba17ab","line":196,"in_reply_to":"82a7b47d_f8e4d6de","updated":"2026-07-28 15:05:20.000000000","message":"Acknowledged","commit_id":"dc49b3ff37024a0bb810a18c1c03e2ec6f9df2e2"},{"author":{"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"43b7581cb044185a5c5180caf0427a17746e469d","unresolved":true,"context_lines":[{"line_number":195,"context_line":"            return false;"},{"line_number":196,"context_line":"        }"},{"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":"bool"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"80a327f4_450b8ad1","line":198,"updated":"2026-07-26 01:20:04.000000000","message":"Can we have nicer formatting of methods? I find this style of everything squished together not great to read.","commit_id":"dc49b3ff37024a0bb810a18c1c03e2ec6f9df2e2"},{"author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"change_message_id":"38498f8f32e64d85717df7691f6cff262d5cfb2b","unresolved":false,"context_lines":[{"line_number":195,"context_line":"            return false;"},{"line_number":196,"context_line":"        }"},{"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":"bool"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"e97eca80_b488fab9","line":198,"in_reply_to":"80a327f4_450b8ad1","updated":"2026-07-28 15:05:20.000000000","message":"Acknowledged","commit_id":"dc49b3ff37024a0bb810a18c1c03e2ec6f9df2e2"},{"author":{"_account_id":1000003,"name":"Arne Schwabe","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"43b7581cb044185a5c5180caf0427a17746e469d","unresolved":true,"context_lines":[{"line_number":204,"context_line":"    uint16_t value_len;"},{"line_number":205,"context_line":"    return oob_msg_read_header(payload, OOB_MSG_SERVER_PROBE)"},{"line_number":206,"context_line":"           \u0026\u0026 oob_find_tlv(payload, OOB_TLV_PROBE_PARAMETER, \u0026value_len)"},{"line_number":207,"context_line":"           \u0026\u0026 oob_probe_parameter_read(payload, param, value_len);"},{"line_number":208,"context_line":"}"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"bool"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"89434ef2_3db2521a","line":207,"updated":"2026-07-26 01:20:04.000000000","message":"I am just at this and I wonder if we can improve the code.\n\nThis API/function does not look particular great if this the way we have to interact with it. This is not a very readable method to me.","commit_id":"dc49b3ff37024a0bb810a18c1c03e2ec6f9df2e2"},{"author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"change_message_id":"38498f8f32e64d85717df7691f6cff262d5cfb2b","unresolved":false,"context_lines":[{"line_number":204,"context_line":"    uint16_t value_len;"},{"line_number":205,"context_line":"    return oob_msg_read_header(payload, OOB_MSG_SERVER_PROBE)"},{"line_number":206,"context_line":"           \u0026\u0026 oob_find_tlv(payload, OOB_TLV_PROBE_PARAMETER, \u0026value_len)"},{"line_number":207,"context_line":"           \u0026\u0026 oob_probe_parameter_read(payload, param, value_len);"},{"line_number":208,"context_line":"}"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"bool"}],"source_content_type":"text/x-csrc","patch_set":8,"id":"360ffd19_947eda0f","line":207,"in_reply_to":"89434ef2_3db2521a","updated":"2026-07-28 15:05:20.000000000","message":"Changed the API to return the value as a buffer instead of a length. One\nbuf_read_alloc() now validates the header\u0027s length for both the matching and the\nskipped TLVs, and the value_len parameter is dropped.","commit_id":"dc49b3ff37024a0bb810a18c1c03e2ec6f9df2e2"}],"src/openvpn/oob.h":[{"author":{"_account_id":1000041,"name":"Ralf Lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},"change_message_id":"ac6b7e557ffba80fb5241bdfe2bfbddab06045f0","unresolved":true,"context_lines":[{"line_number":134,"context_line":"/**"},{"line_number":135,"context_line":" * Read a received OOB PROBE_REPLY: verify its message-type header, then scan"},{"line_number":136,"context_line":" * for the probe_reply TLV; the client-side counterpart of"},{"line_number":137,"context_line":" * oob_server_probe_read(). TLV types other than probe_reply are skipped."},{"line_number":138,"context_line":" * payload is consumed as it is read."},{"line_number":139,"context_line":" *"},{"line_number":140,"context_line":" * @param payload  buffer positioned at the start of the OOB message payload"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"d765ee75_21b72230","line":137,"updated":"2026-09-08 09:10:55.000000000","message":"nit: TLV types other than probe_reply *marked optional* are skipped.","commit_id":"e7f2021d892ea700a998d25f87b8059cec160049"},{"author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"change_message_id":"474f6bb1cf43d97bce36335f052eaa3d7f450e38","unresolved":false,"context_lines":[{"line_number":134,"context_line":"/**"},{"line_number":135,"context_line":" * Read a received OOB PROBE_REPLY: verify its message-type header, then scan"},{"line_number":136,"context_line":" * for the probe_reply TLV; the client-side counterpart of"},{"line_number":137,"context_line":" * oob_server_probe_read(). TLV types other than probe_reply are skipped."},{"line_number":138,"context_line":" * payload is consumed as it is read."},{"line_number":139,"context_line":" *"},{"line_number":140,"context_line":" * @param payload  buffer positioned at the start of the OOB message payload"}],"source_content_type":"text/x-csrc","patch_set":12,"id":"13b3b4d4_305ee648","line":137,"in_reply_to":"d765ee75_21b72230","updated":"2026-09-09 07:28:33.000000000","message":"Done.","commit_id":"e7f2021d892ea700a998d25f87b8059cec160049"}],"tests/unit_tests/openvpn/test_oob.c":[{"author":{"_account_id":1000041,"name":"Ralf Lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},"change_message_id":"ac6b7e557ffba80fb5241bdfe2bfbddab06045f0","unresolved":true,"context_lines":[{"line_number":476,"context_line":"        .weight \u003d 50,"},{"line_number":477,"context_line":"        .connect_lifetime \u003d 120,"},{"line_number":478,"context_line":"        .flags \u003d 1,"},{"line_number":479,"context_line":"    };"},{"line_number":480,"context_line":"    memcpy(in.peer_session_id.id, \"SRVREPLY\", SID_SIZE);"},{"line_number":481,"context_line":"    assert_true(oob_client_reply_write(\u0026buf, \u0026in));"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":12,"id":"1dfbe153_a08b8504","line":479,"updated":"2026-09-08 09:10:55.000000000","message":"nit: why not include max_latency_diff here as well?","commit_id":"e7f2021d892ea700a998d25f87b8059cec160049"},{"author":{"_account_id":1000008,"name":"Lev Stipakov","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"change_message_id":"474f6bb1cf43d97bce36335f052eaa3d7f450e38","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        .weight \u003d 50,"},{"line_number":477,"context_line":"        .connect_lifetime \u003d 120,"},{"line_number":478,"context_line":"        .flags \u003d 1,"},{"line_number":479,"context_line":"    };"},{"line_number":480,"context_line":"    memcpy(in.peer_session_id.id, \"SRVREPLY\", SID_SIZE);"},{"line_number":481,"context_line":"    assert_true(oob_client_reply_write(\u0026buf, \u0026in));"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":12,"id":"6d08263c_b2351458","line":479,"in_reply_to":"1dfbe153_a08b8504","updated":"2026-09-09 07:28:33.000000000","message":"Done. Added to the input struct and the asserts.","commit_id":"e7f2021d892ea700a998d25f87b8059cec160049"}]}
