)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"c1780141b33f159941e65dca9f08c16b0d945f99","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"  openvpn --client --proto tcp --remote poseidon --port 2201 --dev tap"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The client side must be on Linux. Other platform do not reproduce this"},{"line_number":27,"context_line":"bug."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Note that the client will not configure any IP or IPv6 on the interface"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1fc8d999_ff64750f","line":26,"updated":"2026-01-19 14:11:45.000000000","message":"\"platforms\"","commit_id":"6d251f14704b3ba6d62f79794f2ad8ccbc310499"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"391678f213a14e147b44fa6ada594c51ae8cb0a0","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"  openvpn --client --proto tcp --remote poseidon --port 2201 --dev tap"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The client side must be on Linux. Other platform do not reproduce this"},{"line_number":27,"context_line":"bug."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Note that the client will not configure any IP or IPv6 on the interface"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"36ef9656_74597bff","line":26,"in_reply_to":"1fc8d999_ff64750f","updated":"2026-01-22 12:40:03.000000000","message":"Done","commit_id":"6d251f14704b3ba6d62f79794f2ad8ccbc310499"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"c1780141b33f159941e65dca9f08c16b0d945f99","unresolved":true,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"But the reset on the TCP socket triggers the TCP socket to be available"},{"line_number":48,"context_line":"for read, even if it is just for a read of 0 bytes to indicate the reset."},{"line_number":49,"context_line":"So the link_socket_read_tcp will run into the assert."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Change-Id: Ifd3e953104a67c8bf2a225e179865e3dbd0dbfbc"},{"line_number":52,"context_line":"Signed-off-by: Arne Schwabe \u003carne@rfc2549.org\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"d0a1f917_c009ea97","line":49,"updated":"2026-01-19 14:11:45.000000000","message":"Superfluous \"the\" before \"link_socket_read_tcp\"","commit_id":"6d251f14704b3ba6d62f79794f2ad8ccbc310499"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"391678f213a14e147b44fa6ada594c51ae8cb0a0","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"But the reset on the TCP socket triggers the TCP socket to be available"},{"line_number":48,"context_line":"for read, even if it is just for a read of 0 bytes to indicate the reset."},{"line_number":49,"context_line":"So the link_socket_read_tcp will run into the assert."},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"Change-Id: Ifd3e953104a67c8bf2a225e179865e3dbd0dbfbc"},{"line_number":52,"context_line":"Signed-off-by: Arne Schwabe \u003carne@rfc2549.org\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"97f3bd95_9020ab31","line":49,"in_reply_to":"d0a1f917_c009ea97","updated":"2026-01-22 12:40:03.000000000","message":"Done","commit_id":"6d251f14704b3ba6d62f79794f2ad8ccbc310499"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"e4c8dc2a5fa2539fb782e06083911ffbfb0f8124","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Merge stream_buf_get_next and stream_buf_set_next"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The stream_buf_set_next prepares a buffer in the stream_buf"},{"line_number":10,"context_line":"structure that will be retrieved by stream_buf_get the next"},{"line_number":11,"context_line":"time it is used."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"c6179746_210069f4","line":9,"updated":"2026-02-11 15:25:35.000000000","message":"Either remove \"The\" or add \"function\"","commit_id":"bd6f40a8ea9fbf4f23d5a47a7220ce09c92e6df2"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"c1780141b33f159941e65dca9f08c16b0d945f99","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"15f6fbfe_b80ff99f","updated":"2026-01-19 14:11:45.000000000","message":"t_client TCP tests fail across many platforms with this change","commit_id":"6d251f14704b3ba6d62f79794f2ad8ccbc310499"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"2dd8ecfd542c73a9de5383783dbef68c0b03a0b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"01e49ade_170574c5","updated":"2026-01-22 12:05:06.000000000","message":"You didn\u0027t fix the comments in the commit message.","commit_id":"7fb0a3c9eabbf9b7746eab932356518d60be3b63"}],"src/openvpn/socket.c":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"e63e33821e1e8760618774f7b73feca3b810e38d","unresolved":true,"context_lines":[{"line_number":2064,"context_line":" */"},{"line_number":2065,"context_line":""},{"line_number":2066,"context_line":"/**"},{"line_number":2067,"context_line":" * resets the stream buffer to be setup for the next round of"},{"line_number":2068,"context_line":" * reassembling a packet"},{"line_number":2069,"context_line":" *"},{"line_number":2070,"context_line":" * But still leaves the current packet in sb-\u003ebuf to be potentially"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"487937f5_d30dfd28","line":2067,"updated":"2026-01-21 12:14:08.000000000","message":"\"set up\"","commit_id":"ca0fbcfa480c9907ffa15821fe63c7745144c6e8"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"f2fb1bcabbe672717682d2dee0f6f8d2dbd393f8","unresolved":false,"context_lines":[{"line_number":2064,"context_line":" */"},{"line_number":2065,"context_line":""},{"line_number":2066,"context_line":"/**"},{"line_number":2067,"context_line":" * resets the stream buffer to be setup for the next round of"},{"line_number":2068,"context_line":" * reassembling a packet"},{"line_number":2069,"context_line":" *"},{"line_number":2070,"context_line":" * But still leaves the current packet in sb-\u003ebuf to be potentially"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"39240118_2bfb6057","line":2067,"in_reply_to":"487937f5_d30dfd28","updated":"2026-01-22 09:10:50.000000000","message":"Done","commit_id":"ca0fbcfa480c9907ffa15821fe63c7745144c6e8"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"62ed183c82425f42f1081e6ed048a525b2eeee06","unresolved":true,"context_lines":[{"line_number":2067,"context_line":" * resets the stream buffer to be setup for the next round of"},{"line_number":2068,"context_line":" * reassembling a packet"},{"line_number":2069,"context_line":" *"},{"line_number":2070,"context_line":" * But still leaves the current packet in sb-\u003ebuf to be potentially"},{"line_number":2071,"context_line":" * read."},{"line_number":2072,"context_line":" */"},{"line_number":2073,"context_line":"static inline void"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"ed6fb644_c5d3eb95","line":2070,"updated":"2026-01-21 12:24:46.000000000","message":"Will not report all individual occurrences but all instances of something like this could use a `\\c` or `\\p` so that this is formatted as code. Would make it easier to read I think.","commit_id":"ca0fbcfa480c9907ffa15821fe63c7745144c6e8"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"2dd8ecfd542c73a9de5383783dbef68c0b03a0b3","unresolved":false,"context_lines":[{"line_number":2067,"context_line":" * resets the stream buffer to be setup for the next round of"},{"line_number":2068,"context_line":" * reassembling a packet"},{"line_number":2069,"context_line":" *"},{"line_number":2070,"context_line":" * But still leaves the current packet in sb-\u003ebuf to be potentially"},{"line_number":2071,"context_line":" * read."},{"line_number":2072,"context_line":" */"},{"line_number":2073,"context_line":"static inline void"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"015184f8_a171efb7","line":2070,"in_reply_to":"ed6fb644_c5d3eb95","updated":"2026-01-22 12:05:06.000000000","message":"Done","commit_id":"ca0fbcfa480c9907ffa15821fe63c7745144c6e8"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"e63e33821e1e8760618774f7b73feca3b810e38d","unresolved":true,"context_lines":[{"line_number":2119,"context_line":"}"},{"line_number":2120,"context_line":""},{"line_number":2121,"context_line":"/**"},{"line_number":2122,"context_line":" * Sets the parameter buf to  the current buffer of sb-\u003ebuf."},{"line_number":2123,"context_line":" * This function assumes that caller already checked if the packet in sb-\u003ebuf"},{"line_number":2124,"context_line":" * is fully assembled."},{"line_number":2125,"context_line":" *"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"5b1e950d_159c415b","line":2122,"updated":"2026-01-21 12:14:08.000000000","message":"superfluous whitespace in the middle of the sentence","commit_id":"ca0fbcfa480c9907ffa15821fe63c7745144c6e8"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"f2fb1bcabbe672717682d2dee0f6f8d2dbd393f8","unresolved":false,"context_lines":[{"line_number":2119,"context_line":"}"},{"line_number":2120,"context_line":""},{"line_number":2121,"context_line":"/**"},{"line_number":2122,"context_line":" * Sets the parameter buf to  the current buffer of sb-\u003ebuf."},{"line_number":2123,"context_line":" * This function assumes that caller already checked if the packet in sb-\u003ebuf"},{"line_number":2124,"context_line":" * is fully assembled."},{"line_number":2125,"context_line":" *"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"40e9a444_87973fac","line":2122,"in_reply_to":"5b1e950d_159c415b","updated":"2026-01-22 09:10:50.000000000","message":"Done","commit_id":"ca0fbcfa480c9907ffa15821fe63c7745144c6e8"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"e63e33821e1e8760618774f7b73feca3b810e38d","unresolved":true,"context_lines":[{"line_number":2151,"context_line":""},{"line_number":2152,"context_line":"/**"},{"line_number":2153,"context_line":" * This will determine if sb-\u003ebuf contains a full packet. It will also"},{"line_number":2154,"context_line":" * move anything in sb-\u003ebuf beyond a full beyond packet to sb-\u003eresidual"},{"line_number":2155,"context_line":" *"},{"line_number":2156,"context_line":" * If this is the first time the function is called with a valid buffer"},{"line_number":2157,"context_line":" * and port sharing is enabled the function will also determine if this"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"7ccb4681_dd24406d","line":2154,"updated":"2026-01-21 12:14:08.000000000","message":"Remove second \"beyond\"","commit_id":"ca0fbcfa480c9907ffa15821fe63c7745144c6e8"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"f2fb1bcabbe672717682d2dee0f6f8d2dbd393f8","unresolved":false,"context_lines":[{"line_number":2151,"context_line":""},{"line_number":2152,"context_line":"/**"},{"line_number":2153,"context_line":" * This will determine if sb-\u003ebuf contains a full packet. It will also"},{"line_number":2154,"context_line":" * move anything in sb-\u003ebuf beyond a full beyond packet to sb-\u003eresidual"},{"line_number":2155,"context_line":" *"},{"line_number":2156,"context_line":" * If this is the first time the function is called with a valid buffer"},{"line_number":2157,"context_line":" * and port sharing is enabled the function will also determine if this"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"a122986d_eed4a789","line":2154,"in_reply_to":"7ccb4681_dd24406d","updated":"2026-01-22 09:10:50.000000000","message":"Done","commit_id":"ca0fbcfa480c9907ffa15821fe63c7745144c6e8"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"e63e33821e1e8760618774f7b73feca3b810e38d","unresolved":true,"context_lines":[{"line_number":2157,"context_line":" * and port sharing is enabled the function will also determine if this"},{"line_number":2158,"context_line":" * is OpenVPN protocol or not and store the result in sb-\u003eport_share_state."},{"line_number":2159,"context_line":" *"},{"line_number":2160,"context_line":" * If a packet is outside of the allowed range is detected, the error state"},{"line_number":2161,"context_line":" * on sb is set."},{"line_number":2162,"context_line":" *"},{"line_number":2163,"context_line":" * @param sb the stream buffer"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"b1bcaa05_4b1c487c","line":2160,"updated":"2026-01-21 12:14:08.000000000","message":"Remove first \"is\"","commit_id":"ca0fbcfa480c9907ffa15821fe63c7745144c6e8"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"f2fb1bcabbe672717682d2dee0f6f8d2dbd393f8","unresolved":false,"context_lines":[{"line_number":2157,"context_line":" * and port sharing is enabled the function will also determine if this"},{"line_number":2158,"context_line":" * is OpenVPN protocol or not and store the result in sb-\u003eport_share_state."},{"line_number":2159,"context_line":" *"},{"line_number":2160,"context_line":" * If a packet is outside of the allowed range is detected, the error state"},{"line_number":2161,"context_line":" * on sb is set."},{"line_number":2162,"context_line":" *"},{"line_number":2163,"context_line":" * @param sb the stream buffer"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"3f3c7b97_17270177","line":2160,"in_reply_to":"b1bcaa05_4b1c487c","updated":"2026-01-22 09:10:50.000000000","message":"Done","commit_id":"ca0fbcfa480c9907ffa15821fe63c7745144c6e8"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"e63e33821e1e8760618774f7b73feca3b810e38d","unresolved":true,"context_lines":[{"line_number":2161,"context_line":" * on sb is set."},{"line_number":2162,"context_line":" *"},{"line_number":2163,"context_line":" * @param sb the stream buffer"},{"line_number":2164,"context_line":" * @param length_added The length that has been added to sb-\u003ebuf"},{"line_number":2165,"context_line":" * @return true if sb-\u003ebuf contains fully reassembled packet"},{"line_number":2166,"context_line":" */"},{"line_number":2167,"context_line":"static bool"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"73e1c3bb_381e01d3","line":2164,"updated":"2026-01-21 12:14:08.000000000","message":"Would be good to add a little more information here. I see this can be 0. Is that for the initial call? When do we call this with non-zero length_added?","commit_id":"ca0fbcfa480c9907ffa15821fe63c7745144c6e8"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"f2fb1bcabbe672717682d2dee0f6f8d2dbd393f8","unresolved":true,"context_lines":[{"line_number":2161,"context_line":" * on sb is set."},{"line_number":2162,"context_line":" *"},{"line_number":2163,"context_line":" * @param sb the stream buffer"},{"line_number":2164,"context_line":" * @param length_added The length that has been added to sb-\u003ebuf"},{"line_number":2165,"context_line":" * @return true if sb-\u003ebuf contains fully reassembled packet"},{"line_number":2166,"context_line":" */"},{"line_number":2167,"context_line":"static bool"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"ee70cc87_34f67587","line":2164,"in_reply_to":"73e1c3bb_381e01d3","updated":"2026-01-22 09:10:50.000000000","message":"Added a paragraph for that.","commit_id":"ca0fbcfa480c9907ffa15821fe63c7745144c6e8"},{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"2dd8ecfd542c73a9de5383783dbef68c0b03a0b3","unresolved":false,"context_lines":[{"line_number":2161,"context_line":" * on sb is set."},{"line_number":2162,"context_line":" *"},{"line_number":2163,"context_line":" * @param sb the stream buffer"},{"line_number":2164,"context_line":" * @param length_added The length that has been added to sb-\u003ebuf"},{"line_number":2165,"context_line":" * @return true if sb-\u003ebuf contains fully reassembled packet"},{"line_number":2166,"context_line":" */"},{"line_number":2167,"context_line":"static bool"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"e279cd9f_40cac0d3","line":2164,"in_reply_to":"ee70cc87_34f67587","updated":"2026-01-22 12:05:06.000000000","message":"Done","commit_id":"ca0fbcfa480c9907ffa15821fe63c7745144c6e8"}],"src/openvpn/socket.h":[{"author":{"_account_id":1000001,"name":"flichtenheld","display_name":"Frank Lichtenheld","email":"frank@lichtenheld.com","username":"flichtenheld","status":"OpenVPN Inc."},"change_message_id":"e63e33821e1e8760618774f7b73feca3b810e38d","unresolved":true,"context_lines":[{"line_number":549,"context_line":"/**"},{"line_number":550,"context_line":" * Will try to check if the buffers in stream form a"},{"line_number":551,"context_line":" * full packet. Will return true if further reads are"},{"line_number":552,"context_line":" * required and other false. (full packet is ready)"},{"line_number":553,"context_line":" *"},{"line_number":554,"context_line":" * With UDP we always return true as there is no reassembly."},{"line_number":555,"context_line":" *"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"c97b5e83_9e9c469d","line":552,"updated":"2026-01-21 12:14:08.000000000","message":"\"otherwise\"?","commit_id":"ca0fbcfa480c9907ffa15821fe63c7745144c6e8"},{"author":{"_account_id":1000003,"name":"plaisthos","display_name":"Arne Schwabe","email":"arne-openvpn@rfc2549.org","username":"plaisthos"},"change_message_id":"f2fb1bcabbe672717682d2dee0f6f8d2dbd393f8","unresolved":false,"context_lines":[{"line_number":549,"context_line":"/**"},{"line_number":550,"context_line":" * Will try to check if the buffers in stream form a"},{"line_number":551,"context_line":" * full packet. Will return true if further reads are"},{"line_number":552,"context_line":" * required and other false. (full packet is ready)"},{"line_number":553,"context_line":" *"},{"line_number":554,"context_line":" * With UDP we always return true as there is no reassembly."},{"line_number":555,"context_line":" *"}],"source_content_type":"text/x-csrc","patch_set":3,"id":"f7398ccd_99a35101","line":552,"in_reply_to":"c97b5e83_9e9c469d","updated":"2026-01-22 09:10:50.000000000","message":"Done","commit_id":"ca0fbcfa480c9907ffa15821fe63c7745144c6e8"}]}
