)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"d984e6fbdde2cc17d7ce3130defad9be72b713ed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"cea0c3d5_9e713794","updated":"2023-08-07 09:03:49.000000000","message":"Acked-By: Frank Lichtenheld \u003cfrank@lichtenheld.com\u003e","commit_id":"2135d75a06a93b2c83cd0a6a9a9e198f707862e5"}],"include/openvpn-msg.h":[{"author":{"_account_id":1000009,"name":"selvanair","display_name":"Selva Nair","email":"selva.nair@gmail.com","username":"selvanair"},"change_message_id":"551e0df2addfacea383c4a6d6e523eb534b5c1ba","unresolved":true,"context_lines":[{"line_number":42,"context_line":"    msg_register_ring_buffers,"},{"line_number":43,"context_line":"    msg_set_mtu,"},{"line_number":44,"context_line":"    msg_add_wins_cfg,"},{"line_number":45,"context_line":"    msg_del_wins_cfg"},{"line_number":46,"context_line":"} message_type_t;"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"typedef struct {"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"e3485767_6d04ba47","line":45,"updated":"2023-07-31 15:16:32.000000000","message":"A general comment/question: wasn\u0027t the existing (unused) \"msg_add_nbt_cfg\" etc meant for adding wins support?","commit_id":"2135d75a06a93b2c83cd0a6a9a9e198f707862e5"},{"author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"change_message_id":"3a3039b1140e7bc820a204de56ed0a33e311d250","unresolved":true,"context_lines":[{"line_number":42,"context_line":"    msg_register_ring_buffers,"},{"line_number":43,"context_line":"    msg_set_mtu,"},{"line_number":44,"context_line":"    msg_add_wins_cfg,"},{"line_number":45,"context_line":"    msg_del_wins_cfg"},{"line_number":46,"context_line":"} message_type_t;"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"typedef struct {"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"14635399_26d4dd36","line":45,"in_reply_to":"e3485767_6d04ba47","updated":"2023-08-01 06:26:29.000000000","message":"Not sure. There is also unused nbt_cfg_message_t but at present it cannot be used to pass more than two addresses and has other members which will be unused if we are to implement passing WINS addresses only.\n\nI was thinking to remove those unused pieces but probably not it this commit.","commit_id":"2135d75a06a93b2c83cd0a6a9a9e198f707862e5"}],"src/openvpnserv/interactive.c":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"e6525fea8c5accc882a731b1f1f4389cb3ae70a3","unresolved":true,"context_lines":[{"line_number":1086,"context_line":""},{"line_number":1087,"context_line":"/**"},{"line_number":1088,"context_line":" * Run the command: netsh interface ip $action wins $if_name [static] $addr"},{"line_number":1089,"context_line":" * @param  action      \"delete\" or \"add\""},{"line_number":1090,"context_line":" * @param  if_name     \"name_of_interface\""},{"line_number":1091,"context_line":" * @param  addr        IPv4 address as a string"},{"line_number":1092,"context_line":" *"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"e7e6ec3b_6554de56","line":1089,"updated":"2023-07-31 09:29:57.000000000","message":"This says \"add\" but the rest of the function seems to use \"set\". But also see below for \"add\" vs \"set\".","commit_id":"43af15708f8a3ab3417f39aebd52cdf09534dc0d"},{"author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"change_message_id":"28b2b058c88986463214c2ea0e65d433fefd0e00","unresolved":false,"context_lines":[{"line_number":1086,"context_line":""},{"line_number":1087,"context_line":"/**"},{"line_number":1088,"context_line":" * Run the command: netsh interface ip $action wins $if_name [static] $addr"},{"line_number":1089,"context_line":" * @param  action      \"delete\" or \"add\""},{"line_number":1090,"context_line":" * @param  if_name     \"name_of_interface\""},{"line_number":1091,"context_line":" * @param  addr        IPv4 address as a string"},{"line_number":1092,"context_line":" *"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"0b804f50_4d9c1022","line":1089,"in_reply_to":"6605e8bb_4222a8d1","updated":"2023-07-31 11:30:27.000000000","message":"Done","commit_id":"43af15708f8a3ab3417f39aebd52cdf09534dc0d"},{"author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"change_message_id":"55b78243d2cbe1bd3f8015b10363ef849719b909","unresolved":true,"context_lines":[{"line_number":1086,"context_line":""},{"line_number":1087,"context_line":"/**"},{"line_number":1088,"context_line":" * Run the command: netsh interface ip $action wins $if_name [static] $addr"},{"line_number":1089,"context_line":" * @param  action      \"delete\" or \"add\""},{"line_number":1090,"context_line":" * @param  if_name     \"name_of_interface\""},{"line_number":1091,"context_line":" * @param  addr        IPv4 address as a string"},{"line_number":1092,"context_line":" *"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"6605e8bb_4222a8d1","line":1089,"in_reply_to":"e7e6ec3b_6554de56","updated":"2023-07-31 11:28:31.000000000","message":"Right. I copypasted it from DNS version which uses add.","commit_id":"43af15708f8a3ab3417f39aebd52cdf09534dc0d"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"e6525fea8c5accc882a731b1f1f4389cb3ae70a3","unresolved":true,"context_lines":[{"line_number":1091,"context_line":" * @param  addr        IPv4 address as a string"},{"line_number":1092,"context_line":" *"},{"line_number":1093,"context_line":" * If addr is null and action \u003d \"delete\" all addresses are deleted."},{"line_number":1094,"context_line":" * if action \u003d \"set\" then \"static\" is added before $addr"},{"line_number":1095,"context_line":" */"},{"line_number":1096,"context_line":"static DWORD"},{"line_number":1097,"context_line":"netsh_wins_cmd(const wchar_t *action, const wchar_t *if_name, const wchar_t *addr)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"9fdd7e73_de5a661e","line":1094,"updated":"2023-07-31 09:29:57.000000000","message":"Why are you using \"set\" here? The documentation (https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-r2-and-2008/cc731521(v\u003dws.10)#set-winsserver) seems to suggest that that can only set one WINS server (\"If the interface is already statically configured, the static parameter replaces the existing WINS server address list with the one specified in the set winsserver command.\") Shouldn\u0027t you use \"add\" instead?","commit_id":"43af15708f8a3ab3417f39aebd52cdf09534dc0d"},{"author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"change_message_id":"55b78243d2cbe1bd3f8015b10363ef849719b909","unresolved":true,"context_lines":[{"line_number":1091,"context_line":" * @param  addr        IPv4 address as a string"},{"line_number":1092,"context_line":" *"},{"line_number":1093,"context_line":" * If addr is null and action \u003d \"delete\" all addresses are deleted."},{"line_number":1094,"context_line":" * if action \u003d \"set\" then \"static\" is added before $addr"},{"line_number":1095,"context_line":" */"},{"line_number":1096,"context_line":"static DWORD"},{"line_number":1097,"context_line":"netsh_wins_cmd(const wchar_t *action, const wchar_t *if_name, const wchar_t *addr)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"b9b566c1_c7e3b460","line":1094,"in_reply_to":"9fdd7e73_de5a661e","updated":"2023-07-31 11:28:31.000000000","message":"Good point. The reason I use \"set\" is because I checked the logs of current implementation which uses \"set\". Idea of multiple WINS servers slipped from my mind. I checked the code and we use \"set + static\" for the first server and \"set\" for the rest, if any. Will to the same here.","commit_id":"43af15708f8a3ab3417f39aebd52cdf09534dc0d"},{"author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"change_message_id":"28b2b058c88986463214c2ea0e65d433fefd0e00","unresolved":false,"context_lines":[{"line_number":1091,"context_line":" * @param  addr        IPv4 address as a string"},{"line_number":1092,"context_line":" *"},{"line_number":1093,"context_line":" * If addr is null and action \u003d \"delete\" all addresses are deleted."},{"line_number":1094,"context_line":" * if action \u003d \"set\" then \"static\" is added before $addr"},{"line_number":1095,"context_line":" */"},{"line_number":1096,"context_line":"static DWORD"},{"line_number":1097,"context_line":"netsh_wins_cmd(const wchar_t *action, const wchar_t *if_name, const wchar_t *addr)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"8542b98a_e7eb2982","line":1094,"in_reply_to":"b9b566c1_c7e3b460","updated":"2023-07-31 11:30:27.000000000","message":"Done","commit_id":"43af15708f8a3ab3417f39aebd52cdf09534dc0d"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"e6525fea8c5accc882a731b1f1f4389cb3ae70a3","unresolved":true,"context_lines":[{"line_number":1403,"context_line":"    /* We delete all current addresses before adding any"},{"line_number":1404,"context_line":"     * OR if the message type is del_wins_cfg"},{"line_number":1405,"context_line":"     */"},{"line_number":1406,"context_line":"    if (addr_len \u003e 0 || msg-\u003eheader.type \u003d\u003d msg_del_wins_cfg)"},{"line_number":1407,"context_line":"    {"},{"line_number":1408,"context_line":"        err \u003d DeleteWINS(wide_name);"},{"line_number":1409,"context_line":"        if (err)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"a93a828d_867cc63f","line":1406,"updated":"2023-07-31 09:29:57.000000000","message":"Is there ever a case where this would be false?","commit_id":"43af15708f8a3ab3417f39aebd52cdf09534dc0d"},{"author":{"_account_id":1000009,"name":"selvanair","display_name":"Selva Nair","email":"selva.nair@gmail.com","username":"selvanair"},"change_message_id":"73a8a5443c4b45bdaa945fbc71d9b6af29a5a7d4","unresolved":false,"context_lines":[{"line_number":1403,"context_line":"    /* We delete all current addresses before adding any"},{"line_number":1404,"context_line":"     * OR if the message type is del_wins_cfg"},{"line_number":1405,"context_line":"     */"},{"line_number":1406,"context_line":"    if (addr_len \u003e 0 || msg-\u003eheader.type \u003d\u003d msg_del_wins_cfg)"},{"line_number":1407,"context_line":"    {"},{"line_number":1408,"context_line":"        err \u003d DeleteWINS(wide_name);"},{"line_number":1409,"context_line":"        if (err)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"d18799fd_594b4a55","line":1406,"in_reply_to":"71ba4ee8_026f50da","updated":"2023-07-31 16:37:32.000000000","message":"Though the process is unprivileged, its started by the privileged service which ensures that the process is a trusted executable installed in a particular location etc. So messages received via the msg-channel pipe can be trusted. Note that this pipe is created by the service with a single instance restriction and the handle passed on to openvpn.exe. Without this guarantee iservice would have been far less safe and secure.\n\nOnly the client process (like the GUI) is untrusted.","commit_id":"43af15708f8a3ab3417f39aebd52cdf09534dc0d"},{"author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"change_message_id":"55b78243d2cbe1bd3f8015b10363ef849719b909","unresolved":true,"context_lines":[{"line_number":1403,"context_line":"    /* We delete all current addresses before adding any"},{"line_number":1404,"context_line":"     * OR if the message type is del_wins_cfg"},{"line_number":1405,"context_line":"     */"},{"line_number":1406,"context_line":"    if (addr_len \u003e 0 || msg-\u003eheader.type \u003d\u003d msg_del_wins_cfg)"},{"line_number":1407,"context_line":"    {"},{"line_number":1408,"context_line":"        err \u003d DeleteWINS(wide_name);"},{"line_number":1409,"context_line":"        if (err)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"bf8912f9_5365fe44","line":1406,"in_reply_to":"a93a828d_867cc63f","updated":"2023-07-31 11:28:31.000000000","message":"Normally no, but this request comes from unprivileged userspace process, which we probably do not want to trust.","commit_id":"43af15708f8a3ab3417f39aebd52cdf09534dc0d"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"de04a6b7fc75df598fab24cf0fcdc7645f7d55b5","unresolved":false,"context_lines":[{"line_number":1403,"context_line":"    /* We delete all current addresses before adding any"},{"line_number":1404,"context_line":"     * OR if the message type is del_wins_cfg"},{"line_number":1405,"context_line":"     */"},{"line_number":1406,"context_line":"    if (addr_len \u003e 0 || msg-\u003eheader.type \u003d\u003d msg_del_wins_cfg)"},{"line_number":1407,"context_line":"    {"},{"line_number":1408,"context_line":"        err \u003d DeleteWINS(wide_name);"},{"line_number":1409,"context_line":"        if (err)"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"71ba4ee8_026f50da","line":1406,"in_reply_to":"bf8912f9_5365fe44","updated":"2023-07-31 11:43:19.000000000","message":"Acknowledged","commit_id":"43af15708f8a3ab3417f39aebd52cdf09534dc0d"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"e6525fea8c5accc882a731b1f1f4389cb3ae70a3","unresolved":true,"context_lines":[{"line_number":1433,"context_line":""},{"line_number":1434,"context_line":"    err \u003d 0;"},{"line_number":1435,"context_line":""},{"line_number":1436,"context_line":"    if (msg-\u003eaddr_len \u003e 0)"},{"line_number":1437,"context_line":"    {"},{"line_number":1438,"context_line":"        wchar_t *tmp_name \u003d _wcsdup(wide_name);"},{"line_number":1439,"context_line":"        if (!tmp_name || AddListItem(\u0026(*lists)[undo_wins], tmp_name))"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"f983786a_f046e4f1","line":1436,"updated":"2023-07-31 09:29:57.000000000","message":"Nitpick: Should be addr_len, not msg-\u003eaddr_len","commit_id":"43af15708f8a3ab3417f39aebd52cdf09534dc0d"},{"author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"change_message_id":"28b2b058c88986463214c2ea0e65d433fefd0e00","unresolved":false,"context_lines":[{"line_number":1433,"context_line":""},{"line_number":1434,"context_line":"    err \u003d 0;"},{"line_number":1435,"context_line":""},{"line_number":1436,"context_line":"    if (msg-\u003eaddr_len \u003e 0)"},{"line_number":1437,"context_line":"    {"},{"line_number":1438,"context_line":"        wchar_t *tmp_name \u003d _wcsdup(wide_name);"},{"line_number":1439,"context_line":"        if (!tmp_name || AddListItem(\u0026(*lists)[undo_wins], tmp_name))"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"7183cc1d_59f0330f","line":1436,"in_reply_to":"0b1bcdb1_cc02227e","updated":"2023-07-31 11:30:27.000000000","message":"Done","commit_id":"43af15708f8a3ab3417f39aebd52cdf09534dc0d"},{"author":{"_account_id":1000008,"name":"stipa","display_name":"Lev Stipakov","email":"lstipakov@gmail.com","username":"stipa"},"change_message_id":"55b78243d2cbe1bd3f8015b10363ef849719b909","unresolved":true,"context_lines":[{"line_number":1433,"context_line":""},{"line_number":1434,"context_line":"    err \u003d 0;"},{"line_number":1435,"context_line":""},{"line_number":1436,"context_line":"    if (msg-\u003eaddr_len \u003e 0)"},{"line_number":1437,"context_line":"    {"},{"line_number":1438,"context_line":"        wchar_t *tmp_name \u003d _wcsdup(wide_name);"},{"line_number":1439,"context_line":"        if (!tmp_name || AddListItem(\u0026(*lists)[undo_wins], tmp_name))"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"0b1bcdb1_cc02227e","line":1436,"in_reply_to":"f983786a_f046e4f1","updated":"2023-07-31 11:28:31.000000000","message":"Should not matter here, copypaste from similar DNS function. But I can change it.","commit_id":"43af15708f8a3ab3417f39aebd52cdf09534dc0d"}]}
