)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"8cd2a6527c09e111e8a27a1ff6090e4e0cf714de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4fa90aea_49822300","updated":"2026-05-28 21:06:46.000000000","message":"Also this needs a unit test to exercise this new path","commit_id":"a9365a07a187633eab0a61cb8d4c61074a1aa7b1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a613049288f331a015ba51b2c9b31b1e7b9d31eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1bc39fc3_1c89b3e9","updated":"2026-06-02 20:49:12.000000000","message":"I think this needs tests as well, I dunno if ironic brought the rfb.py tests over or not. I didn\u0027t realize this existed when I wrote up a fix for this but regardless, here\u0027s my patch for the same, which leaks less detail to the client (looks the same as several other failures), keeps the protocol guarantees for the request and also covers it with tests:\n\nhttps://review.opendev.org/c/openstack/nova/+/991220","commit_id":"a9365a07a187633eab0a61cb8d4c61074a1aa7b1"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"38c64db71abc81809918b150674437faac8f46f5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c87ce6bc_1be55b26","updated":"2026-05-28 21:05:04.000000000","message":"I\u0027d like to see https://review.opendev.org/c/openstack/ironic/+/987442 pass on this first.\n\nGiven the host in this scenario is always going to be x11vnc in a container managed by ironic I don\u0027t see much risk here, but I\u0027m fine with this landing","commit_id":"a9365a07a187633eab0a61cb8d4c61074a1aa7b1"},{"author":{"_account_id":38267,"name":"Nuutti Hakala","display_name":"nuhakala","email":"nuutti.hakala@est.tech","username":"nuhakala"},"change_message_id":"849e022e0cf60177ad1bdce68fb901e656cb2a97","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"50af3623_10c61ef1","in_reply_to":"1bc39fc3_1c89b3e9","updated":"2026-06-05 08:51:19.000000000","message":"I shamelessly copied your changes here and adopted the test for Ironic. I am not too familiar with Openstack practices, so would you like that I acknowledge you in the commit message as well in some way?\n\nI also added the generated by claude opus line there, as I more or less directly copied your change which was generated.","commit_id":"a9365a07a187633eab0a61cb8d4c61074a1aa7b1"},{"author":{"_account_id":38267,"name":"Nuutti Hakala","display_name":"nuhakala","email":"nuutti.hakala@est.tech","username":"nuhakala"},"change_message_id":"76f90e93b01ad93b0e4ff6f71d356a60e6600849","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8fd0d0b9_8a75d8ac","in_reply_to":"50af3623_10c61ef1","updated":"2026-06-05 14:03:29.000000000","message":"Done","commit_id":"a9365a07a187633eab0a61cb8d4c61074a1aa7b1"},{"author":{"_account_id":38267,"name":"Nuutti Hakala","display_name":"nuhakala","email":"nuutti.hakala@est.tech","username":"nuhakala"},"change_message_id":"849e022e0cf60177ad1bdce68fb901e656cb2a97","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a46fd080_99b5d628","updated":"2026-06-05 08:51:19.000000000","message":"We have agreed with Saad that I will take this change set over.","commit_id":"a66ae419243474d6800fba3ce71940ea17326d4b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6c9117beb3cecafd58de91e81f80a7708a4310fa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"577534f6_d366b375","updated":"2026-06-05 13:54:58.000000000","message":"One nit if you have to respin, but not worth it otherwise. \"Borrowing shamelessly\" is the OpenStack way, so all good :)","commit_id":"a8b4db88065a425582861c5f4037959a25a15821"},{"author":{"_account_id":38267,"name":"Nuutti Hakala","display_name":"nuhakala","email":"nuutti.hakala@est.tech","username":"nuhakala"},"change_message_id":"c3fb5c41d36564dc8ec5a19da66ee55cac00d06d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f57bc284_9099cbf0","in_reply_to":"577534f6_d366b375","updated":"2026-06-05 14:04:55.000000000","message":"Edited it anyway there.","commit_id":"a8b4db88065a425582861c5f4037959a25a15821"}],"ironic/console/securityproxy/rfb.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a613049288f331a015ba51b2c9b31b1e7b9d31eb","unresolved":true,"context_lines":[{"line_number":140,"context_line":"                        \"Host sent unreasonably large failure \""},{"line_number":141,"context_line":"                        \"reason length: %d\""},{"line_number":142,"context_line":"                    ) % reason_len)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"            reason \u003d recv(host_sock, reason_len)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"            tenant_sock.sendall(auth.AUTH_STATUS_FAIL"}],"source_content_type":"text/x-python","patch_set":1,"id":"24285404_38998f43","line":143,"updated":"2026-06-02 20:49:12.000000000","message":"I think that it\u0027s not a good idea to expose this reason to the client. If someone is working on penetrating the cluster, they can easily control the other side of this and if the message indicates that it\u0027s working, they\u0027ll know that they\u0027re making progress. I think exposing the actual length we\u0027re complaining about is also too much information. Also, I think we should continue with the tenant socket response so that we actually provide a sane reason and length, else I think the client will just experience an unexplained connection drop instead of an actual response from the server like the protocol dictates.","commit_id":"a9365a07a187633eab0a61cb8d4c61074a1aa7b1"},{"author":{"_account_id":38267,"name":"Nuutti Hakala","display_name":"nuhakala","email":"nuutti.hakala@est.tech","username":"nuhakala"},"change_message_id":"849e022e0cf60177ad1bdce68fb901e656cb2a97","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                        \"Host sent unreasonably large failure \""},{"line_number":141,"context_line":"                        \"reason length: %d\""},{"line_number":142,"context_line":"                    ) % reason_len)"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"            reason \u003d recv(host_sock, reason_len)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"            tenant_sock.sendall(auth.AUTH_STATUS_FAIL"}],"source_content_type":"text/x-python","patch_set":1,"id":"f99e4b1f_ce324372","line":143,"in_reply_to":"24285404_38998f43","updated":"2026-06-05 08:51:19.000000000","message":"I resolved this by copying your changes, which take this into account.","commit_id":"a9365a07a187633eab0a61cb8d4c61074a1aa7b1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"6c9117beb3cecafd58de91e81f80a7708a4310fa","unresolved":true,"context_lines":[{"line_number":137,"context_line":"            if reason_len \u003c\u003d 256:"},{"line_number":138,"context_line":"                reason \u003d recv(host_sock, reason_len)"},{"line_number":139,"context_line":"            else:"},{"line_number":140,"context_line":"                # NOTE(nuhakala): If the reason is too long, we just assume a"},{"line_number":141,"context_line":"                # generic failure instead of reading up to 2^32 bytes to avoid"},{"line_number":142,"context_line":"                # a potential exhaustion attack."},{"line_number":143,"context_line":"                reason \u003d b\u0027Unable to negotiate security with server\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"22d0c5ba_f38736fd","line":140,"updated":"2026-06-05 13:54:58.000000000","message":"You probably should leave my name on the note since that\u0027s sort of the connection to \"who do we ask if we have questions later\".","commit_id":"a8b4db88065a425582861c5f4037959a25a15821"},{"author":{"_account_id":38267,"name":"Nuutti Hakala","display_name":"nuhakala","email":"nuutti.hakala@est.tech","username":"nuhakala"},"change_message_id":"76f90e93b01ad93b0e4ff6f71d356a60e6600849","unresolved":false,"context_lines":[{"line_number":137,"context_line":"            if reason_len \u003c\u003d 256:"},{"line_number":138,"context_line":"                reason \u003d recv(host_sock, reason_len)"},{"line_number":139,"context_line":"            else:"},{"line_number":140,"context_line":"                # NOTE(nuhakala): If the reason is too long, we just assume a"},{"line_number":141,"context_line":"                # generic failure instead of reading up to 2^32 bytes to avoid"},{"line_number":142,"context_line":"                # a potential exhaustion attack."},{"line_number":143,"context_line":"                reason \u003d b\u0027Unable to negotiate security with server\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3489d86a_ef5289c6","line":140,"in_reply_to":"22d0c5ba_f38736fd","updated":"2026-06-05 14:03:29.000000000","message":"Fixed","commit_id":"a8b4db88065a425582861c5f4037959a25a15821"}]}
