diff options
Diffstat (limited to 'switchctl.c')
-rw-r--r-- | switchctl.c | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/switchctl.c b/switchctl.c index 7390e0a..37fae8b 100644 --- a/switchctl.c +++ b/switchctl.c @@ -88,7 +88,7 @@ void send_usage(int fd) send_response(fd, "Usage: "); send_response(fd, " help prints this"); - send_response(fd, " type set client type, one of: master, standby, heartbeat"); + send_response(fd, " type set client type, one of: master, standby, master_hb, standby_hb"); send_response(fd, " channel switch to channel main or music"); send_response(fd, " client type master and standby only"); send_response(fd, " mode switch to mode master or standby"); @@ -348,24 +348,30 @@ void process_cmd_type(const char* param, int fd, client_t* client_lst) if(param) { client_t* client = client_find(client_lst, fd); if(client) { - if(!strncmp(param, "master", 6)) { - client->type = MASTER; - client->gpi_listener = 1; - } - else if(!strncmp(param, "standby", 7)) { - client->type = STANDBY; - client->gpi_listener = 1; + if(client->type == DEFAULT) { + if(!strncmp(param, "master", 6)) { + client->type = MASTER; + client->gpi_listener = 1; + } + else if(!strncmp(param, "standby", 7)) { + client->type = STANDBY; + client->gpi_listener = 1; + } + else if(!strncmp(param, "master_hb", 9)) + client->type = MASTER_HB; + else if(!strncmp(param, "standby_hb", 10)) + client->type = STANDBY_HB; + else { + log_printf(DEBUG, "unkown client type '%s'", param); + send_response(fd, "EEE: type: unknown client type"); + return; + } + log_printf(DEBUG, "client %d type set to %s", fd, param); } - else if(!strncmp(param, "master_hb", 9)) - client->type = MASTER_HB; - else if(!strncmp(param, "standby_hb", 10)) - client->type = STANDBY_HB; else { - log_printf(DEBUG, "unkown client type '%s'", param); - send_response(fd, "EEE: type: unknown client type"); - return; + log_printf(ERROR, "unable to set client type for %d: type already set to %s", fd, client_type_tostring(client->type)); + send_response(fd, "EEE: type: type already set"); } - log_printf(DEBUG, "client %d type set to %s", fd, param); } else { log_printf(ERROR, "unable to set client type for %d: client not found", fd); |