{"author":"Jay Satiro","author_email":"raysatiro@yahoo.com","author_time":1754035032,"commit_time":1756275005,"committer":"Jay Satiro","committer_email":"raysatiro@yahoo.com","hash":"cd015c88198f6ebed326c0fd0a28c02b3494a618","message":"schannel: fix renegotiation\n\n- Move the schannel_recv renegotiation code to function\n  schannel_recv_renegotiate.\n\n- Save the state of a pending renegotiation.\n\n- Pre-empt schannel_recv and schannel_send to continue a pending\n  renegotation.\n\n- Partially block during renegotiation if necessary.\n\nPrior to this change, since a1850ad7 (precedes 8.13.0), schannel_recv\ndid not properly complete renegotiation before attempting to decrypt\ndata. In some cases that could cause an error SEC_E_CONTEXT_EXPIRED.\nMost of the time though DecryptMessage would succeed by chance and\nreturn SEC_I_RENEGOTIATE which allowed the renegotiation to continue.\n\nReported-by: stephannn@users.noreply.github.com\nReported-by: Dustin L. Howett\n\nFixes https://github.com/curl/curl/issues/18029\nCloses https://github.com/curl/curl/pull/18125\n","parents":["b9be9f9466665f259696bc8903a239ed8fd793a2"],"tree_hash":"24f6388eda9008aa3046fd9576319dd713e6f3a7"}