diff options
author | Stefan Eissing <stefan@eissing.org> | 2023-01-03 13:13:37 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2023-01-03 17:33:29 +0100 |
commit | 6a8d7ef9818d5f5c9bbd9bcf4ce09feaa04a1556 (patch) | |
tree | 91ef71e554b532ce00c38d27f1c31a9c8333d933 /lib/krb5.c | |
parent | 436d63fbb18db9c91e816b27a3b9316cd7310471 (diff) | |
download | curl-6a8d7ef9818d5f5c9bbd9bcf4ce09feaa04a1556.tar.gz |
cf-socket: keep sockaddr local in the socket filters
- copy `struct Curl_addrinfo` on filter setup into context
- remove `struct Curl_addrinfoi *` with `struct Curl_sockaddr_ex *` in
connectdata that is set and NULLed by the socket filter
- this means we have no reference to the resolver info in connectdata or
its filters
- trigger the CF_CTRL_CONN_INFO_UPDATE event when the complete filter
chain reaches connected status
- update easy handle connection information on CF_CTRL_DATA_SETUP event.
Closes #10213
Diffstat (limited to 'lib/krb5.c')
-rw-r--r-- | lib/krb5.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/krb5.c b/lib/krb5.c index c65235c5b..82ab844b8 100644 --- a/lib/krb5.c +++ b/lib/krb5.c @@ -46,6 +46,7 @@ #endif #include "urldata.h" +#include "cf-socket.h" #include "curl_base64.h" #include "ftp.h" #include "curl_gssapi.h" @@ -207,8 +208,8 @@ krb5_auth(void *app_data, struct Curl_easy *data, struct connectdata *conn) gss_ctx_id_t *context = app_data; struct gss_channel_bindings_struct chan; size_t base64_sz = 0; - struct sockaddr_in **remote_addr = - (struct sockaddr_in **)&conn->ip_addr->ai_addr; + struct sockaddr_in *remote_addr = + (struct sockaddr_in *)&conn->remote_addr->sa_addr; char *stringp; if(getsockname(conn->sock[FIRSTSOCKET], @@ -220,7 +221,7 @@ krb5_auth(void *app_data, struct Curl_easy *data, struct connectdata *conn) chan.initiator_address.value = &conn->local_addr.sin_addr.s_addr; chan.acceptor_addrtype = GSS_C_AF_INET; chan.acceptor_address.length = l - 4; - chan.acceptor_address.value = &(*remote_addr)->sin_addr.s_addr; + chan.acceptor_address.value = &remote_addr->sin_addr.s_addr; chan.application_data.length = 0; chan.application_data.value = NULL; |