diff options
author | Ben Lindstrom <mouring@eviladmin.org> | 2001-03-05 06:14:02 +0000 |
---|---|---|
committer | Ben Lindstrom <mouring@eviladmin.org> | 2001-03-05 06:14:02 +0000 |
commit | e9613cf16d72fd78bda7ece0abd7f36c0fb266b6 (patch) | |
tree | 9895e1bfa6ac5580e4a264e319e02f592c34ab83 | |
parent | ec19a40b94f8d229a283720ad72324d9eed32f86 (diff) |
- markus@cvs.openbsd.org 2001/02/28 08:45:39
[clientloop.c]
fix byte counts for ssh protocol v1
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | clientloop.c | 28 |
2 files changed, 13 insertions, 20 deletions
@@ -65,6 +65,9 @@ | |||
65 | [sftp.c] | 65 | [sftp.c] |
66 | do not kill the subprocess on termination (we will see if this helps | 66 | do not kill the subprocess on termination (we will see if this helps |
67 | things or hurts things) | 67 | things or hurts things) |
68 | - markus@cvs.openbsd.org 2001/02/28 08:45:39 | ||
69 | [clientloop.c] | ||
70 | fix byte counts for ssh protocol v1 | ||
68 | 71 | ||
69 | 20010304 | 72 | 20010304 |
70 | - (bal) Remove make-ssh-known-hosts.1 since it's no longer valid. | 73 | - (bal) Remove make-ssh-known-hosts.1 since it's no longer valid. |
@@ -4257,4 +4260,4 @@ | |||
4257 | - Wrote replacements for strlcpy and mkdtemp | 4260 | - Wrote replacements for strlcpy and mkdtemp |
4258 | - Released 1.0pre1 | 4261 | - Released 1.0pre1 |
4259 | 4262 | ||
4260 | $Id: ChangeLog,v 1.870 2001/03/05 06:12:01 mouring Exp $ | 4263 | $Id: ChangeLog,v 1.871 2001/03/05 06:14:02 mouring Exp $ |
diff --git a/clientloop.c b/clientloop.c index 547ccabfe..cdd32dbbe 100644 --- a/clientloop.c +++ b/clientloop.c | |||
@@ -59,7 +59,7 @@ | |||
59 | */ | 59 | */ |
60 | 60 | ||
61 | #include "includes.h" | 61 | #include "includes.h" |
62 | RCSID("$OpenBSD: clientloop.c,v 1.51 2001/02/13 21:51:09 markus Exp $"); | 62 | RCSID("$OpenBSD: clientloop.c,v 1.52 2001/02/28 08:45:39 markus Exp $"); |
63 | 63 | ||
64 | #include "ssh.h" | 64 | #include "ssh.h" |
65 | #include "ssh1.h" | 65 | #include "ssh1.h" |
@@ -279,10 +279,8 @@ client_check_initial_eof_on_stdin(void) | |||
279 | */ | 279 | */ |
280 | if ((u_char) buf[0] == escape_char) | 280 | if ((u_char) buf[0] == escape_char) |
281 | escape_pending = 1; | 281 | escape_pending = 1; |
282 | else { | 282 | else |
283 | buffer_append(&stdin_buffer, buf, 1); | 283 | buffer_append(&stdin_buffer, buf, 1); |
284 | stdin_bytes += 1; | ||
285 | } | ||
286 | } | 284 | } |
287 | leave_non_blocking(); | 285 | leave_non_blocking(); |
288 | } | 286 | } |
@@ -310,6 +308,7 @@ client_make_packets_from_stdin_data(void) | |||
310 | packet_put_string(buffer_ptr(&stdin_buffer), len); | 308 | packet_put_string(buffer_ptr(&stdin_buffer), len); |
311 | packet_send(); | 309 | packet_send(); |
312 | buffer_consume(&stdin_buffer, len); | 310 | buffer_consume(&stdin_buffer, len); |
311 | stdin_bytes += len; | ||
313 | /* If we have a pending EOF, send it now. */ | 312 | /* If we have a pending EOF, send it now. */ |
314 | if (stdin_eof && buffer_len(&stdin_buffer) == 0) { | 313 | if (stdin_eof && buffer_len(&stdin_buffer) == 0) { |
315 | packet_start(SSH_CMSG_EOF); | 314 | packet_start(SSH_CMSG_EOF); |
@@ -420,7 +419,6 @@ client_wait_until_can_do_something(fd_set **readsetp, fd_set **writesetp, | |||
420 | /* Note: we might still have data in the buffers. */ | 419 | /* Note: we might still have data in the buffers. */ |
421 | snprintf(buf, sizeof buf, "select: %s\r\n", strerror(errno)); | 420 | snprintf(buf, sizeof buf, "select: %s\r\n", strerror(errno)); |
422 | buffer_append(&stderr_buffer, buf, strlen(buf)); | 421 | buffer_append(&stderr_buffer, buf, strlen(buf)); |
423 | stderr_bytes += strlen(buf); | ||
424 | quit_pending = 1; | 422 | quit_pending = 1; |
425 | } | 423 | } |
426 | } | 424 | } |
@@ -486,7 +484,6 @@ client_process_net_input(fd_set * readset) | |||
486 | snprintf(buf, sizeof buf, "Connection to %.300s closed by remote host.\r\n", | 484 | snprintf(buf, sizeof buf, "Connection to %.300s closed by remote host.\r\n", |
487 | host); | 485 | host); |
488 | buffer_append(&stderr_buffer, buf, strlen(buf)); | 486 | buffer_append(&stderr_buffer, buf, strlen(buf)); |
489 | stderr_bytes += strlen(buf); | ||
490 | quit_pending = 1; | 487 | quit_pending = 1; |
491 | return; | 488 | return; |
492 | } | 489 | } |
@@ -502,7 +499,6 @@ client_process_net_input(fd_set * readset) | |||
502 | snprintf(buf, sizeof buf, "Read from remote host %.300s: %.100s\r\n", | 499 | snprintf(buf, sizeof buf, "Read from remote host %.300s: %.100s\r\n", |
503 | host, strerror(errno)); | 500 | host, strerror(errno)); |
504 | buffer_append(&stderr_buffer, buf, strlen(buf)); | 501 | buffer_append(&stderr_buffer, buf, strlen(buf)); |
505 | stderr_bytes += strlen(buf); | ||
506 | quit_pending = 1; | 502 | quit_pending = 1; |
507 | return; | 503 | return; |
508 | } | 504 | } |
@@ -536,7 +532,6 @@ process_escapes(Buffer *bin, Buffer *bout, Buffer *berr, char *buf, int len) | |||
536 | /* Terminate the connection. */ | 532 | /* Terminate the connection. */ |
537 | snprintf(string, sizeof string, "%c.\r\n", escape_char); | 533 | snprintf(string, sizeof string, "%c.\r\n", escape_char); |
538 | buffer_append(berr, string, strlen(string)); | 534 | buffer_append(berr, string, strlen(string)); |
539 | /*stderr_bytes += strlen(string); XXX*/ | ||
540 | 535 | ||
541 | quit_pending = 1; | 536 | quit_pending = 1; |
542 | return -1; | 537 | return -1; |
@@ -546,7 +541,6 @@ process_escapes(Buffer *bin, Buffer *bout, Buffer *berr, char *buf, int len) | |||
546 | /* Print a message to that effect to the user. */ | 541 | /* Print a message to that effect to the user. */ |
547 | snprintf(string, sizeof string, "%c^Z [suspend ssh]\r\n", escape_char); | 542 | snprintf(string, sizeof string, "%c^Z [suspend ssh]\r\n", escape_char); |
548 | buffer_append(berr, string, strlen(string)); | 543 | buffer_append(berr, string, strlen(string)); |
549 | /*stderr_bytes += strlen(string); XXX*/ | ||
550 | 544 | ||
551 | /* Restore terminal modes and suspend. */ | 545 | /* Restore terminal modes and suspend. */ |
552 | client_suspend_self(bin, bout, berr); | 546 | client_suspend_self(bin, bout, berr); |
@@ -656,7 +650,6 @@ Supported escape sequences:\r\n\ | |||
656 | void | 650 | void |
657 | client_process_input(fd_set * readset) | 651 | client_process_input(fd_set * readset) |
658 | { | 652 | { |
659 | int ret; | ||
660 | int len; | 653 | int len; |
661 | char buf[8192]; | 654 | char buf[8192]; |
662 | 655 | ||
@@ -673,7 +666,6 @@ client_process_input(fd_set * readset) | |||
673 | if (len < 0) { | 666 | if (len < 0) { |
674 | snprintf(buf, sizeof buf, "read: %.100s\r\n", strerror(errno)); | 667 | snprintf(buf, sizeof buf, "read: %.100s\r\n", strerror(errno)); |
675 | buffer_append(&stderr_buffer, buf, strlen(buf)); | 668 | buffer_append(&stderr_buffer, buf, strlen(buf)); |
676 | stderr_bytes += strlen(buf); | ||
677 | } | 669 | } |
678 | /* Mark that we have seen EOF. */ | 670 | /* Mark that we have seen EOF. */ |
679 | stdin_eof = 1; | 671 | stdin_eof = 1; |
@@ -694,16 +686,14 @@ client_process_input(fd_set * readset) | |||
694 | * Just append the data to buffer. | 686 | * Just append the data to buffer. |
695 | */ | 687 | */ |
696 | buffer_append(&stdin_buffer, buf, len); | 688 | buffer_append(&stdin_buffer, buf, len); |
697 | stdin_bytes += len; | ||
698 | } else { | 689 | } else { |
699 | /* | 690 | /* |
700 | * Normal, successful read. But we have an escape character | 691 | * Normal, successful read. But we have an escape character |
701 | * and have to process the characters one by one. | 692 | * and have to process the characters one by one. |
702 | */ | 693 | */ |
703 | ret = process_escapes(&stdin_buffer, &stdout_buffer, &stderr_buffer, buf, len); | 694 | if (process_escapes(&stdin_buffer, &stdout_buffer, |
704 | if (ret == -1) | 695 | &stderr_buffer, buf, len) == -1) |
705 | return; | 696 | return; |
706 | stdout_bytes += ret; | ||
707 | } | 697 | } |
708 | } | 698 | } |
709 | } | 699 | } |
@@ -729,13 +719,13 @@ client_process_output(fd_set * writeset) | |||
729 | */ | 719 | */ |
730 | snprintf(buf, sizeof buf, "write stdout: %.50s\r\n", strerror(errno)); | 720 | snprintf(buf, sizeof buf, "write stdout: %.50s\r\n", strerror(errno)); |
731 | buffer_append(&stderr_buffer, buf, strlen(buf)); | 721 | buffer_append(&stderr_buffer, buf, strlen(buf)); |
732 | stderr_bytes += strlen(buf); | ||
733 | quit_pending = 1; | 722 | quit_pending = 1; |
734 | return; | 723 | return; |
735 | } | 724 | } |
736 | } | 725 | } |
737 | /* Consume printed data from the buffer. */ | 726 | /* Consume printed data from the buffer. */ |
738 | buffer_consume(&stdout_buffer, len); | 727 | buffer_consume(&stdout_buffer, len); |
728 | stdout_bytes += len; | ||
739 | } | 729 | } |
740 | /* Write buffered output to stderr. */ | 730 | /* Write buffered output to stderr. */ |
741 | if (FD_ISSET(fileno(stderr), writeset)) { | 731 | if (FD_ISSET(fileno(stderr), writeset)) { |
@@ -753,6 +743,7 @@ client_process_output(fd_set * writeset) | |||
753 | } | 743 | } |
754 | /* Consume printed characters from the buffer. */ | 744 | /* Consume printed characters from the buffer. */ |
755 | buffer_consume(&stderr_buffer, len); | 745 | buffer_consume(&stderr_buffer, len); |
746 | stderr_bytes += len; | ||
756 | } | 747 | } |
757 | } | 748 | } |
758 | 749 | ||
@@ -939,7 +930,6 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id) | |||
939 | if (have_pty && options.log_level != SYSLOG_LEVEL_QUIET) { | 930 | if (have_pty && options.log_level != SYSLOG_LEVEL_QUIET) { |
940 | snprintf(buf, sizeof buf, "Connection to %.64s closed.\r\n", host); | 931 | snprintf(buf, sizeof buf, "Connection to %.64s closed.\r\n", host); |
941 | buffer_append(&stderr_buffer, buf, strlen(buf)); | 932 | buffer_append(&stderr_buffer, buf, strlen(buf)); |
942 | stderr_bytes += strlen(buf); | ||
943 | } | 933 | } |
944 | /* Output any buffered data for stdout. */ | 934 | /* Output any buffered data for stdout. */ |
945 | while (buffer_len(&stdout_buffer) > 0) { | 935 | while (buffer_len(&stdout_buffer) > 0) { |
@@ -950,6 +940,7 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id) | |||
950 | break; | 940 | break; |
951 | } | 941 | } |
952 | buffer_consume(&stdout_buffer, len); | 942 | buffer_consume(&stdout_buffer, len); |
943 | stdout_bytes += len; | ||
953 | } | 944 | } |
954 | 945 | ||
955 | /* Output any buffered data for stderr. */ | 946 | /* Output any buffered data for stderr. */ |
@@ -961,6 +952,7 @@ client_loop(int have_pty, int escape_char_arg, int ssh2_chan_id) | |||
961 | break; | 952 | break; |
962 | } | 953 | } |
963 | buffer_consume(&stderr_buffer, len); | 954 | buffer_consume(&stderr_buffer, len); |
955 | stderr_bytes += len; | ||
964 | } | 956 | } |
965 | 957 | ||
966 | if (have_pty) | 958 | if (have_pty) |
@@ -995,7 +987,6 @@ client_input_stdout_data(int type, int plen, void *ctxt) | |||
995 | char *data = packet_get_string(&data_len); | 987 | char *data = packet_get_string(&data_len); |
996 | packet_integrity_check(plen, 4 + data_len, type); | 988 | packet_integrity_check(plen, 4 + data_len, type); |
997 | buffer_append(&stdout_buffer, data, data_len); | 989 | buffer_append(&stdout_buffer, data, data_len); |
998 | stdout_bytes += data_len; | ||
999 | memset(data, 0, data_len); | 990 | memset(data, 0, data_len); |
1000 | xfree(data); | 991 | xfree(data); |
1001 | } | 992 | } |
@@ -1006,7 +997,6 @@ client_input_stderr_data(int type, int plen, void *ctxt) | |||
1006 | char *data = packet_get_string(&data_len); | 997 | char *data = packet_get_string(&data_len); |
1007 | packet_integrity_check(plen, 4 + data_len, type); | 998 | packet_integrity_check(plen, 4 + data_len, type); |
1008 | buffer_append(&stderr_buffer, data, data_len); | 999 | buffer_append(&stderr_buffer, data, data_len); |
1009 | stdout_bytes += data_len; | ||
1010 | memset(data, 0, data_len); | 1000 | memset(data, 0, data_len); |
1011 | xfree(data); | 1001 | xfree(data); |
1012 | } | 1002 | } |