summaryrefslogtreecommitdiff
path: root/src/net
diff options
context:
space:
mode:
authorcuoco <cuoco@themanaworld.org>2023-05-15 12:05:49 +0200
committercuoco <cuoco@themanaworld.org>2023-05-15 12:05:49 +0200
commit3c960310317d589ec81ef4ac0aa334a495ac50fc (patch)
treecc21b4e71d3840be1ee4f569497e7fc65d06d99c /src/net
parentf35e0155e1c7a2f684a2fe5d5b98b8d2e06050bc (diff)
parent279c7ba28804960ae3b2ec0753b4c3a92d5a6ede (diff)
downloadplus-3c960310317d589ec81ef4ac0aa334a495ac50fc.tar.gz
plus-3c960310317d589ec81ef4ac0aa334a495ac50fc.tar.bz2
plus-3c960310317d589ec81ef4ac0aa334a495ac50fc.tar.xz
plus-3c960310317d589ec81ef4ac0aa334a495ac50fc.zip
Merge branch 'master' of https://git.themanaworld.org/mana/plus
Diffstat (limited to 'src/net')
-rw-r--r--src/net/download.cpp56
-rw-r--r--src/net/download.h7
-rw-r--r--src/net/ea/chatrecv.h2
-rw-r--r--src/net/ea/traderecv.h2
-rw-r--r--src/net/eathena/beingrecv.h4
-rw-r--r--src/net/tmwa/beingrecv.h4
-rw-r--r--src/net/worldinfo.h4
7 files changed, 69 insertions, 10 deletions
diff --git a/src/net/download.cpp b/src/net/download.cpp
index 521c40eb9..973302c67 100644
--- a/src/net/download.cpp
+++ b/src/net/download.cpp
@@ -70,7 +70,11 @@ Download::Download(void *const ptr,
mThread(nullptr),
mCurl(nullptr),
mHeaders(nullptr),
+#if LIBCURL_VERSION_NUM < 0x073800
mFormPost(nullptr),
+#else
+ mMime(nullptr),
+#endif // LIBCURL_VERSION_NUM < 0x073800
mError(static_cast<char*>(calloc(CURL_ERROR_SIZE + 1, 1))),
mIgnoreError(ignoreError),
mUpload(isUpload),
@@ -99,11 +103,20 @@ Download::Download(void *const ptr,
Download::~Download()
{
+#if LIBCURL_VERSION_NUM < 0x073800
if (mFormPost != nullptr)
{
curl_formfree(mFormPost);
mFormPost = nullptr;
}
+#else
+ if (mMime != nullptr)
+ {
+ curl_mime_free(mMime);
+ mMime = nullptr;
+ }
+#endif // LIBCURL_VERSION_NUM < 0x073800
+
if (mHeaders != nullptr)
{
@@ -256,7 +269,7 @@ int Download::downloadThread(void *ptr)
if (d->mUpload)
{
outFilename = d->mFileName;
- prepareForm(&d->mFormPost, outFilename);
+ prepareForm(d, outFilename);
}
else
{
@@ -297,7 +310,11 @@ int Download::downloadThread(void *ptr)
{
logger->log_r("Uploading: %s", d->mUrl.c_str());
curl_easy_setopt(d->mCurl, CURLOPT_URL, d->mUrl.c_str());
+#if LIBCURL_VERSION_NUM < 0x073800
curl_easy_setopt(d->mCurl, CURLOPT_HTTPPOST, d->mFormPost);
+#else
+ curl_easy_setopt(d->mCurl, CURLOPT_MIMEPOST, d->mMime);
+#endif // LIBCURL_VERSION_NUM < 0x073800
curl_easy_setopt(d->mCurl, CURLOPT_WRITEFUNCTION,
&Download::writeFunction);
mUploadResponse.clear();
@@ -308,6 +325,11 @@ int Download::downloadThread(void *ptr)
curl_easy_setopt(d->mCurl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(d->mCurl, CURLOPT_HTTPHEADER,
d->mHeaders);
+ // ignore SSL verificytion, windows' OpenSSL is very limited
+ if (strstr(d->mUrl.c_str(), "https://") != NULL)
+ {
+ curl_easy_setopt(d->mCurl, CURLOPT_SSL_VERIFYPEER, 0L);
+ }
if (d->mOptions.memoryWrite != 0U)
{
curl_easy_setopt(d->mCurl, CURLOPT_FAILONERROR, 1);
@@ -331,8 +353,14 @@ int Download::downloadThread(void *ptr)
curl_easy_setopt(d->mCurl, CURLOPT_ERRORBUFFER, d->mError);
curl_easy_setopt(d->mCurl, CURLOPT_URL, d->mUrl.c_str());
curl_easy_setopt(d->mCurl, CURLOPT_NOPROGRESS, 0);
+#if LIBCURL_VERSION_NUM < 0x072000
curl_easy_setopt(d->mCurl, CURLOPT_PROGRESSFUNCTION,
- &downloadProgress);
+ &downloadProgress);
+#else
+ curl_easy_setopt(d->mCurl, CURLOPT_XFERINFOFUNCTION,
+ &downloadProgress);
+
+#endif // LIBCURL_VERSION_NUM < 0x072000
curl_easy_setopt(d->mCurl, CURLOPT_PROGRESSDATA, ptr);
#if LIBCURL_VERSION_NUM >= 0x070a00
curl_easy_setopt(d->mCurl, CURLOPT_NOSIGNAL, 1);
@@ -573,12 +601,18 @@ void Download::secureCurl(CURL *const curl)
void Download::secureCurl(CURL *const curl A_UNUSED)
#endif // LIBCURL_VERSION_NUM >= 0x070f01
{
-#if LIBCURL_VERSION_NUM >= 0x071304
+#if LIBCURL_VERSION_NUM >= 0x071304 && LIBCURL_VERSION_NUM <= 0x075500
curl_easy_setopt(curl, CURLOPT_PROTOCOLS,
CURLPROTO_HTTP | CURLPROTO_HTTPS);
curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS,
CURLPROTO_HTTP | CURLPROTO_HTTPS);
-#endif // LIBCURL_VERSION_NUM >= 0x071304
+#endif // LIBCURL_VERSION_NUM >= 0x071304 && LIBCURL_VERSION_NUM <= 0x075500
+#if LIBCURL_VERSION_NUM >= 0x075500
+ curl_easy_setopt(curl, CURLOPT_PROTOCOLS_STR,
+ "http,https");
+ curl_easy_setopt(curl, CURLOPT_REDIR_PROTOCOLS_STR,
+ "http,https");
+#endif // LIBCURL_VERSION_NUM >= 0x075500
#if LIBCURL_VERSION_NUM >= 0x071500
curl_easy_setopt(curl, CURLOPT_WILDCARDMATCH, 0);
#endif // LIBCURL_VERSION_NUM >= 0x071500
@@ -617,10 +651,8 @@ void Download::addCommonFlags(CURL *const curl)
#endif // LIBCURL_VERSION_NUM >= 0x072D00
}
-void Download::prepareForm(curl_httppost **form, const std::string &fileName)
+void Download::prepareForm(Download *const d, const std::string &fileName)
{
- curl_httppost *lastPtr = nullptr;
-
std::ifstream file;
file.open(fileName.c_str(), std::ios::in);
if (!file.is_open())
@@ -633,10 +665,18 @@ void Download::prepareForm(curl_httppost **form, const std::string &fileName)
delete [] line;
- curl_formadd(form, &lastPtr,
+#if LIBCURL_VERSION_NUM < 0x073800
+ curl_httppost *lastPtr = nullptr;
+ curl_formadd(&d->mFormPost, &lastPtr,
CURLFORM_COPYNAME, "f:1",
CURLFORM_COPYCONTENTS, str.str().c_str(),
CURLFORM_END);
+#else
+ curl_mimepart *part = curl_mime_addpart(d->mMime);
+ curl_mime_init(d->mCurl);
+ curl_mime_name(part, "f:1");
+ curl_mime_data(part, str.str().c_str(), str.str().length());
+#endif
}
size_t Download::writeFunction(void *ptr,
diff --git a/src/net/download.h b/src/net/download.h
index 75dcf9b4b..c838943b7 100644
--- a/src/net/download.h
+++ b/src/net/download.h
@@ -95,8 +95,7 @@ class Download final
static size_t writeFunction(void *ptr, size_t size,
size_t nmemb, void *stream);
- static void prepareForm(curl_httppost **form,
- const std::string &fileName);
+ static void prepareForm(Download *const d, const std::string &fileName);
static unsigned long fadler32(FILE *const file) A_WARN_UNUSED;
@@ -135,7 +134,11 @@ class Download final
SDL_Thread *mThread;
CURL *mCurl;
curl_slist *mHeaders;
+#if LIBCURL_VERSION_NUM < 0x073800
curl_httppost *mFormPost;
+#else
+ curl_mime *mMime;
+#endif
char *mError;
bool mIgnoreError;
bool mUpload;
diff --git a/src/net/ea/chatrecv.h b/src/net/ea/chatrecv.h
index 5c1bf20e6..ec762bc25 100644
--- a/src/net/ea/chatrecv.h
+++ b/src/net/ea/chatrecv.h
@@ -26,6 +26,8 @@
#if defined(__GXX_EXPERIMENTAL_CXX0X__)
#if defined(__APPLE__)
#include <tr1/cstdint>
+#else // defined(__APPLE__)
+#include <cstdint>
#endif // defined(__APPLE__)
#else // defined(__GXX_EXPERIMENTAL_CXX0X__)
#include <stdint.h>
diff --git a/src/net/ea/traderecv.h b/src/net/ea/traderecv.h
index 1b5eb4693..69b96d689 100644
--- a/src/net/ea/traderecv.h
+++ b/src/net/ea/traderecv.h
@@ -26,6 +26,8 @@
#if defined(__GXX_EXPERIMENTAL_CXX0X__)
#if defined(__APPLE__)
#include <tr1/cstdint>
+#else // defined(__APPLE__)
+#include <cstdint>
#endif // defined(__APPLE__)
#else // defined(__GXX_EXPERIMENTAL_CXX0X__)
#include <stdint.h>
diff --git a/src/net/eathena/beingrecv.h b/src/net/eathena/beingrecv.h
index 16a788ab3..f9b3c01a6 100644
--- a/src/net/eathena/beingrecv.h
+++ b/src/net/eathena/beingrecv.h
@@ -32,7 +32,11 @@
#if defined(__GXX_EXPERIMENTAL_CXX0X__)
#if defined(__APPLE__)
#include <tr1/cstdint>
+#else // defined(__APPLE__)
+#include <cstdint>
#endif // defined(__APPLE__)
+#else // defined(__GXX_EXPERIMENTAL_CXX0X__)
+#include <stdint.h>
#endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
#include "localconsts.h"
diff --git a/src/net/tmwa/beingrecv.h b/src/net/tmwa/beingrecv.h
index 91059e50c..89fc75f0f 100644
--- a/src/net/tmwa/beingrecv.h
+++ b/src/net/tmwa/beingrecv.h
@@ -26,7 +26,11 @@
#if defined(__GXX_EXPERIMENTAL_CXX0X__)
#if defined(__APPLE__)
#include <tr1/cstdint>
+#else // defined(__APPLE__)
+#include <cstdint>
#endif // defined(__APPLE__)
+#else // defined(__GXX_EXPERIMENTAL_CXX0X__)
+#include <stdint.h>
#endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
#include "localconsts.h"
diff --git a/src/net/worldinfo.h b/src/net/worldinfo.h
index b9c16f0e4..03063c682 100644
--- a/src/net/worldinfo.h
+++ b/src/net/worldinfo.h
@@ -28,7 +28,11 @@
#if defined(__GXX_EXPERIMENTAL_CXX0X__)
#if defined(__APPLE__)
#include <tr1/cstdint>
+#else // defined(__APPLE__)
+#include <cstdint>
#endif // defined(__APPLE__)
+#else // defined(__GXX_EXPERIMENTAL_CXX0X__)
+#include <stdint.h>
#endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
#include <string>