Browse Source

dispatcher: rework attrs parameter in rpc 'add' command

Federico Cabiddu 5 years ago
parent
commit
41714a49e8
2 changed files with 7 additions and 7 deletions
  1. 0 4
      src/modules/dispatcher/dispatch.c
  2. 7 3
      src/modules/dispatcher/dispatcher.c

+ 0 - 4
src/modules/dispatcher/dispatch.c

@@ -2426,10 +2426,6 @@ int ds_add_dst(int group, str *address, int flags, str *attrs)
 	setn = _ds_list_nr;
 	setn = _ds_list_nr;
 	priority = 0;
 	priority = 0;
 
 
-	if (attrs->len == 0) {
-		attrs->s = 0;
-	}
-
 	*next_idx = (*crt_idx + 1) % 2;
 	*next_idx = (*crt_idx + 1) % 2;
 	ds_avl_destroy(&ds_lists[*next_idx]);
 	ds_avl_destroy(&ds_lists[*next_idx]);
 
 

+ 7 - 3
src/modules/dispatcher/dispatcher.c

@@ -1798,15 +1798,19 @@ static const char *dispatcher_rpc_add_doc[2] = {
  */
  */
 static void dispatcher_rpc_add(rpc_t *rpc, void *ctx)
 static void dispatcher_rpc_add(rpc_t *rpc, void *ctx)
 {
 {
-	int group, flags;
+	int group, flags, nparams;
 	str dest;
 	str dest;
-  str attrs;
+	str attrs;
 
 
 	flags = 0;
 	flags = 0;
 
 
-	if(rpc->scan(ctx, "dS*d", &group, &dest, &flags, &attrs) < 3) {
+	nparams = rpc->scan(ctx, "dS*dS", &group, &dest, &flags, &attrs);
+	if(nparams < 2) {
 		rpc->fault(ctx, 500, "Invalid Parameters");
 		rpc->fault(ctx, 500, "Invalid Parameters");
 		return;
 		return;
+	} else if (nparams < 3) {
+		attrs.s = 0;
+		attrs.len = 0;
 	}
 	}
 
 
 	if(ds_add_dst(group, &dest, flags, &attrs) != 0) {
 	if(ds_add_dst(group, &dest, flags, &attrs) != 0) {