mirror of
https://github.com/libssh2/libssh2.git
synced 2025-11-23 01:22:37 +03:00
Custom callbacks for performing low level socket I/O
This commit is contained in:
committed by
Daniel Stenberg
parent
462996b064
commit
7aa4bfc671
@@ -115,7 +115,7 @@ banner_receive(LIBSSH2_SESSION * session)
|
||||
/* no incoming block yet! */
|
||||
session->socket_block_directions &= ~LIBSSH2_SESSION_BLOCK_INBOUND;
|
||||
|
||||
ret = _libssh2_recv(session->socket_fd, &c, 1,
|
||||
ret = LIBSSH2_RECV(session, &c, 1,
|
||||
LIBSSH2_SOCKET_RECV_FLAGS(session));
|
||||
if (ret < 0) {
|
||||
if(session->api_block_mode || (ret != -EAGAIN))
|
||||
@@ -227,7 +227,7 @@ banner_send(LIBSSH2_SESSION * session)
|
||||
/* no outgoing block yet! */
|
||||
session->socket_block_directions &= ~LIBSSH2_SESSION_BLOCK_OUTBOUND;
|
||||
|
||||
ret = _libssh2_send(session->socket_fd,
|
||||
ret = LIBSSH2_SEND(session,
|
||||
banner + session->banner_TxRx_total_send,
|
||||
banner_len - session->banner_TxRx_total_send,
|
||||
LIBSSH2_SOCKET_SEND_FLAGS(session));
|
||||
@@ -481,6 +481,8 @@ libssh2_session_init_ex(LIBSSH2_ALLOC_FUNC((*my_alloc)),
|
||||
session->alloc = local_alloc;
|
||||
session->free = local_free;
|
||||
session->realloc = local_realloc;
|
||||
session->send = _libssh2_send;
|
||||
session->recv = _libssh2_recv;
|
||||
session->abstract = abstract;
|
||||
session->api_timeout = 0; /* timeout-free API by default */
|
||||
session->api_block_mode = 1; /* blocking API by default */
|
||||
@@ -532,6 +534,15 @@ libssh2_session_callback_set(LIBSSH2_SESSION * session,
|
||||
session->x11 = callback;
|
||||
return oldcb;
|
||||
|
||||
case LIBSSH2_CALLBACK_SEND:
|
||||
oldcb = session->send;
|
||||
session->send = callback;
|
||||
return oldcb;
|
||||
|
||||
case LIBSSH2_CALLBACK_RECV:
|
||||
oldcb = session->recv;
|
||||
session->recv = callback;
|
||||
return oldcb;
|
||||
}
|
||||
_libssh2_debug(session, LIBSSH2_TRACE_TRANS, "Setting Callback %d", cbtype);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user