)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"107eccb1d270a8eadcb6e26b5bf9d6fdb7b650b4","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c1894d47_0fb56f08","updated":"2025-11-27 21:49:58.000000000","message":"Back to the drawing board - see GH issue #918.\n\nWith this, we end up overflowing \"something in libnl\", and with sufficient clients that all exit at the same time, the server exits with out of memory (in libnl).\n\nThe underlying reason is dco_get_peer() being called from the call chain that follows multi_close_instance(), when called from dco_read_and_process(), and that clogs sitnl/netlink/something.","commit_id":"8f5e4eb1564e0d6d1bd713170a97c6bba374662b"},{"author":{"_account_id":1000041,"name":"ralf_lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},"change_message_id":"df7f88dde7394b5e2eaad4a404d29e6c4ddaba0e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e6d094a3_fe990e65","in_reply_to":"c1894d47_0fb56f08","updated":"2025-11-28 08:23:44.000000000","message":"As discussed on IRC and proposed in #918, I introduced a boolean flag to lock netlink communication operations.","commit_id":"8f5e4eb1564e0d6d1bd713170a97c6bba374662b"},{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"81cdec72cf9a0f7de66778e0b8c47ff2026f08b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"8b3d9d0c_e6359532","updated":"2025-11-28 09:38:13.000000000","message":"I can no longer break it, even with 200 parallel disconnects ;-)","commit_id":"19a4024f0a9636d459c4aabe780b2d80fb1d3ba1"}],"src/openvpn/dco_linux.c":[{"author":{"_account_id":1000002,"name":"cron2","display_name":"Gert Doering","email":"gert@greenie.muc.de","username":"cron2"},"change_message_id":"bbc1df956bfd5dccad45de589b53b8659dd320c6","unresolved":true,"context_lines":[{"line_number":1112,"context_line":"        case OVPN_CMD_PEER_GET:"},{"line_number":1113,"context_line":"        {"},{"line_number":1114,"context_line":"            ret \u003d ovpn_handle_peer(dco, attrs);"},{"line_number":1115,"context_line":"            break;"},{"line_number":1116,"context_line":"        }"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        case OVPN_CMD_PEER_DEL_NTF:"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"19628400_49a99e55","line":1115,"updated":"2025-11-28 10:37:34.000000000","message":"actually I think this one should stay as it was before (`return ovpn_handle_peer()`) plus a comment `/* return directly, there are no messages to pass to *process_incoming_dco() */` or such.\n\nSince we no longer clear dco-\u003edco_message_type, every OVPN_CMD_PEER_GET will basically call `multi_process_incoming_dco()` with a repeat of the previous message - and if that peer-id is being re-used by a new connect, bad things will happen","commit_id":"19a4024f0a9636d459c4aabe780b2d80fb1d3ba1"},{"author":{"_account_id":1000041,"name":"ralf_lici","display_name":"Ralf Lici","email":"ralf@mandelbit.com","username":"ralf_lici"},"change_message_id":"10a108333aebd47bff426d452486b50db7f65c52","unresolved":false,"context_lines":[{"line_number":1112,"context_line":"        case OVPN_CMD_PEER_GET:"},{"line_number":1113,"context_line":"        {"},{"line_number":1114,"context_line":"            ret \u003d ovpn_handle_peer(dco, attrs);"},{"line_number":1115,"context_line":"            break;"},{"line_number":1116,"context_line":"        }"},{"line_number":1117,"context_line":""},{"line_number":1118,"context_line":"        case OVPN_CMD_PEER_DEL_NTF:"}],"source_content_type":"text/x-csrc","patch_set":11,"id":"21014759_1e758765","line":1115,"in_reply_to":"19628400_49a99e55","updated":"2025-11-28 10:56:55.000000000","message":"Done","commit_id":"19a4024f0a9636d459c4aabe780b2d80fb1d3ba1"}]}
