mirror of
https://github.com/cesanta/mongoose.git
synced 2024-11-24 02:59:01 +08:00
Allow NULL head in struct mg_rpc
This commit is contained in:
parent
2bf25a1406
commit
fee6de6a7f
@ -3580,7 +3580,7 @@ void mg_rpc_process(struct mg_rpc_req *r) {
|
||||
int len, off = mg_json_get(r->frame, "$.method", &len);
|
||||
if (off > 0 && r->frame.ptr[off] == '"') {
|
||||
struct mg_str m = mg_str_n(&r->frame.ptr[off + 1], (size_t) len - 2);
|
||||
struct mg_rpc *h = *(struct mg_rpc **) r->head;
|
||||
struct mg_rpc *h = r->head == NULL ? NULL : *r->head;
|
||||
while (h != NULL && !mg_match(m, h->method, NULL)) h = h->next;
|
||||
if (h != NULL) {
|
||||
r->rpc = h;
|
||||
|
@ -24,7 +24,7 @@ void mg_rpc_process(struct mg_rpc_req *r) {
|
||||
int len, off = mg_json_get(r->frame, "$.method", &len);
|
||||
if (off > 0 && r->frame.ptr[off] == '"') {
|
||||
struct mg_str m = mg_str_n(&r->frame.ptr[off + 1], (size_t) len - 2);
|
||||
struct mg_rpc *h = *(struct mg_rpc **) r->head;
|
||||
struct mg_rpc *h = r->head == NULL ? NULL : *r->head;
|
||||
while (h != NULL && !mg_match(m, h->method, NULL)) h = h->next;
|
||||
if (h != NULL) {
|
||||
r->rpc = h;
|
||||
|
@ -2524,6 +2524,19 @@ static void test_rpc(void) {
|
||||
mg_iobuf_free(&io);
|
||||
}
|
||||
|
||||
{
|
||||
const char *resp =
|
||||
"{\"id\":true,\"error\":{\"code\":-32601,\"message\":\"foo not "
|
||||
"found\"}}";
|
||||
req.frame = mg_str("{\"id\": true,\"method\":\"foo\"}");
|
||||
req.head = NULL;
|
||||
mg_rpc_process(&req);
|
||||
// MG_INFO(("-> %s", io.buf));
|
||||
ASSERT(strcmp((char *) io.buf, resp) == 0);
|
||||
mg_iobuf_free(&io);
|
||||
req.head = &head;
|
||||
}
|
||||
|
||||
{
|
||||
const char *resp = "{\"error\":{\"code\":-32700,\"message\":\"haha\"}}";
|
||||
req.frame = mg_str("haha");
|
||||
|
Loading…
Reference in New Issue
Block a user