version 1.31.2.3, 2001/03/12 15:44:15 |
version 1.31.2.4, 2001/03/21 18:53:08 |
|
|
* called by a name other than "ssh" or "Secure Shell". |
* called by a name other than "ssh" or "Secure Shell". |
* |
* |
* SSH2 implementation, |
* SSH2 implementation, |
* Copyright (c) 2000 Markus Friedl. All rights reserved. |
* Copyright (c) 2000 Markus Friedl. All rights reserved. |
* |
* |
* Redistribution and use in source and binary forms, with or without |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* modification, are permitted provided that the following conditions |
|
|
case AUTH_CONNECTION: |
case AUTH_CONNECTION: |
if (buffer_len(&sockets[i].output) > 0 && |
if (buffer_len(&sockets[i].output) > 0 && |
FD_ISSET(sockets[i].fd, writeset)) { |
FD_ISSET(sockets[i].fd, writeset)) { |
len = write(sockets[i].fd, |
do { |
buffer_ptr(&sockets[i].output), |
len = write(sockets[i].fd, |
buffer_len(&sockets[i].output)); |
buffer_ptr(&sockets[i].output), |
|
buffer_len(&sockets[i].output)); |
|
if (len == -1 && (errno == EAGAIN || |
|
errno == EINTR)) |
|
continue; |
|
break; |
|
} while (1); |
if (len <= 0) { |
if (len <= 0) { |
shutdown(sockets[i].fd, SHUT_RDWR); |
shutdown(sockets[i].fd, SHUT_RDWR); |
close(sockets[i].fd); |
close(sockets[i].fd); |
|
|
buffer_consume(&sockets[i].output, len); |
buffer_consume(&sockets[i].output, len); |
} |
} |
if (FD_ISSET(sockets[i].fd, readset)) { |
if (FD_ISSET(sockets[i].fd, readset)) { |
len = read(sockets[i].fd, buf, sizeof(buf)); |
do { |
|
len = read(sockets[i].fd, buf, sizeof(buf)); |
|
if (len == -1 && (errno == EAGAIN || |
|
errno == EINTR)) |
|
continue; |
|
break; |
|
} while (1); |
if (len <= 0) { |
if (len <= 0) { |
shutdown(sockets[i].fd, SHUT_RDWR); |
shutdown(sockets[i].fd, SHUT_RDWR); |
close(sockets[i].fd); |
close(sockets[i].fd); |