Skip to content

Commit cd0317e

Browse files
authored
Server fix (#1431)
* Fix invalid notify check on response rather than request * return null values rather than empty bodies
1 parent d95aa8d commit cd0317e

File tree

2 files changed

+19
-16
lines changed

2 files changed

+19
-16
lines changed

include/glaze/rpc/repe/registry.hpp

+4-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,10 @@ namespace glz::repe
108108
out.header.length = sizeof(repe::header) + out.query.size() + out.body.size();
109109
}
110110
else {
111-
out.body.clear();
111+
const auto ec = write<Opts>(nullptr, out.body);
112+
if (bool(ec)) [[unlikely]] {
113+
out.header.error = true;
114+
}
112115
out.query.clear();
113116
out.header.query_length = out.query.size();
114117
out.header.body_length = out.body.size();

tests/repe_test/repe_test.cpp

+15-15
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ suite structs_of_functions = [] {
9090

9191
repe::request_json(request, {.query = "/i"}, 42);
9292
server.call(request, response);
93-
expect(response.body.empty()) << response.body;
93+
expect(response.body == "null") << response.body;
9494

9595
repe::request_json(request, {"/hello"});
9696
server.call(request, response);
@@ -113,7 +113,7 @@ suite structs_of_functions = [] {
113113

114114
repe::request_json(request, {"/my_functions/void_func"});
115115
server.call(request, response);
116-
expect(response.body.empty()) << response.body;
116+
expect(response.body == "null") << response.body;
117117

118118
repe::request_json(request, {"/my_functions/hello"});
119119
server.call(request, response);
@@ -129,7 +129,7 @@ suite structs_of_functions = [] {
129129

130130
repe::request_json(request, {"/my_string"}, "Howdy!");
131131
server.call(request, response);
132-
expect(response.body.empty());
132+
expect(response.body == "null");
133133

134134
repe::request_json(request, {"/my_string"});
135135
server.call(request, response);
@@ -173,7 +173,7 @@ suite structs_of_functions = [] {
173173

174174
repe::request_json(request, {"/name"}, "Susan");
175175
server.call(request, response);
176-
expect(response.body.empty()) << response.body;
176+
expect(response.body == "null") << response.body;
177177

178178
repe::request_json(request, {"/get_name"});
179179
server.call(request, response);
@@ -187,12 +187,12 @@ suite structs_of_functions = [] {
187187
repe::request_json(request, {"/set_name"}, "Bob");
188188
server.call(request, response);
189189
expect(obj.name == "Bob");
190-
expect(response.body.empty()) << response.body;
190+
expect(response.body == "null") << response.body;
191191

192192
repe::request_json(request, {"/custom_name"}, "Alice");
193193
server.call(request, response);
194194
expect(obj.name == "Alice");
195-
expect(response.body.empty()) << response.body;
195+
expect(response.body == "null") << response.body;
196196
};
197197
};
198198

@@ -218,7 +218,7 @@ suite structs_of_functions_beve = [] {
218218
repe::request_beve(request, {.query = "/i"}, 42);
219219
server.call(request, response);
220220
expect(!glz::beve_to_json(response.body, res));
221-
expect(res.empty()) << res;
221+
expect(res == "null") << res;
222222

223223
repe::request_beve(request, {"/hello"});
224224
server.call(request, response);
@@ -246,7 +246,7 @@ suite structs_of_functions_beve = [] {
246246

247247
std::string res{};
248248
expect(!glz::beve_to_json(response.body, res));
249-
expect(res.empty()) << res;
249+
expect(res == "null") << res;
250250

251251
repe::request_beve(request, {"/my_functions/hello"});
252252
server.call(request, response);
@@ -266,7 +266,7 @@ suite structs_of_functions_beve = [] {
266266
repe::request_beve(request, {"/my_string"}, "Howdy!");
267267
server.call(request, response);
268268
expect(!glz::beve_to_json(response.body, res));
269-
expect(res.empty());
269+
expect(res == "null");
270270

271271
repe::request_beve(request, {"/my_string"});
272272
server.call(request, response);
@@ -318,7 +318,7 @@ suite structs_of_functions_beve = [] {
318318

319319
std::string res{};
320320
expect(!glz::beve_to_json(response.body, res));
321-
expect(res.empty()) << res;
321+
expect(res == "null") << res;
322322

323323
repe::request_beve(request, {"/get_name"});
324324
server.call(request, response);
@@ -338,14 +338,14 @@ suite structs_of_functions_beve = [] {
338338

339339
expect(!glz::beve_to_json(response.body, res));
340340
expect(obj.name == "Bob");
341-
expect(res.empty()) << res;
341+
expect(res == "null") << res;
342342

343343
repe::request_beve(request, {"/custom_name"}, "Alice");
344344
server.call(request, response);
345345

346346
expect(!glz::beve_to_json(response.body, res));
347347
expect(obj.name == "Alice");
348-
expect(res.empty()) << res;
348+
expect(res == "null") << res;
349349
};
350350
};
351351

@@ -374,7 +374,7 @@ suite wrapper_tests = [] {
374374

375375
repe::request_json(request, {"/sub/my_functions/void_func"});
376376
server.call(request, response);
377-
expect(response.body.empty()) << response.body;
377+
expect(response.body == "null") << response.body;
378378

379379
repe::request_json(request, {"/sub/my_functions/hello"});
380380
server.call(request, response);
@@ -395,7 +395,7 @@ suite root_tests = [] {
395395

396396
repe::request_json(request, {"/sub/my_functions/void_func"});
397397
server.call(request, response);
398-
expect(response.body.empty()) << response.body;
398+
expect(response.body == "null") << response.body;
399399

400400
repe::request_json(request, {"/sub/my_functions/hello"});
401401
server.call(request, response);
@@ -420,7 +420,7 @@ suite wrapper_tests_beve = [] {
420420

421421
std::string res{};
422422
expect(!glz::beve_to_json(response.body, res));
423-
expect(res.empty()) << res;
423+
expect(res == "null") << res;
424424

425425
repe::request_beve(request, {"/sub/my_functions/hello"});
426426
server.call(request, response);

0 commit comments

Comments
 (0)