socket: Fix check for pending data.
BUG: https://red.libssh.org/issues/119 Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Этот коммит содержится в:
родитель
754152aa22
Коммит
04cb94a2dd
@ -208,10 +208,14 @@ enum ssh_publickey_state_e {
|
|||||||
SSH_PUBLICKEY_STATE_WRONG=2
|
SSH_PUBLICKEY_STATE_WRONG=2
|
||||||
};
|
};
|
||||||
|
|
||||||
/* status flags */
|
/* Status flags */
|
||||||
|
/** Socket is closed */
|
||||||
#define SSH_CLOSED 0x01
|
#define SSH_CLOSED 0x01
|
||||||
|
/** Reading to socket won't block */
|
||||||
#define SSH_READ_PENDING 0x02
|
#define SSH_READ_PENDING 0x02
|
||||||
|
/** Session was closed due to an error */
|
||||||
#define SSH_CLOSED_ERROR 0x04
|
#define SSH_CLOSED_ERROR 0x04
|
||||||
|
/** Output buffer not empty */
|
||||||
#define SSH_WRITE_PENDING 0x08
|
#define SSH_WRITE_PENDING 0x08
|
||||||
|
|
||||||
enum ssh_server_known_e {
|
enum ssh_server_known_e {
|
||||||
|
@ -695,11 +695,11 @@ int ssh_socket_buffered_write_bytes(ssh_socket s){
|
|||||||
int ssh_socket_get_status(ssh_socket s) {
|
int ssh_socket_get_status(ssh_socket s) {
|
||||||
int r = 0;
|
int r = 0;
|
||||||
|
|
||||||
if (s->read_wontblock) {
|
if (buffer_get_len(s->in_buffer) > 0) {
|
||||||
r |= SSH_READ_PENDING;
|
r |= SSH_READ_PENDING;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s->write_wontblock) {
|
if (buffer_get_len(s->out_buffer) > 0) {
|
||||||
r |= SSH_WRITE_PENDING;
|
r |= SSH_WRITE_PENDING;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user