summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsiddharth <s@ricketyspace.net>2020-04-16 21:21:47 -0400
committerrsiddharth <s@ricketyspace.net>2020-04-17 20:56:37 -0400
commit6ada988a2f0877094e6749ca43878a86bf9a4ffb (patch)
tree0a47d3ecc76ab9dd620b09672211f4bbed7f635f
parent6dac5422ab8b390b8e4d6ecf0313c9c9f448f54a (diff)
nserver: Update sslist.
* nserver/src/protocol.c (sslist): Don't bomb whent tst is null; just return "EMPTY". Also bcstrfree the c string return by bstr2cstr.
-rw-r--r--nserver/src/protocol.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/nserver/src/protocol.c b/nserver/src/protocol.c
index 4c7b94f..d5a520b 100644
--- a/nserver/src/protocol.c
+++ b/nserver/src/protocol.c
@@ -192,7 +192,16 @@ void traverse_tree(void *value, void *data)
char *sslist()
{
- check(tst != NULL, "tstree not initialized");
+ char *list = NULL, *tmp = NULL;
+
+ if (tst == NULL) {
+ list = (char *) calloc(7 + 1, sizeof(char));
+ check_mem(list);
+
+ list = strncpy(list, "EMPTY\n\r", 7);
+
+ return list;
+ }
// 1. Create "accumulator" string.
bstring ks_str = bfromcstr("");
@@ -201,9 +210,23 @@ char *sslist()
// 2. Accumulate keys into "accumulator" string.
TSTree_traverse(tst, traverse_tree, ks_str);
+ // 3. Make result.
+ tmp = bstr2cstr(ks_str, ' ');
+
+ list = (char *) calloc(strlen(tmp) + 1, sizeof(char));
+ check_mem(list);
+
+ list = strncpy(list, tmp, strlen(tmp));
+
+ // 4. Clean up.
+ bcstrfree(tmp);
+
// 3. Return result.
- return bstr2cstr(ks_str, ' ');
+ return list;
error:
+ if (tmp) {
+ bcstrfree(tmp);
+ }
return NULL;
}