diff --git a/include/maxscale/server.h b/include/maxscale/server.h index de46b9a4f..d56fe89ad 100644 --- a/include/maxscale/server.h +++ b/include/maxscale/server.h @@ -357,7 +357,7 @@ extern void server_set_status_nolock(SERVER *server, uint64_t bit); extern void server_clear_status_nolock(SERVER *server, uint64_t bit); extern void server_transfer_status(SERVER *dest_server, const SERVER *source_server); extern void server_add_mon_user(SERVER *server, const char *user, const char *passwd); -extern bool server_get_parameter(const SERVER *server, const char *name, char* out, size_t size); +extern size_t server_get_parameter(const SERVER *server, const char *name, char* out, size_t size); extern void server_update_credentials(SERVER *server, const char *user, const char *passwd); extern DCB* server_get_persistent(SERVER *server, const char *user, const char* ip, const char *protocol, int id); extern void server_update_address(SERVER *server, const char *address); diff --git a/server/core/server.cc b/server/core/server.cc index 1793b9234..bf26eefde 100644 --- a/server/core/server.cc +++ b/server/core/server.cc @@ -964,11 +964,11 @@ static void server_parameter_free(SERVER_PARAM *tofree) * @param out Buffer where value is stored, use NULL to check if the parameter exists * @param size Size of @c out, ignored if @c out is NULL * - * @return True if parameter was found + * @return Length of the parameter value or 0 if parameter was not found */ -bool server_get_parameter(const SERVER *server, const char *name, char* out, size_t size) +size_t server_get_parameter(const SERVER *server, const char *name, char* out, size_t size) { - bool found = false; + int len = 0; SERVER_PARAM *param = server->parameters; spinlock_acquire(&server->lock); @@ -976,18 +976,14 @@ bool server_get_parameter(const SERVER *server, const char *name, char* out, siz { if (strcmp(param->name, name) == 0 && param->active) { - if (out) - { - snprintf(out, size, "%s", param->value); - } - found = true; + len = snprintf(out, out ? size : 0, "%s", param->value); break; } param = param->next; } spinlock_release(&server->lock); - return found; + return len; } /**