hrev51860 adds 1 changeset to branch 'master'
old head: 823466613fe977a0dde894db7a1f496090c1c8e3
new head: b45e8b1ef93ed1d30769f08cd4db01c7a0c344f6
overview:
http://cgit.haiku-os.org/haiku/log/?qt=range&q=b45e8b1ef93e+%5E823466613fe9
----------------------------------------------------------------------------
b45e8b1ef93e: HaikuDepot : additional debugging for json-rpc invocations
[ Andrew Lindesay <apl@xxxxxxxxxxxxxx> ]
----------------------------------------------------------------------------
Revision: hrev51860
Commit: b45e8b1ef93ed1d30769f08cd4db01c7a0c344f6
URL: http://cgit.haiku-os.org/haiku/commit/?id=b45e8b1ef93e
Author: Andrew Lindesay <apl@xxxxxxxxxxxxxx>
Date: Mon Mar 19 20:42:22 2018 UTC
Committer: Adrien Destugues <pulkomandy@xxxxxxxxx>
Commit-Date: Sun Mar 25 05:44:19 2018 UTC
----------------------------------------------------------------------------
4 files changed, 64 insertions(+), 22 deletions(-)
headers/private/shared/Json.h | 2 +
src/apps/haikudepot/server/WebAppInterface.cpp | 65 ++++++++++++++++------
src/apps/haikudepot/server/WebAppInterface.h | 6 +-
src/kits/shared/Json.cpp | 13 ++++-
----------------------------------------------------------------------------
diff --git a/headers/private/shared/Json.h b/headers/private/shared/Json.h
index 73746f2177..3ec9c4dee8 100644
--- a/headers/private/shared/Json.h
+++ b/headers/private/shared/Json.h
@@ -21,6 +21,8 @@ class BJson {
public:
static status_t Parse(const char* JSON,
BMessage& message);
+ static status_t Parse(const char* JSON, size_t
length,
+
BMessage& message);
static status_t Parse(const BString& JSON,
BMessage& message);
static void Parse(BDataIO* data,
BJsonEventListener* listener);
diff --git a/src/apps/haikudepot/server/WebAppInterface.cpp
b/src/apps/haikudepot/server/WebAppInterface.cpp
index b4e7c0ec09..3d77e79517 100644
--- a/src/apps/haikudepot/server/WebAppInterface.cpp
+++ b/src/apps/haikudepot/server/WebAppInterface.cpp
@@ -559,21 +559,33 @@ WebAppInterface::AuthenticateUser(const BString& nickName,
status_t
-WebAppInterface::_SendJsonRequest(const char* domain, BString jsonString,
- uint32 flags, BMessage& reply) const
+WebAppInterface::_SendJsonRequest(const char* domain, BDataIO* requestData,
+ size_t requestDataSize, uint32 flags, BMessage& reply) const
{
- if (!ServerHelper::IsNetworkAvailable())
+ if (!ServerHelper::IsNetworkAvailable()) {
+ if (Logger::IsDebugEnabled()) {
+ printf("dropping json-rpc request to ...[%s] as network
is not "
+ "available\n", domain);
+ }
return HD_NETWORK_INACCESSIBLE;
+ }
- if (!ServerSettings::IsClientTooOld())
+ if (ServerSettings::IsClientTooOld()) {
+ if (Logger::IsDebugEnabled()) {
+ printf("dropping json-rpc request to ...[%s] as client
is too "
+ "old\n", domain);
+ }
return HD_CLIENT_TOO_OLD;
-
- if (Logger::IsTraceEnabled())
- printf("_SendJsonRequest(%s)\n", jsonString.String());
+ }
BUrl url = ServerSettings::CreateFullUrl(BString("/__api/v1/") <<
domain);
bool isSecure = url.Protocol() == "https";
+ if (Logger::IsDebugEnabled()) {
+ printf("will make json-rpc request to [%s]\n",
+ url.UrlString().String());
+ }
+
ProtocolListener listener(Logger::IsTraceEnabled());
BUrlContext context;
@@ -595,10 +607,7 @@ WebAppInterface::_SendJsonRequest(const char* domain,
BString jsonString,
context.AddAuthentication(url, authentication);
}
- BMemoryIO* data = new BMemoryIO(
- jsonString.String(), jsonString.Length() - 1);
-
- request.AdoptInputData(data, jsonString.Length() - 1);
+ request.AdoptInputData(requestData, requestDataSize);
BMallocIO replyData;
listener.SetDownloadIO(&replyData);
@@ -611,6 +620,11 @@ WebAppInterface::_SendJsonRequest(const char* domain,
BString jsonString,
int32 statusCode = result.StatusCode();
+ if (Logger::IsDebugEnabled()) {
+ printf("did receive json-rpc response http status [%" B_PRId32
"] "
+ "from [%s]\n", statusCode, url.UrlString().String());
+ }
+
switch (statusCode) {
case B_HTTP_STATUS_OK:
break;
@@ -625,14 +639,29 @@ WebAppInterface::_SendJsonRequest(const char* domain,
BString jsonString,
return B_ERROR;
}
- jsonString.SetTo(static_cast<const char*>(replyData.Buffer()),
- replyData.BufferLength());
- if (jsonString.Length() == 0)
- return B_ERROR;
-
- status_t status = BJson::Parse(jsonString, reply);
+ status_t status = BJson::Parse(
+ static_cast<const char *>(replyData.Buffer()),
replyData.BufferLength(),
+ reply);
if (Logger::IsTraceEnabled() && status == B_BAD_DATA) {
- printf("Parser choked on JSON:\n%s\n", jsonString.String());
+ BString resultString(static_cast<const char
*>(replyData.Buffer()),
+ replyData.BufferLength());
+ printf("Parser choked on JSON:\n%s\n", resultString.String());
}
return status;
}
+
+
+status_t
+WebAppInterface::_SendJsonRequest(const char* domain, BString jsonString,
+ uint32 flags, BMessage& reply) const
+{
+ if (Logger::IsTraceEnabled())
+ printf("_SendJsonRequest(%s)\n", jsonString.String());
+
+ BMemoryIO* data = new BMemoryIO(
+ jsonString.String(), jsonString.Length() - 1);
+
+ return _SendJsonRequest(domain, data, jsonString.Length() - 1, flags,
+ reply);
+}
+
diff --git a/src/apps/haikudepot/server/WebAppInterface.h
b/src/apps/haikudepot/server/WebAppInterface.h
index 62b46b3f40..09690a78db 100644
--- a/src/apps/haikudepot/server/WebAppInterface.h
+++ b/src/apps/haikudepot/server/WebAppInterface.h
@@ -96,7 +96,11 @@ private:
status_t _SendJsonRequest(const
char* domain,
BString
jsonString, uint32 flags,
BMessage& reply) const;
-
+ status_t _SendJsonRequest(const
char* domain,
+
BDataIO* requestData,
+ size_t
requestDataSize, uint32 flags,
+
BMessage& reply) const;
+
private:
BString fUsername;
BString fPassword;
diff --git a/src/kits/shared/Json.cpp b/src/kits/shared/Json.cpp
index 9e34d234da..14c4bcf950 100644
--- a/src/kits/shared/Json.cpp
+++ b/src/kits/shared/Json.cpp
@@ -126,9 +126,9 @@ BJson::Parse(const BString& JSON, BMessage& message)
status_t
-BJson::Parse(const char* JSON, BMessage& message)
+BJson::Parse(const char* JSON, size_t length, BMessage& message)
{
- BMemoryIO* input = new BMemoryIO(JSON, strlen(JSON));
+ BMemoryIO* input = new BMemoryIO(JSON, length);
ObjectDeleter<BMemoryIO> inputDeleter(input);
BJsonMessageWriter* writer = new BJsonMessageWriter(message);
ObjectDeleter<BJsonMessageWriter> writerDeleter(writer);
@@ -140,6 +140,13 @@ BJson::Parse(const char* JSON, BMessage& message)
}
+status_t
+BJson::Parse(const char* JSON, BMessage& message)
+{
+ return Parse(JSON, strlen(JSON), message);
+}
+
+
/*! The data is read as a stream of JSON data. As the JSON is read, events are
raised such as;
- string
@@ -768,4 +775,4 @@ BJson::ParseNumber(JsonParseContext& jsonParseContext)
}
}
-} // namespace BPrivate
\ No newline at end of file
+} // namespace BPrivate