Added a seek method to LLCore::Http for data rewind.
A couple of minor changes to merchant out box in hopes that the would fix the issues.meow-7.2.2
parent
d0d58c41b4
commit
daf4d167b6
|
|
@ -515,6 +515,10 @@ HttpStatus HttpOpRequest::prepareRequest(HttpService * service)
|
|||
check_curl_easy_code(code, CURLOPT_READFUNCTION);
|
||||
code = curl_easy_setopt(mCurlHandle, CURLOPT_READDATA, this);
|
||||
check_curl_easy_code(code, CURLOPT_READDATA);
|
||||
code = curl_easy_setopt(mCurlHandle, CURLOPT_SEEKFUNCTION, seekCallback);
|
||||
check_curl_easy_code(code, CURLOPT_SEEKFUNCTION);
|
||||
code = curl_easy_setopt(mCurlHandle, CURLOPT_SEEKDATA, this);
|
||||
check_curl_easy_code(code, CURLOPT_SEEKDATA);
|
||||
|
||||
code = curl_easy_setopt(mCurlHandle, CURLOPT_COOKIEFILE, "");
|
||||
check_curl_easy_code(code, CURLOPT_COOKIEFILE);
|
||||
|
|
@ -819,6 +823,37 @@ size_t HttpOpRequest::readCallback(void * data, size_t size, size_t nmemb, void
|
|||
return read_size;
|
||||
}
|
||||
|
||||
|
||||
int HttpOpRequest::seekCallback(void *userdata, curl_off_t offset, int origin)
|
||||
{
|
||||
HttpOpRequest * op(static_cast<HttpOpRequest *>(userdata));
|
||||
|
||||
if (!op->mReqBody)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
size_t newPos = 0;
|
||||
if (origin == SEEK_SET)
|
||||
newPos = offset;
|
||||
else if (origin == SEEK_END)
|
||||
newPos = static_cast<curl_off_t>(op->mReqBody->size()) + offset;
|
||||
else if (origin == SEEK_CUR)
|
||||
newPos = static_cast<curl_off_t>(op->mCurlBodyPos) + offset;
|
||||
else
|
||||
return 2;
|
||||
|
||||
if ((newPos < 0) || (newPos >= op->mReqBody->size()))
|
||||
{
|
||||
LL_WARNS(LOG_CORE) << "Attempt to seek to position outside post body." << LL_ENDL;
|
||||
return 2;
|
||||
}
|
||||
|
||||
op->mCurlBodyPos = (size_t)newPos;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
size_t HttpOpRequest::headerCallback(void * data, size_t size, size_t nmemb, void * userdata)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -175,6 +175,7 @@ protected:
|
|||
//
|
||||
static size_t writeCallback(void * data, size_t size, size_t nmemb, void * userdata);
|
||||
static size_t readCallback(void * data, size_t size, size_t nmemb, void * userdata);
|
||||
static int seekCallback(void *data, curl_off_t offset, int origin);
|
||||
static size_t headerCallback(void * data, size_t size, size_t nmemb, void * userdata);
|
||||
static CURLcode curlSslCtxCallback(CURL *curl, void *ssl_ctx, void *userptr);
|
||||
static int sslCertVerifyCallback(X509_STORE_CTX *ctx, void *param);
|
||||
|
|
|
|||
|
|
@ -136,7 +136,7 @@ namespace LLMarketplaceImport
|
|||
LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions);
|
||||
|
||||
httpOpts->setWantHeaders(true);
|
||||
httpOpts->setFollowRedirects(false);
|
||||
httpOpts->setFollowRedirects(true);
|
||||
|
||||
httpHeaders->append(HTTP_OUT_HEADER_ACCEPT, "*/*");
|
||||
httpHeaders->append(HTTP_OUT_HEADER_CONNECTION, "Keep-Alive");
|
||||
|
|
@ -241,13 +241,13 @@ namespace LLMarketplaceImport
|
|||
{
|
||||
LLCore::HttpRequest::policy_t httpPolicy(LLCore::HttpRequest::DEFAULT_POLICY_ID);
|
||||
LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t
|
||||
httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("marketplacePostCoro", httpPolicy));
|
||||
httpAdapter(new LLCoreHttpUtil::HttpCoroutineAdapter("marketplaceGetCoro", httpPolicy));
|
||||
LLCore::HttpRequest::ptr_t httpRequest(new LLCore::HttpRequest);
|
||||
LLCore::HttpHeaders::ptr_t httpHeaders;
|
||||
LLCore::HttpOptions::ptr_t httpOpts(new LLCore::HttpOptions);
|
||||
|
||||
httpOpts->setWantHeaders(true);
|
||||
httpOpts->setFollowRedirects(false);
|
||||
httpOpts->setFollowRedirects(!sMarketplaceCookie.empty());
|
||||
|
||||
if (buildHeaders)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue