1313#include " CAjaxResourceHandler.h"
1414#undef min
1515
16- CAjaxResourceHandler::CAjaxResourceHandler (std::vector<SString>& vecGet, std::vector<SString>& vecPost, const CefString& strMime)
16+ CAjaxResourceHandler::CAjaxResourceHandler (std::vector<std::string> vecGet, std::vector<std::string> vecPost, const CefString& strMime)
1717 : m_vecGetData(std::move(vecGet)), m_vecPostData(std::move(vecPost)), m_strMime(strMime)
1818{
1919}
@@ -27,7 +27,7 @@ CAjaxResourceHandler::~CAjaxResourceHandler()
2727 m_callback = nullptr ;
2828}
2929
30- void CAjaxResourceHandler::SetResponse (const SString & data)
30+ void CAjaxResourceHandler::SetResponse (const std::string & data)
3131{
3232 // Prevent response corruption: ignore subsequent calls after data is set
3333 if (m_bHasData) [[unlikely]]
@@ -72,8 +72,10 @@ void CAjaxResourceHandler::GetResponseHeaders(CefRefPtr<CefResponse> response, i
7272
7373bool CAjaxResourceHandler::ProcessRequest ([[maybe_unused]] CefRefPtr<CefRequest> request, CefRefPtr<CefCallback> callback)
7474{
75- // Don't call Continue() here - let ReadResponse handle async flow
76- // Calling Continue() immediately would use the callback before data is ready
75+ // Store callback so SetResponse can resume once data is ready
76+ m_callback = callback;
77+
78+ // Do not call Continue() yet; SetResponse triggers it after data is prepared
7779 return true ;
7880}
7981
@@ -86,13 +88,10 @@ bool CAjaxResourceHandler::ReadResponse(void* data_out, int bytes_to_read, int&
8688 return false ;
8789 }
8890
89- // If we have no data yet, wait
91+ // If we have no data yet, wait until SetResponse provides it
9092 if (!m_bHasData)
9193 {
9294 bytes_read = 0 ;
93- // Store callback only if we don't already have one (prevent overwrite/leak)
94- if (callback && !m_callback)
95- m_callback = callback;
9695 return true ;
9796 }
9897
0 commit comments