@ -79,7 +79,7 @@ static bool parse_by_position(struct command *cmd,
}
}
/* check for unexpected trailing params */
/* check for unexpected trailing params */
if ( tok ! = end ) {
if ( ! cmd - > allow_unused & & tok ! = end ) {
command_fail ( cmd , JSONRPC2_INVALID_PARAMS ,
command_fail ( cmd , JSONRPC2_INVALID_PARAMS ,
" too many parameters: "
" too many parameters: "
" got %u, expected %zu " ,
" got %u, expected %zu " ,
@ -117,13 +117,14 @@ static bool parse_by_name(struct command *cmd,
struct param * p = find_param ( params , buffer + first - > start ,
struct param * p = find_param ( params , buffer + first - > start ,
first - > end - first - > start ) ;
first - > end - first - > start ) ;
if ( ! p ) {
if ( ! p ) {
if ( ! cmd - > allow_unused ) {
command_fail ( cmd , JSONRPC2_INVALID_PARAMS ,
command_fail ( cmd , JSONRPC2_INVALID_PARAMS ,
" unknown parameter: '%.*s' " ,
" unknown parameter: '%.*s' " ,
first - > end - first - > start ,
first - > end - first - > start ,
buffer + first - > start ) ;
buffer + first - > start ) ;
return false ;
return false ;
}
}
} else {
if ( p - > is_set ) {
if ( p - > is_set ) {
command_fail ( cmd , JSONRPC2_INVALID_PARAMS ,
command_fail ( cmd , JSONRPC2_INVALID_PARAMS ,
" duplicate json names: '%s' " , p - > name ) ;
" duplicate json names: '%s' " , p - > name ) ;
@ -132,6 +133,7 @@ static bool parse_by_name(struct command *cmd,
if ( ! make_callback ( cmd , p , buffer , first + 1 ) )
if ( ! make_callback ( cmd , p , buffer , first + 1 ) )
return false ;
return false ;
}
first = json_next ( first + 1 ) ;
first = json_next ( first + 1 ) ;
}
}
return post_check ( cmd , params ) ;
return post_check ( cmd , params ) ;