diff --git a/accel-pptpd/cli/cli.c b/accel-pptpd/cli/cli.c index 048809c13bc8208cff3adfbd9c8576f233587320..ef168ded2eac25aa8fcad0ac7e69a63dde6f1131 100644 --- a/accel-pptpd/cli/cli.c +++ b/accel-pptpd/cli/cli.c @@ -181,7 +181,7 @@ int cli_process_cmd(struct cli_client_t *cln) case CLI_CMD_EXIT: cln->disconnect(cln); case CLI_CMD_FAILED: - return -1; + return 0; case CLI_CMD_SYNTAX: cli_send(cln, MSG_SYNTAX_ERROR); return 0; @@ -206,7 +206,7 @@ static void load_config(void) _free(conf_cli_passwd); opt = conf_get_opt("cli", "password"); if (opt) - conf_cli_passwd = _strdup(conf_cli_passwd); + conf_cli_passwd = _strdup(opt); else conf_cli_passwd = NULL; diff --git a/accel-pptpd/cli/tcp.c b/accel-pptpd/cli/tcp.c index a2f9e079aa4575dbd0c4c9d41da8d7eab294561f..260225f1c615941dc5185db47c1b5ee6c093b7f5 100644 --- a/accel-pptpd/cli/tcp.c +++ b/accel-pptpd/cli/tcp.c @@ -184,7 +184,7 @@ static int cln_read(struct triton_md_handler_t *h) drop: disconnect(cln); - return 0; + return -1; } static int cln_write(struct triton_md_handler_t *h) diff --git a/accel-pptpd/cli/telnet.c b/accel-pptpd/cli/telnet.c index 751426d5f43155fba1d3ff86ec9738e6119b344a..558af897181ed892858391c7e97022cce62ed436 100644 --- a/accel-pptpd/cli/telnet.c +++ b/accel-pptpd/cli/telnet.c @@ -286,7 +286,7 @@ static int telnet_input_char(struct telnet_client_t *cln, uint8_t c) if (strcmp((char *)cln->cmdline, conf_cli_passwd)) { if (telnet_send(cln, MSG_AUTH_FAILED, sizeof(MSG_AUTH_FAILED))) return -1; - disconnect(cln); + cln->disconnect = 1; return -1; } cln->auth = 1; @@ -473,7 +473,7 @@ static int cln_read(struct triton_md_handler_t *h) n = read(h->fd, recv_buf, RECV_BUF_SIZE); if (n == 0) { disconnect(cln); - return 0; + return -1; } if (n < 0) { if (errno != EAGAIN) @@ -484,11 +484,11 @@ static int cln_read(struct triton_md_handler_t *h) print_buf(cln->recv_buf + cln->recv_pos, n);*/ for (i = 0; i < n; i++) { if (telnet_input_char(cln, recv_buf[i])) - return -1; + break; } if (cln->disconnect) { disconnect(cln); - return 0; + return -1; } }