libssh2: use libssh2_session_callback_set2() with v1.11.1
To avoid a local hack to pass function pointers and to avoid
deprecation warnings when building with libssh2 v1.11.1 or newer:
```
lib/vssh/libssh2.c:3324:5: warning: 'libssh2_session_callback_set' is deprecated: since libssh2 1.11.1. Use libssh2_session_callback_set2() [-Wdeprecated-declarations]
lib/vssh/libssh2.c:3326:5: warning: 'libssh2_session_callback_set' is deprecated: since libssh2 1.11.1. Use libssh2_session_callback_set2() [-Wdeprecated-declarations]
```
Ref: https://github.com/curl/curl-for-win/actions/runs/7609484879/job/20720821100#step:3:4982
Ref: https://github.com/libssh2/libssh2/pull/1285
Ref: c0f69548be
Reviewed-by: Daniel Stenberg
Closes #12754
This commit is contained in:
parent
cdd905a985
commit
02f91d5b64
@ -3289,6 +3289,27 @@ static CURLcode ssh_connect(struct Curl_easy *data, bool *done)
|
|||||||
|
|
||||||
#ifndef CURL_DISABLE_PROXY
|
#ifndef CURL_DISABLE_PROXY
|
||||||
if(conn->http_proxy.proxytype == CURLPROXY_HTTPS) {
|
if(conn->http_proxy.proxytype == CURLPROXY_HTTPS) {
|
||||||
|
/*
|
||||||
|
Setup libssh2 callbacks to make it read/write TLS from the socket.
|
||||||
|
|
||||||
|
ssize_t
|
||||||
|
recvcb(libssh2_socket_t sock, void *buffer, size_t length,
|
||||||
|
int flags, void **abstract);
|
||||||
|
|
||||||
|
ssize_t
|
||||||
|
sendcb(libssh2_socket_t sock, const void *buffer, size_t length,
|
||||||
|
int flags, void **abstract);
|
||||||
|
|
||||||
|
*/
|
||||||
|
#if LIBSSH2_VERSION_NUM >= 0x010b01
|
||||||
|
infof(data, "Uses HTTPS proxy");
|
||||||
|
libssh2_session_callback_set2(sshc->ssh_session,
|
||||||
|
LIBSSH2_CALLBACK_RECV,
|
||||||
|
(libssh2_cb_generic *)ssh_tls_recv);
|
||||||
|
libssh2_session_callback_set2(sshc->ssh_session,
|
||||||
|
LIBSSH2_CALLBACK_SEND,
|
||||||
|
(libssh2_cb_generic *)ssh_tls_send);
|
||||||
|
#else
|
||||||
/*
|
/*
|
||||||
* This crazy union dance is here to avoid assigning a void pointer a
|
* This crazy union dance is here to avoid assigning a void pointer a
|
||||||
* function pointer as it is invalid C. The problem is of course that
|
* function pointer as it is invalid C. The problem is of course that
|
||||||
@ -3309,22 +3330,11 @@ static CURLcode ssh_connect(struct Curl_easy *data, bool *done)
|
|||||||
sshsend.sendptr = ssh_tls_send;
|
sshsend.sendptr = ssh_tls_send;
|
||||||
|
|
||||||
infof(data, "Uses HTTPS proxy");
|
infof(data, "Uses HTTPS proxy");
|
||||||
/*
|
|
||||||
Setup libssh2 callbacks to make it read/write TLS from the socket.
|
|
||||||
|
|
||||||
ssize_t
|
|
||||||
recvcb(libssh2_socket_t sock, void *buffer, size_t length,
|
|
||||||
int flags, void **abstract);
|
|
||||||
|
|
||||||
ssize_t
|
|
||||||
sendcb(libssh2_socket_t sock, const void *buffer, size_t length,
|
|
||||||
int flags, void **abstract);
|
|
||||||
|
|
||||||
*/
|
|
||||||
libssh2_session_callback_set(sshc->ssh_session,
|
libssh2_session_callback_set(sshc->ssh_session,
|
||||||
LIBSSH2_CALLBACK_RECV, sshrecv.recvp);
|
LIBSSH2_CALLBACK_RECV, sshrecv.recvp);
|
||||||
libssh2_session_callback_set(sshc->ssh_session,
|
libssh2_session_callback_set(sshc->ssh_session,
|
||||||
LIBSSH2_CALLBACK_SEND, sshsend.sendp);
|
LIBSSH2_CALLBACK_SEND, sshsend.sendp);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Store the underlying TLS recv/send function pointers to be used when
|
/* Store the underlying TLS recv/send function pointers to be used when
|
||||||
reading from the proxy */
|
reading from the proxy */
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user