)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"bbc5e42214531eeea4a0175bfbf1c780794a1201","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"705fbdd7_aa77cefe","updated":"2026-10-16 07:46:08.000000000","message":"Added some nitpicks","commit_id":"1421419c2d3731d8d840acd085375c77d0c3914a"}],"src/openvpnserv/automatic.c":[{"author":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"bbc5e42214531eeea4a0175bfbf1c780794a1201","unresolved":true,"context_lines":[{"line_number":21,"context_line":" */"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"/*"},{"line_number":24,"context_line":" * The automatic service starts one OpenVPN process for each configuration"},{"line_number":25,"context_line":" * file found in the autostart config directory and restarts them when they"},{"line_number":26,"context_line":" * exit unexpectedly. The OpenVPN processes are not started directly, but by"},{"line_number":27,"context_line":" * the interactive service, which this service talks to via its named pipe."}],"source_content_type":"text/x-csrc","patch_set":2,"id":"13e5f53f_d35ee7d9","line":24,"updated":"2026-10-16 07:46:08.000000000","message":"Could be marked as a `@file` doxygen comment?","commit_id":"1421419c2d3731d8d840acd085375c77d0c3914a"},{"author":{"_account_id":1000006,"name":"Heiko Hund","display_name":"Heiko Hund","email":"heiko@openvpn.net","username":"d12fk"},"change_message_id":"4cdb921073b406b21f4b4e4374ff8cbca74070a1","unresolved":false,"context_lines":[{"line_number":21,"context_line":" */"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"/*"},{"line_number":24,"context_line":" * The automatic service starts one OpenVPN process for each configuration"},{"line_number":25,"context_line":" * file found in the autostart config directory and restarts them when they"},{"line_number":26,"context_line":" * exit unexpectedly. The OpenVPN processes are not started directly, but by"},{"line_number":27,"context_line":" * the interactive service, which this service talks to via its named pipe."}],"source_content_type":"text/x-csrc","patch_set":2,"id":"e20872ad_42be61e2","line":24,"in_reply_to":"13e5f53f_d35ee7d9","updated":"2026-10-17 08:46:35.000000000","message":"Done","commit_id":"1421419c2d3731d8d840acd085375c77d0c3914a"},{"author":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"bbc5e42214531eeea4a0175bfbf1c780794a1201","unresolved":true,"context_lines":[{"line_number":36,"context_line":"#include \u003cstdio.h\u003e"},{"line_number":37,"context_line":"#include \u003cstdlib.h\u003e"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"/* Time we give the interactive service to accept our connection */"},{"line_number":40,"context_line":"#define ISERVICE_CONNECT_TIMEOUT 5000 /*ms*/"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"/*"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"6b9d3700_ad7675e1","line":39,"updated":"2026-10-16 07:46:08.000000000","message":"Make these doxygen comments as well?","commit_id":"1421419c2d3731d8d840acd085375c77d0c3914a"},{"author":{"_account_id":1000006,"name":"Heiko Hund","display_name":"Heiko Hund","email":"heiko@openvpn.net","username":"d12fk"},"change_message_id":"4cdb921073b406b21f4b4e4374ff8cbca74070a1","unresolved":false,"context_lines":[{"line_number":36,"context_line":"#include \u003cstdio.h\u003e"},{"line_number":37,"context_line":"#include \u003cstdlib.h\u003e"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"/* Time we give the interactive service to accept our connection */"},{"line_number":40,"context_line":"#define ISERVICE_CONNECT_TIMEOUT 5000 /*ms*/"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"/*"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"e5bf5628_e5773663","line":39,"in_reply_to":"6b9d3700_ad7675e1","updated":"2026-10-17 08:46:35.000000000","message":"Done","commit_id":"1421419c2d3731d8d840acd085375c77d0c3914a"},{"author":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"bbc5e42214531eeea4a0175bfbf1c780794a1201","unresolved":true,"context_lines":[{"line_number":104,"context_line":" *"},{"line_number":105,"context_line":" * @param buf   string buffer to append to"},{"line_number":106,"context_line":" * @param size  size of the buffer in wide characters"},{"line_number":107,"context_line":" * @param pos   in/out position in the buffer in wide characters"},{"line_number":108,"context_line":" * @param str   the string to append"},{"line_number":109,"context_line":" *"},{"line_number":110,"context_line":" * @return BOOL to indicate success or failure"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"7c72c43b_e94e6652","line":107,"updated":"2026-10-16 07:46:08.000000000","message":"- use `[in,out]` instead of staging in/out in the text\n- maybe mention that pos points to after the `\\0`?","commit_id":"1421419c2d3731d8d840acd085375c77d0c3914a"},{"author":{"_account_id":1000006,"name":"Heiko Hund","display_name":"Heiko Hund","email":"heiko@openvpn.net","username":"d12fk"},"change_message_id":"4cdb921073b406b21f4b4e4374ff8cbca74070a1","unresolved":false,"context_lines":[{"line_number":104,"context_line":" *"},{"line_number":105,"context_line":" * @param buf   string buffer to append to"},{"line_number":106,"context_line":" * @param size  size of the buffer in wide characters"},{"line_number":107,"context_line":" * @param pos   in/out position in the buffer in wide characters"},{"line_number":108,"context_line":" * @param str   the string to append"},{"line_number":109,"context_line":" *"},{"line_number":110,"context_line":" * @return BOOL to indicate success or failure"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"ee2b70d1_628230b1","line":107,"in_reply_to":"7c72c43b_e94e6652","updated":"2026-10-17 08:46:35.000000000","message":"Done","commit_id":"1421419c2d3731d8d840acd085375c77d0c3914a"}],"tests/unit_tests/openvpnserv/test_openvpnserv_automatic.c":[{"author":{"_account_id":1000001,"name":"Frank Lichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"bbc5e42214531eeea4a0175bfbf1c780794a1201","unresolved":true,"context_lines":[{"line_number":212,"context_line":"    /* a config file name that cannot fit the log file name is an error */"},{"line_number":213,"context_line":"    for (size_t i \u003d 0; i \u003c _countof(name) - 1; i++)"},{"line_number":214,"context_line":"    {"},{"line_number":215,"context_line":"        name[i] \u003d L\u0027a\u0027;"},{"line_number":216,"context_line":"    }"},{"line_number":217,"context_line":"    name[_countof(name) - 1] \u003d L\u0027\\0\u0027;"},{"line_number":218,"context_line":"    assert_false(GetLogFilePath(path, _countof(path), L\"C:\\\\log\\\\\", name));"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"6276d1a4_9216ce73","line":215,"updated":"2026-10-16 07:46:08.000000000","message":"Why are you not using wmemset here?","commit_id":"1421419c2d3731d8d840acd085375c77d0c3914a"},{"author":{"_account_id":1000006,"name":"Heiko Hund","display_name":"Heiko Hund","email":"heiko@openvpn.net","username":"d12fk"},"change_message_id":"4cdb921073b406b21f4b4e4374ff8cbca74070a1","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    /* a config file name that cannot fit the log file name is an error */"},{"line_number":213,"context_line":"    for (size_t i \u003d 0; i \u003c _countof(name) - 1; i++)"},{"line_number":214,"context_line":"    {"},{"line_number":215,"context_line":"        name[i] \u003d L\u0027a\u0027;"},{"line_number":216,"context_line":"    }"},{"line_number":217,"context_line":"    name[_countof(name) - 1] \u003d L\u0027\\0\u0027;"},{"line_number":218,"context_line":"    assert_false(GetLogFilePath(path, _countof(path), L\"C:\\\\log\\\\\", name));"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"146ddf2b_3285495b","line":215,"in_reply_to":"6276d1a4_9216ce73","updated":"2026-10-17 08:46:35.000000000","message":"Done","commit_id":"1421419c2d3731d8d840acd085375c77d0c3914a"}]}
