)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1000053,"name":"razvanc","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"change_message_id":"90c29e32f1a3a2472758bf7102bbcd735f056e07","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Arne Schwabe \u003carne@rfc2549.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-08-26 13:50:35 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add helper method to extra a field from a buffer"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ifdd2122a3e60cdb11cc9df67570ab5628bfcdeea"},{"line_number":10,"context_line":"Signed-off-by: Arne Schwabe \u003carne@rfc2549.org\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"3d741555_2dbdb0cc","line":7,"updated":"2026-08-26 12:33:14.000000000","message":"Typo: \"extract\"","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"b7809a1fc3bbf97d3cddfe2c2b4a8ae75a579a53","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Arne Schwabe \u003carne@rfc2549.org\u003e"},{"line_number":5,"context_line":"CommitDate: 2026-08-26 13:50:35 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add helper method to extra a field from a buffer"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ifdd2122a3e60cdb11cc9df67570ab5628bfcdeea"},{"line_number":10,"context_line":"Signed-off-by: Arne Schwabe \u003carne@rfc2549.org\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"30e8d51d_4a25b93d","line":7,"in_reply_to":"3d741555_2dbdb0cc","updated":"2026-08-26 15:21:14.000000000","message":"Done","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1000053,"name":"razvanc","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"change_message_id":"e66d88212cdd0adf4188d424870988aa8b0f4355","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"86c2bd2b_fa54fa77","updated":"2026-08-26 05:55:26.000000000","message":"I am not sure we need `buffer_read_int()` at all, for two reasons:\n\n1. We already have `buf_read_u64()` and other helpers in buffer.h.\n2. In acc.c where this is used there are already alternatives used (`atoi_constrained()`) for the other length field.\n\n`extract_field()` may be useful, so keeping just that (and updating the commit description) might be something we want.","commit_id":"08cb2cfb4ab730666449ca39581a1abf4224d568"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"82217d56d1f13107a01c1a59a874747064f4c32e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"a406f86d_d6e662f9","in_reply_to":"1584e6d4_a7216620","updated":"2026-08-26 11:06:57.000000000","message":"This commit is older than atoi_constrained but I remove the method and used just atoi. We don\u0027t need the noisyness and check if the value is good later on.","commit_id":"08cb2cfb4ab730666449ca39581a1abf4224d568"},{"author":{"_account_id":1000053,"name":"razvanc","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"change_message_id":"f397a7679c2efd42302b95a7c070337899f710f5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"1584e6d4_a7216620","in_reply_to":"277858e4_815a8c02","updated":"2026-08-26 06:25:30.000000000","message":"OK, what about the `atoi_constrained()` remark? E.g. something like:\n\n```\nconst char *len_str \u003d extract_field(\u0026buf, \u0027,\u0027, \u0026gc);\nint payload_len;\nif (!len_str\n    || !atoi_constrained(len_str, \u0026payload_len, \"ACC payload length\",\n                         0, ACC_MAX_MSG_LEN, D_PUSH_ERRORS))\n{\n    err_reason \u003d \"could not parse payload length field\";\n    goto err;\n}\n```","commit_id":"08cb2cfb4ab730666449ca39581a1abf4224d568"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"b0c018437329c2dc95de7fcd83e6bdcd13b4683d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"277858e4_815a8c02","in_reply_to":"86c2bd2b_fa54fa77","updated":"2026-08-26 06:16:39.000000000","message":"`buf_read_u64()` reads a binary-encoded 8 byte integer, not a decimal-encoded one","commit_id":"08cb2cfb4ab730666449ca39581a1abf4224d568"}],"src/openvpn/buffer.c":[{"author":{"_account_id":1000053,"name":"razvanc","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"change_message_id":"e66d88212cdd0adf4188d424870988aa8b0f4355","unresolved":true,"context_lines":[{"line_number":1397,"context_line":"    while (buf_len(buf))"},{"line_number":1398,"context_line":"    {"},{"line_number":1399,"context_line":"        uint8_t c \u003d *BPTR(buf);"},{"line_number":1400,"context_line":"        if (c \u003e\u003d \u00270\u0027 \u0026\u0026 c \u003c\u003d \u00279\u0027)"},{"line_number":1401,"context_line":"        {"},{"line_number":1402,"context_line":"            tmp \u003d tmp * 10;"},{"line_number":1403,"context_line":"            /* lower nibble of ascii digits is their value */"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"dc7779ab_c5202ab6","line":1400,"updated":"2026-08-26 05:55:26.000000000","message":"We have `char_class(c, CC_DIGIT)`, would that fit this purpose?","commit_id":"08cb2cfb4ab730666449ca39581a1abf4224d568"},{"author":{"_account_id":1000053,"name":"razvanc","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"change_message_id":"f397a7679c2efd42302b95a7c070337899f710f5","unresolved":false,"context_lines":[{"line_number":1397,"context_line":"    while (buf_len(buf))"},{"line_number":1398,"context_line":"    {"},{"line_number":1399,"context_line":"        uint8_t c \u003d *BPTR(buf);"},{"line_number":1400,"context_line":"        if (c \u003e\u003d \u00270\u0027 \u0026\u0026 c \u003c\u003d \u00279\u0027)"},{"line_number":1401,"context_line":"        {"},{"line_number":1402,"context_line":"            tmp \u003d tmp * 10;"},{"line_number":1403,"context_line":"            /* lower nibble of ascii digits is their value */"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"e7c9606f_f382f14b","line":1400,"in_reply_to":"b313daa5_c502a9de","updated":"2026-08-26 06:25:30.000000000","message":"Fair enough, can\u0027t argue with style preference. 😊","commit_id":"08cb2cfb4ab730666449ca39581a1abf4224d568"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"b0c018437329c2dc95de7fcd83e6bdcd13b4683d","unresolved":true,"context_lines":[{"line_number":1397,"context_line":"    while (buf_len(buf))"},{"line_number":1398,"context_line":"    {"},{"line_number":1399,"context_line":"        uint8_t c \u003d *BPTR(buf);"},{"line_number":1400,"context_line":"        if (c \u003e\u003d \u00270\u0027 \u0026\u0026 c \u003c\u003d \u00279\u0027)"},{"line_number":1401,"context_line":"        {"},{"line_number":1402,"context_line":"            tmp \u003d tmp * 10;"},{"line_number":1403,"context_line":"            /* lower nibble of ascii digits is their value */"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"b313daa5_c502a9de","line":1400,"in_reply_to":"dc7779ab_c5202ab6","updated":"2026-08-26 06:16:39.000000000","message":"for explicit integer parsing, the code \"as written\" with explicit `c \u003e\u003d \u00270\u0027...` is much easier to understand","commit_id":"08cb2cfb4ab730666449ca39581a1abf4224d568"},{"author":{"_account_id":1000053,"name":"razvanc","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"change_message_id":"90c29e32f1a3a2472758bf7102bbcd735f056e07","unresolved":true,"context_lines":[{"line_number":1386,"context_line":"}"},{"line_number":1387,"context_line":""},{"line_number":1388,"context_line":"char *"},{"line_number":1389,"context_line":"extract_field(struct buffer *buf, char sep, struct gc_arena *gc)"},{"line_number":1390,"context_line":"{"},{"line_number":1391,"context_line":"    const uint8_t *seppos \u003d memchr(BPTR(buf), sep, buf_len(buf));"},{"line_number":1392,"context_line":"    if (!seppos)"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"6ddfc3d3_5bd9e116","line":1389,"updated":"2026-08-26 12:33:14.000000000","message":"Just a nitpick, and possibly wrong but just in case you think it\u0027s worth a think: most other functions in these files are prefixed with `buf_`. Would `buf_extract_field()` make more sense?","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"b7809a1fc3bbf97d3cddfe2c2b4a8ae75a579a53","unresolved":false,"context_lines":[{"line_number":1386,"context_line":"}"},{"line_number":1387,"context_line":""},{"line_number":1388,"context_line":"char *"},{"line_number":1389,"context_line":"extract_field(struct buffer *buf, char sep, struct gc_arena *gc)"},{"line_number":1390,"context_line":"{"},{"line_number":1391,"context_line":"    const uint8_t *seppos \u003d memchr(BPTR(buf), sep, buf_len(buf));"},{"line_number":1392,"context_line":"    if (!seppos)"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"b669dcc3_014be768","line":1389,"in_reply_to":"6ddfc3d3_5bd9e116","updated":"2026-08-26 15:21:14.000000000","message":"Done","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"},{"author":{"_account_id":1000053,"name":"razvanc","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"change_message_id":"90c29e32f1a3a2472758bf7102bbcd735f056e07","unresolved":true,"context_lines":[{"line_number":1388,"context_line":"char *"},{"line_number":1389,"context_line":"extract_field(struct buffer *buf, char sep, struct gc_arena *gc)"},{"line_number":1390,"context_line":"{"},{"line_number":1391,"context_line":"    const uint8_t *seppos \u003d memchr(BPTR(buf), sep, buf_len(buf));"},{"line_number":1392,"context_line":"    if (!seppos)"},{"line_number":1393,"context_line":"    {"},{"line_number":1394,"context_line":"        return NULL;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"e48fa955_a2ea0218","line":1391,"updated":"2026-08-26 12:33:14.000000000","message":"`BPTR(buf)` seems capable of returning `NULL`, so should we check we\u0027re not passing `NULL` to `memchr()` before the call?\n\nMaybe as:\n\n```\nif (!buf_valid(buf))\n    return NULL;\n```","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"b7809a1fc3bbf97d3cddfe2c2b4a8ae75a579a53","unresolved":false,"context_lines":[{"line_number":1388,"context_line":"char *"},{"line_number":1389,"context_line":"extract_field(struct buffer *buf, char sep, struct gc_arena *gc)"},{"line_number":1390,"context_line":"{"},{"line_number":1391,"context_line":"    const uint8_t *seppos \u003d memchr(BPTR(buf), sep, buf_len(buf));"},{"line_number":1392,"context_line":"    if (!seppos)"},{"line_number":1393,"context_line":"    {"},{"line_number":1394,"context_line":"        return NULL;"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"0ff47b8b_5240d8dc","line":1391,"in_reply_to":"e48fa955_a2ea0218","updated":"2026-08-26 15:21:14.000000000","message":"Done","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"},{"author":{"_account_id":1000053,"name":"razvanc","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"change_message_id":"90c29e32f1a3a2472758bf7102bbcd735f056e07","unresolved":true,"context_lines":[{"line_number":1397,"context_line":""},{"line_number":1398,"context_line":"    char *field \u003d gc_malloc(field_len + 1, false, gc);"},{"line_number":1399,"context_line":""},{"line_number":1400,"context_line":"    strncpy(field, BSTR(buf), field_len);"},{"line_number":1401,"context_line":"    field[field_len] \u003d 0;"},{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"    buf_advance(buf, (int)field_len + 1);"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"78dc6664_ca817865","line":1400,"updated":"2026-08-26 12:33:14.000000000","message":"We already know the length (don\u0027t need to look for `NUL` characters anymore), so `memcpy(field, BPTR(buf), field_len);` should be enough here.","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"b7809a1fc3bbf97d3cddfe2c2b4a8ae75a579a53","unresolved":false,"context_lines":[{"line_number":1397,"context_line":""},{"line_number":1398,"context_line":"    char *field \u003d gc_malloc(field_len + 1, false, gc);"},{"line_number":1399,"context_line":""},{"line_number":1400,"context_line":"    strncpy(field, BSTR(buf), field_len);"},{"line_number":1401,"context_line":"    field[field_len] \u003d 0;"},{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"    buf_advance(buf, (int)field_len + 1);"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"800b7982_7b1d4015","line":1400,"in_reply_to":"78dc6664_ca817865","updated":"2026-08-26 15:21:14.000000000","message":"Done","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"},{"author":{"_account_id":1000053,"name":"razvanc","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"change_message_id":"90c29e32f1a3a2472758bf7102bbcd735f056e07","unresolved":true,"context_lines":[{"line_number":1400,"context_line":"    strncpy(field, BSTR(buf), field_len);"},{"line_number":1401,"context_line":"    field[field_len] \u003d 0;"},{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"    buf_advance(buf, (int)field_len + 1);"},{"line_number":1404,"context_line":"    return field;"},{"line_number":1405,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"13cf5451_c9f30ca1","line":1403,"updated":"2026-08-26 12:33:14.000000000","message":"The `(int)` cast is unnecessary, `buf_advance()` already takes a `size_t` parameter there.","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"b7809a1fc3bbf97d3cddfe2c2b4a8ae75a579a53","unresolved":false,"context_lines":[{"line_number":1400,"context_line":"    strncpy(field, BSTR(buf), field_len);"},{"line_number":1401,"context_line":"    field[field_len] \u003d 0;"},{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"    buf_advance(buf, (int)field_len + 1);"},{"line_number":1404,"context_line":"    return field;"},{"line_number":1405,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"a731563a_5dbba3a2","line":1403,"in_reply_to":"13cf5451_c9f30ca1","updated":"2026-08-26 15:21:14.000000000","message":"That happens when a patch sits almost 3 years in a branch .... That only changed last year.","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"},{"author":{"_account_id":1000053,"name":"razvanc","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"change_message_id":"90c29e32f1a3a2472758bf7102bbcd735f056e07","unresolved":true,"context_lines":[{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"    buf_advance(buf, (int)field_len + 1);"},{"line_number":1404,"context_line":"    return field;"},{"line_number":1405,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"5ba75d93_7c9f51c5","line":1405,"updated":"2026-08-26 12:33:14.000000000","message":"Minor nitpick: this lost the trailing endline.","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"b7809a1fc3bbf97d3cddfe2c2b4a8ae75a579a53","unresolved":false,"context_lines":[{"line_number":1402,"context_line":""},{"line_number":1403,"context_line":"    buf_advance(buf, (int)field_len + 1);"},{"line_number":1404,"context_line":"    return field;"},{"line_number":1405,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"1347b60a_fb12a568","line":1405,"in_reply_to":"5ba75d93_7c9f51c5","updated":"2026-08-26 15:21:14.000000000","message":"Done","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"}],"src/openvpn/buffer.h":[{"author":{"_account_id":1000053,"name":"razvanc","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"change_message_id":"e66d88212cdd0adf4188d424870988aa8b0f4355","unresolved":true,"context_lines":[{"line_number":2258,"context_line":""},{"line_number":2259,"context_line":"/**"},{"line_number":2260,"context_line":" * Extract a field from buf that end with the \\c sep character. The"},{"line_number":2261,"context_line":" * returned string is allocated in the gc_arena. If the seperator character"},{"line_number":2262,"context_line":" * is not found, the function returns the nullptr."},{"line_number":2263,"context_line":" *"},{"line_number":2264,"context_line":" * The buffer is also forward to the point after the seperator character."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"37092562_8bf7e365","line":2261,"updated":"2026-08-26 05:55:26.000000000","message":"Typo: \"separator\".","commit_id":"08cb2cfb4ab730666449ca39581a1abf4224d568"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"487e820a2600d9500becd7552586bb467db8e2de","unresolved":false,"context_lines":[{"line_number":2258,"context_line":""},{"line_number":2259,"context_line":"/**"},{"line_number":2260,"context_line":" * Extract a field from buf that end with the \\c sep character. The"},{"line_number":2261,"context_line":" * returned string is allocated in the gc_arena. If the seperator character"},{"line_number":2262,"context_line":" * is not found, the function returns the nullptr."},{"line_number":2263,"context_line":" *"},{"line_number":2264,"context_line":" * The buffer is also forward to the point after the seperator character."}],"source_content_type":"text/x-csrc","patch_set":5,"id":"cff76d91_c29b5657","line":2261,"in_reply_to":"37092562_8bf7e365","updated":"2026-08-26 12:07:07.000000000","message":"Done","commit_id":"08cb2cfb4ab730666449ca39581a1abf4224d568"},{"author":{"_account_id":1000053,"name":"razvanc","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"change_message_id":"e66d88212cdd0adf4188d424870988aa8b0f4355","unresolved":true,"context_lines":[{"line_number":2261,"context_line":" * returned string is allocated in the gc_arena. If the seperator character"},{"line_number":2262,"context_line":" * is not found, the function returns the nullptr."},{"line_number":2263,"context_line":" *"},{"line_number":2264,"context_line":" * The buffer is also forward to the point after the seperator character."},{"line_number":2265,"context_line":" */"},{"line_number":2266,"context_line":"char *"},{"line_number":2267,"context_line":"extract_field(struct buffer *buf, char sep, struct gc_arena *gc);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"ad4c297a_e74b286e","line":2264,"updated":"2026-08-26 05:55:26.000000000","message":"Typo: \"forwarded to\".","commit_id":"08cb2cfb4ab730666449ca39581a1abf4224d568"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"487e820a2600d9500becd7552586bb467db8e2de","unresolved":false,"context_lines":[{"line_number":2261,"context_line":" * returned string is allocated in the gc_arena. If the seperator character"},{"line_number":2262,"context_line":" * is not found, the function returns the nullptr."},{"line_number":2263,"context_line":" *"},{"line_number":2264,"context_line":" * The buffer is also forward to the point after the seperator character."},{"line_number":2265,"context_line":" */"},{"line_number":2266,"context_line":"char *"},{"line_number":2267,"context_line":"extract_field(struct buffer *buf, char sep, struct gc_arena *gc);"}],"source_content_type":"text/x-csrc","patch_set":5,"id":"aae836de_235676f5","line":2264,"in_reply_to":"ad4c297a_e74b286e","updated":"2026-08-26 12:07:07.000000000","message":"Done","commit_id":"08cb2cfb4ab730666449ca39581a1abf4224d568"},{"author":{"_account_id":1000053,"name":"razvanc","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"change_message_id":"90c29e32f1a3a2472758bf7102bbcd735f056e07","unresolved":true,"context_lines":[{"line_number":2244,"context_line":"/* End of Buffer Lists */"},{"line_number":2245,"context_line":""},{"line_number":2246,"context_line":"/**"},{"line_number":2247,"context_line":" * Extract a field from buf that end with the \\c sep character. The"},{"line_number":2248,"context_line":" * returned string is allocated in the gc_arena. If the separator character"},{"line_number":2249,"context_line":" * is not found, the function returns the nullptr."},{"line_number":2250,"context_line":" *"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"a4d6d932_08ee6782","line":2247,"updated":"2026-08-26 12:33:14.000000000","message":"Typo: \"ends\".","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"b7809a1fc3bbf97d3cddfe2c2b4a8ae75a579a53","unresolved":false,"context_lines":[{"line_number":2244,"context_line":"/* End of Buffer Lists */"},{"line_number":2245,"context_line":""},{"line_number":2246,"context_line":"/**"},{"line_number":2247,"context_line":" * Extract a field from buf that end with the \\c sep character. The"},{"line_number":2248,"context_line":" * returned string is allocated in the gc_arena. If the separator character"},{"line_number":2249,"context_line":" * is not found, the function returns the nullptr."},{"line_number":2250,"context_line":" *"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"07419209_4e236540","line":2247,"in_reply_to":"a4d6d932_08ee6782","updated":"2026-08-26 15:21:14.000000000","message":"Done","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"},{"author":{"_account_id":1000053,"name":"razvanc","display_name":"Razvan Cojocaru","email":"razvanc@mailbox.org","username":"razvanc"},"change_message_id":"90c29e32f1a3a2472758bf7102bbcd735f056e07","unresolved":true,"context_lines":[{"line_number":2252,"context_line":" */"},{"line_number":2253,"context_line":"char *"},{"line_number":2254,"context_line":"extract_field(struct buffer *buf, char sep, struct gc_arena *gc);"},{"line_number":2255,"context_line":"#endif /* BUFFER_H */"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"38d87af4_b0194d78","line":2255,"updated":"2026-08-26 12:33:14.000000000","message":"Probably want a newline between the function name and `#endif`.","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"b7809a1fc3bbf97d3cddfe2c2b4a8ae75a579a53","unresolved":false,"context_lines":[{"line_number":2252,"context_line":" */"},{"line_number":2253,"context_line":"char *"},{"line_number":2254,"context_line":"extract_field(struct buffer *buf, char sep, struct gc_arena *gc);"},{"line_number":2255,"context_line":"#endif /* BUFFER_H */"}],"source_content_type":"text/x-csrc","patch_set":6,"id":"b545da4b_f16087b2","line":2255,"in_reply_to":"38d87af4_b0194d78","updated":"2026-08-26 15:21:14.000000000","message":"Done","commit_id":"08677f114c3ac26073656d1be4ba3ce62e3583fa"}]}
