From b2946352f1d6925d2a46a103283c8cee80e39327 Mon Sep 17 00:00:00 2001 From: c9s Date: Tue, 3 Jun 2014 23:50:02 +0800 Subject: [PATCH] Add r3_tree_insert_routel_ex for error message --- include/r3.h | 4 ++++ src/node.c | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/include/r3.h b/include/r3.h index 8a18569..66f2207 100644 --- a/include/r3.h +++ b/include/r3.h @@ -128,6 +128,10 @@ node * r3_tree_insert_pathl(node *tree, const char *path, int path_len, void * d route * r3_tree_insert_routel(node *tree, int method, const char *path, int path_len, void *data); +route * r3_tree_insert_routel_ex(node *tree, int method, const char *path, int path_len, void *data, const char **errstr); + +#define r3_tree_insert_routel(n, method, path, path_len, data) r3_tree_insert_routel_ex(n, method, path, path_len, data, NULL) + #define r3_tree_insert_path(n,p,d) r3_tree_insert_pathl_ex(n,p,strlen(p), NULL, d, NULL) #define r3_tree_insert_route(n,method,path,data) r3_tree_insert_routel(n, method, path, strlen(path), data) diff --git a/src/node.c b/src/node.c index 0bc089f..259ce29 100644 --- a/src/node.c +++ b/src/node.c @@ -468,11 +468,21 @@ route * r3_route_createl(const char * path, int path_len) { } -route * r3_tree_insert_routel(node *tree, int method, const char *path, int path_len, void *data) { +/** + * Helper function for creating routes from request URI path and request method + * + * method (int): METHOD_GET, METHOD_POST, METHOD_PUT, METHOD_DELETE ... + */ +route * r3_tree_insert_routel_ex(node *tree, int method, const char *path, int path_len, void *data, const char **errstr) { route *r = r3_route_createl(path, path_len); CHECK_PTR(r); r->request_method = method; // ALLOW GET OR POST METHOD - r3_tree_insert_pathl_ex(tree, path, path_len, r, data, NULL); + node * ret = r3_tree_insert_pathl_ex(tree, path, path_len, r, data, errstr); + if (!ret) { + // failed insert + r3_route_free(r); + return NULL; + } return r; }