Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 11 additions & 8 deletions src/core/httprequest.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
#ifndef HTTPREQUEST_H
#define HTTPREQUEST_H

#include "cowbytearray.h"
#include "cowstring.h"
#include "cowurl.h"
#include "httpheaders.h"
#include <QHostAddress>
Expand Down Expand Up @@ -51,19 +53,20 @@ class HttpRequest {

virtual QHostAddress peerAddress() const = 0;

virtual void setConnectHost(const QString &host) = 0;
virtual void setConnectHost(const CowString &host) = 0;
virtual void setConnectPort(int port) = 0;
virtual void setIgnorePolicies(bool on) = 0;
virtual void setTrustConnectHost(bool on) = 0;
virtual void setIgnoreTlsErrors(bool on) = 0;
virtual void setTimeout(int msecs) = 0;
virtual void setClientCert(const QString &cert, const QString &key) = 0;
virtual void setClientCert(const CowString &cert, const CowString &key) = 0;

virtual void start(const QString &method, const CowUrl &uri, const HttpHeaders &headers) = 0;
virtual void beginResponse(int code, const QByteArray &reason, const HttpHeaders &headers) = 0;
virtual void start(const CowString &method, const CowUrl &uri, const HttpHeaders &headers) = 0;
virtual void beginResponse(int code, const CowByteArray &reason,
const HttpHeaders &headers) = 0;

// May call this multiple times
virtual void writeBody(const QByteArray &body) = 0;
virtual void writeBody(const CowByteArray &body) = 0;

virtual void endBody() = 0;

Expand All @@ -75,15 +78,15 @@ class HttpRequest {
virtual bool isErrored() const = 0;
virtual ErrorCondition errorCondition() const = 0;

virtual QString requestMethod() const = 0;
virtual CowString requestMethod() const = 0;
virtual CowUrl requestUri() const = 0;
virtual HttpHeaders requestHeaders() const = 0;

virtual int responseCode() const = 0;
virtual QByteArray responseReason() const = 0;
virtual CowByteArray responseReason() const = 0;
virtual HttpHeaders responseHeaders() const = 0;

virtual QByteArray readBody(int size = -1) = 0; // Takes from the buffer
virtual CowByteArray readBody(int size = -1) = 0; // Takes from the buffer

// Indicates input data and/or input finished
Signal readyRead;
Expand Down
40 changes: 20 additions & 20 deletions src/core/zhttprequest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -66,17 +66,17 @@ class ZhttpRequest::Private {
bool doReq;
QByteArray toAddress;
QHostAddress peerAddress;
QString connectHost;
CowString connectHost;
int connectPort;
bool ignorePolicies;
bool trustConnectHost;
bool ignoreTlsErrors;
int timeout;
QString clientCert;
QString clientKey;
CowString clientCert;
CowString clientKey;
bool sendBodyAfterAck;
Variant passthrough;
QString requestMethod;
CowString requestMethod;
CowUrl requestUri;
HttpHeaders requestHeaders;
BufferList requestBodyBuf;
Expand All @@ -88,7 +88,7 @@ class ZhttpRequest::Private {
bool haveRequestBody;
bool haveResponseValues;
int responseCode;
QByteArray responseReason;
CowByteArray responseReason;
HttpHeaders responseHeaders;
BufferList responseBodyBuf;
Variant userData;
Expand Down Expand Up @@ -202,10 +202,10 @@ class ZhttpRequest::Private {
if (packet.credits != -1)
outCredits = packet.credits;

requestMethod = packet.method.asQString();
requestMethod = packet.method;
requestUri = packet.uri;
requestHeaders = packet.headers;
requestBodyBuf += packet.body.asQByteArray();
requestBodyBuf += packet.body;

passthrough = packet.passthrough;

Expand Down Expand Up @@ -342,7 +342,7 @@ class ZhttpRequest::Private {
}
}

QByteArray readBody(int size) {
CowByteArray readBody(int size) {
if (server) {
QByteArray out = requestBodyBuf.take(size).asQByteArray();
if (out.isEmpty())
Expand Down Expand Up @@ -526,7 +526,7 @@ class ZhttpRequest::Private {
refreshTimeout();

if (packet.type == ZhttpRequestPacket::Data) {
requestBodyBuf += packet.body.asQByteArray();
requestBodyBuf += packet.body;

bool done = haveRequestBody;

Expand Down Expand Up @@ -664,7 +664,7 @@ class ZhttpRequest::Private {
haveResponseValues = true;

responseCode = packet.code;
responseReason = packet.reason.asQByteArray();
responseReason = packet.reason;
responseHeaders = packet.headers;

needToSendHeaders = true;
Expand All @@ -678,7 +678,7 @@ class ZhttpRequest::Private {
log_warning("zhttp client: id=%s server is sending too fast", id.data());
}

responseBodyBuf += packet.body.asQByteArray();
responseBodyBuf += packet.body;

if (packet.more) {
if (!doReq && packet.credits > 0) {
Expand Down Expand Up @@ -711,7 +711,7 @@ class ZhttpRequest::Private {
}
}

void writeBody(const QByteArray &body) {
void writeBody(const CowByteArray &body) {
assert(!bodyFinished);
assert(!pausing && !paused);

Expand Down Expand Up @@ -1051,7 +1051,7 @@ Variant ZhttpRequest::passthroughData() const { return d->passthrough; }

QHostAddress ZhttpRequest::peerAddress() const { return d->peerAddress; }

void ZhttpRequest::setConnectHost(const QString &host) { d->connectHost = host; }
void ZhttpRequest::setConnectHost(const CowString &host) { d->connectHost = host; }

void ZhttpRequest::setConnectPort(int port) { d->connectPort = port; }

Expand All @@ -1063,7 +1063,7 @@ void ZhttpRequest::setIgnoreTlsErrors(bool on) { d->ignoreTlsErrors = on; }

void ZhttpRequest::setTimeout(int msecs) { d->timeout = msecs; }

void ZhttpRequest::setClientCert(const QString &cert, const QString &key) {
void ZhttpRequest::setClientCert(const CowString &cert, const CowString &key) {
d->clientCert = cert;
d->clientKey = key;
}
Expand All @@ -1076,7 +1076,7 @@ void ZhttpRequest::setPassthroughData(const Variant &data) { d->passthrough = da

void ZhttpRequest::setQuiet(bool on) { d->quiet = on; }

void ZhttpRequest::start(const QString &method, const CowUrl &uri, const HttpHeaders &headers) {
void ZhttpRequest::start(const CowString &method, const CowUrl &uri, const HttpHeaders &headers) {
assert(!d->server);

d->requestMethod = method;
Expand All @@ -1085,7 +1085,7 @@ void ZhttpRequest::start(const QString &method, const CowUrl &uri, const HttpHea
d->startClient();
}

void ZhttpRequest::beginResponse(int code, const QByteArray &reason, const HttpHeaders &headers) {
void ZhttpRequest::beginResponse(int code, const CowByteArray &reason, const HttpHeaders &headers) {
assert(d->server);
assert(d->state == Private::ServerReceiving || d->state == Private::ServerResponseWait);

Expand All @@ -1095,7 +1095,7 @@ void ZhttpRequest::beginResponse(int code, const QByteArray &reason, const HttpH
d->beginResponse();
}

void ZhttpRequest::writeBody(const QByteArray &body) { d->writeBody(body); }
void ZhttpRequest::writeBody(const CowByteArray &body) { d->writeBody(body); }

void ZhttpRequest::endBody() { d->endBody(); }

Expand Down Expand Up @@ -1164,19 +1164,19 @@ bool ZhttpRequest::isErrored() const { return d->errored; }

HttpRequest::ErrorCondition ZhttpRequest::errorCondition() const { return d->errorCondition; }

QString ZhttpRequest::requestMethod() const { return d->requestMethod; }
CowString ZhttpRequest::requestMethod() const { return d->requestMethod; }

CowUrl ZhttpRequest::requestUri() const { return d->requestUri; }

HttpHeaders ZhttpRequest::requestHeaders() const { return d->requestHeaders; }

int ZhttpRequest::responseCode() const { return d->responseCode; }

QByteArray ZhttpRequest::responseReason() const { return d->responseReason; }
CowByteArray ZhttpRequest::responseReason() const { return d->responseReason; }

HttpHeaders ZhttpRequest::responseHeaders() const { return d->responseHeaders; }

QByteArray ZhttpRequest::readBody(int size) { return d->readBody(size); }
CowByteArray ZhttpRequest::readBody(int size) { return d->readBody(size); }

void ZhttpRequest::setupClient(ZhttpManager *manager, bool req) {
d->manager = manager;
Expand Down
22 changes: 12 additions & 10 deletions src/core/zhttprequest.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
#ifndef ZHTTPREQUEST_H
#define ZHTTPREQUEST_H

#include "cowbytearray.h"
#include "cowstring.h"
#include "cowurl.h"
#include "httprequest.h"
#include "variant.h"
Expand All @@ -46,10 +48,10 @@ class ZhttpRequest : public HttpRequest {
public:
Rid rid;
QHostAddress peerAddress;
QString requestMethod;
CowString requestMethod;
CowUrl requestUri;
HttpHeaders requestHeaders;
QByteArray requestBody;
CowByteArray requestBody;
int responseCode;
int inSeq;
int outSeq;
Expand Down Expand Up @@ -79,18 +81,18 @@ class ZhttpRequest : public HttpRequest {

virtual QHostAddress peerAddress() const;

virtual void setConnectHost(const QString &host);
virtual void setConnectHost(const CowString &host);
virtual void setConnectPort(int port);
virtual void setIgnorePolicies(bool on);
virtual void setTrustConnectHost(bool on);
virtual void setIgnoreTlsErrors(bool on);
virtual void setTimeout(int msecs);
virtual void setClientCert(const QString &cert, const QString &key);
virtual void setClientCert(const CowString &cert, const CowString &key);

virtual void start(const QString &method, const CowUrl &uri, const HttpHeaders &headers);
virtual void beginResponse(int code, const QByteArray &reason, const HttpHeaders &headers);
virtual void start(const CowString &method, const CowUrl &uri, const HttpHeaders &headers);
virtual void beginResponse(int code, const CowByteArray &reason, const HttpHeaders &headers);

virtual void writeBody(const QByteArray &body);
virtual void writeBody(const CowByteArray &body);

virtual void endBody();

Expand All @@ -102,15 +104,15 @@ class ZhttpRequest : public HttpRequest {
virtual bool isErrored() const;
virtual ErrorCondition errorCondition() const;

virtual QString requestMethod() const;
virtual CowString requestMethod() const;
virtual CowUrl requestUri() const;
virtual HttpHeaders requestHeaders() const;

virtual int responseCode() const;
virtual QByteArray responseReason() const;
virtual CowByteArray responseReason() const;
virtual HttpHeaders responseHeaders() const;

virtual QByteArray readBody(int size = -1);
virtual CowByteArray readBody(int size = -1);

private:
class Private;
Expand Down
2 changes: 1 addition & 1 deletion src/handler/filter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@ class HttpFilterInner {
}
}

QByteArray body = req->readBody();
QByteArray body = req->readBody().asQByteArray();

if (mode == HttpFilter::Modify) {
if (responseSizeMax >= 0 && responseBody.size() + body.size() > responseSizeMax) {
Expand Down
2 changes: 1 addition & 1 deletion src/handler/filtertest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ class HttpFilterServer {
}

CowUrl uri = req->requestUri();
QByteArray body = req->readBody();
QByteArray body = req->readBody().asQByteArray();
bool preferInternal = req->passthroughData().toMap().value("prefer-internal").toBool();

if (uri.path() == "/filter/accept") {
Expand Down
8 changes: 4 additions & 4 deletions src/handler/httpsession.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1086,7 +1086,7 @@ class HttpSession::Private {
if (avail <= 0)
return;

QByteArray buf = outReq->readBody(avail);
QByteArray buf = outReq->readBody(avail).asQByteArray();

if (responseFilters) {
buf = responseFilters->update(buf);
Expand Down Expand Up @@ -1197,8 +1197,8 @@ class HttpSession::Private {
}
}

void logRequest(const QString &method, const CowUrl &uri, const HttpHeaders &headers, int code,
int bodySize) {
void logRequest(const CowString &method, const CowUrl &uri, const HttpHeaders &headers,
int code, int bodySize) {
LogUtil::RequestData rd;

// Only log route id if explicitly set
Expand All @@ -1218,7 +1218,7 @@ class HttpSession::Private {
LogUtil::logRequest(LOG_LEVEL_INFO, rd, logConfig);
}

void logRequestError(const QString &method, const CowUrl &uri, const HttpHeaders &headers) {
void logRequestError(const CowString &method, const CowUrl &uri, const HttpHeaders &headers) {
LogUtil::RequestData rd;

// Only log route id if explicitly set
Expand Down
6 changes: 3 additions & 3 deletions src/proxy/proxysession.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -485,7 +485,7 @@ class ProxySession::Private {
if (maxBytes == 0)
return;

QByteArray buf = inRequest->request()->readBody(maxBytes);
QByteArray buf = inRequest->request()->readBody(maxBytes).asQByteArray();
if (!buf.isEmpty()) {
log_debug("proxysession: %p input chunk: %d", q, buf.size());

Expand Down Expand Up @@ -792,7 +792,7 @@ class ProxySession::Private {
QByteArray buf;
int maxBytes = (buffering ? MAX_INITIAL_BUFFER - responseBody.size() : MAX_STREAM_BUFFER);
if (maxBytes > 0)
buf = zhttpRequest->readBody(maxBytes);
buf = zhttpRequest->readBody(maxBytes).asQByteArray();

if (!buf.isEmpty()) {
incCounter(Stats::ServerContentBytesReceived, buf.size());
Expand Down Expand Up @@ -960,7 +960,7 @@ class ProxySession::Private {
responseData.reason = zhttpRequest->responseReason();
responseData.headers = zhttpRequest->responseHeaders();

QByteArray buf = zhttpRequest->readBody(MAX_INITIAL_BUFFER);
QByteArray buf = zhttpRequest->readBody(MAX_INITIAL_BUFFER).asQByteArray();

incCounter(Stats::ServerHeaderBytesReceived,
ZhttpManager::estimateResponseHeaderBytes(responseData.code,
Expand Down
2 changes: 1 addition & 1 deletion src/proxy/requestsession.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -457,7 +457,7 @@ class RequestSession::Private {
q->inspected(idata);
}
} else if (state == ReceivingForAccept) {
QByteArray buf = zhttpRequest->readBody();
QByteArray buf = zhttpRequest->readBody().asQByteArray();
if (in.size() + buf.size() > MAX_ACCEPT_REQUEST_BODY) {
respondError(413, "Request Entity Too Large",
QString("Body must not exceed %1 bytes").arg(MAX_ACCEPT_REQUEST_BODY));
Expand Down
2 changes: 1 addition & 1 deletion src/proxy/sockjsmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@ class SockJsManager::Private {
}

void handleRequest(Session *s) {
QString method = s->req->requestMethod();
CowString method = s->req->requestMethod();
log_debug("sockjs request: path=[%s], asUri=[%s]", s->path.data(),
s->asUri.toEncoded().data());

Expand Down
Loading
Loading