mirror of https://github.com/OpenTTD/OpenTTD
Codechange: [Network] Simplify constructing the HTTP request with fmt
parent
53b4786037
commit
49dcf0c772
|
@ -32,7 +32,7 @@ static std::vector<NetworkHTTPSocketHandler *> _http_connections;
|
||||||
* @param depth the depth (redirect recursion) of the queries
|
* @param depth the depth (redirect recursion) of the queries
|
||||||
*/
|
*/
|
||||||
NetworkHTTPSocketHandler::NetworkHTTPSocketHandler(SOCKET s,
|
NetworkHTTPSocketHandler::NetworkHTTPSocketHandler(SOCKET s,
|
||||||
HTTPCallback *callback, const char *host, const char *url,
|
HTTPCallback *callback, const std::string &host, const char *url,
|
||||||
const char *data, int depth) :
|
const char *data, int depth) :
|
||||||
NetworkSocketHandler(),
|
NetworkSocketHandler(),
|
||||||
recv_pos(0),
|
recv_pos(0),
|
||||||
|
@ -42,19 +42,16 @@ NetworkHTTPSocketHandler::NetworkHTTPSocketHandler(SOCKET s,
|
||||||
redirect_depth(depth),
|
redirect_depth(depth),
|
||||||
sock(s)
|
sock(s)
|
||||||
{
|
{
|
||||||
size_t bufferSize = strlen(url) + strlen(host) + strlen(GetNetworkRevisionString()) + (data == nullptr ? 0 : strlen(data)) + 128;
|
|
||||||
char *buffer = AllocaM(char, bufferSize);
|
|
||||||
|
|
||||||
Debug(net, 5, "[tcp/http] Requesting {}{}", host, url);
|
Debug(net, 5, "[tcp/http] Requesting {}{}", host, url);
|
||||||
|
std::string request;
|
||||||
if (data != nullptr) {
|
if (data != nullptr) {
|
||||||
seprintf(buffer, buffer + bufferSize - 1, "POST %s HTTP/1.0\r\nHost: %s\r\nUser-Agent: OpenTTD/%s\r\nContent-Type: text/plain\r\nContent-Length: %d\r\n\r\n%s\r\n", url, host, GetNetworkRevisionString(), (int)strlen(data), data);
|
request = fmt::format("POST {} HTTP/1.0\r\nHost: {}\r\nUser-Agent: OpenTTD/{}\r\nContent-Type: text/plain\r\nContent-Length: {}\r\n\r\n{}\r\n", url, host, GetNetworkRevisionString(), strlen(data), data);
|
||||||
} else {
|
} else {
|
||||||
seprintf(buffer, buffer + bufferSize - 1, "GET %s HTTP/1.0\r\nHost: %s\r\nUser-Agent: OpenTTD/%s\r\n\r\n", url, host, GetNetworkRevisionString());
|
request = fmt::format("GET {} HTTP/1.0\r\nHost: {}\r\nUser-Agent: OpenTTD/{}\r\n\r\n", url, host, GetNetworkRevisionString());
|
||||||
}
|
}
|
||||||
|
|
||||||
ssize_t size = strlen(buffer);
|
ssize_t res = send(this->sock, request.data(), (int)request.size(), 0);
|
||||||
ssize_t res = send(this->sock, (const char*)buffer, size, 0);
|
if (res != (ssize_t)request.size()) {
|
||||||
if (res != size) {
|
|
||||||
/* Sending all data failed. Socket can't handle this little bit
|
/* Sending all data failed. Socket can't handle this little bit
|
||||||
* of information? Just fall back to the old system! */
|
* of information? Just fall back to the old system! */
|
||||||
this->callback->OnFailure();
|
this->callback->OnFailure();
|
||||||
|
|
|
@ -61,7 +61,7 @@ public:
|
||||||
void CloseSocket();
|
void CloseSocket();
|
||||||
|
|
||||||
NetworkHTTPSocketHandler(SOCKET sock, HTTPCallback *callback,
|
NetworkHTTPSocketHandler(SOCKET sock, HTTPCallback *callback,
|
||||||
const char *host, const char *url, const char *data, int depth);
|
const std::string &host, const char *url, const char *data, int depth);
|
||||||
|
|
||||||
~NetworkHTTPSocketHandler();
|
~NetworkHTTPSocketHandler();
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ public:
|
||||||
|
|
||||||
void OnConnect(SOCKET s) override
|
void OnConnect(SOCKET s) override
|
||||||
{
|
{
|
||||||
new NetworkHTTPSocketHandler(s, this->callback, this->hostname.c_str(), this->url, this->data, this->depth);
|
new NetworkHTTPSocketHandler(s, this->callback, this->hostname, this->url, this->data, this->depth);
|
||||||
/* We've relinquished control of data now. */
|
/* We've relinquished control of data now. */
|
||||||
this->data = nullptr;
|
this->data = nullptr;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue