X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=command.c;h=c7d1c46791aa09f439bb553e1f8cfdf543f9b51c;hp=ab948b09b129546da1d62a515059deb013e6f50d;hb=cd0abca282ec1cd29510f4cf8fefb04aa7e20ad7;hpb=97fbaf879847d77a91faf40fb7e515df23eb9ba3 diff --git a/command.c b/command.c index ab948b09..c7d1c467 100644 --- a/command.c +++ b/command.c @@ -741,15 +741,15 @@ int handle_connect(int fd, struct sockaddr_in *addr) /* We can't use send_buffer here since buf may contain null bytes */ ret = send_bin_buffer(fd,(char *) crypt_buf, numbytes); if (ret < 0) - goto err_out; + goto net_err; /* recv decrypted number */ ret = recv_buffer(fd, buf, sizeof(buf)); if (ret < 0) - goto err_out; + goto net_err; numbytes = ret; ret = -E_AUTH; if (!numbytes) - goto err_out; + goto net_err; if (sscanf(buf, CHALLENGE_RESPONSE_MSG "%lu", &chall_response) < 1 || chall_response != challenge_nr) goto err_out; @@ -767,12 +767,14 @@ int handle_connect(int fd, struct sockaddr_in *addr) numbytes = strlen(buf); ret = send_bin_buffer(fd, buf, numbytes); if (ret < 0) - goto err_out; + goto net_err; if (use_rc4) enable_crypt(fd, rc4_recv, rc4_send, NULL); ret = read_command(fd, &command); - if (ret < 0) + if (ret == -E_COMMAND_SYNTAX) goto err_out; + if (ret < 0) + goto net_err; ret = -E_BAD_CMD; cmd = parse_cmd(command); if (!cmd) @@ -795,9 +797,9 @@ int handle_connect(int fd, struct sockaddr_in *addr) goto out; } err_out: + send_va_buffer(fd, "%s\n", PARA_STRERROR(-ret)); +net_err: PARA_NOTICE_LOG("%s\n", PARA_STRERROR(-ret)); - if (ret != -E_SEND && ret != -E_RECV) - send_va_buffer(fd, "%s\n", PARA_STRERROR(-ret)); ret = EXIT_FAILURE; out: free(command);