From 0dbc4eb06eeddd37265368d050c1e05197631785 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Thu, 18 Jul 2024 12:52:31 +0300 Subject: [PATCH] lib: add failure reason on bind errors Closes #14221 --- lib/cf-socket.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/cf-socket.c b/lib/cf-socket.c index 5040bb6bc3..2e92db29d3 100644 --- a/lib/cf-socket.c +++ b/lib/cf-socket.c @@ -634,7 +634,10 @@ static CURLcode bindlocal(struct Curl_easy *data, struct connectdata *conn, case IF2IP_NOT_FOUND: if(iface_input && !host_input) { /* Do not fall back to treating it as a hostname */ - failf(data, "Couldn't bind to interface '%s'", iface); + char buffer[STRERROR_LEN]; + data->state.os_errno = error = SOCKERRNO; + failf(data, "Couldn't bind to interface '%s' with errno %d: %s", + iface, error, Curl_strerror(error, buffer, sizeof(buffer))); return CURLE_INTERFACE_FAILED; } break; @@ -740,8 +743,11 @@ static CURLcode bindlocal(struct Curl_easy *data, struct connectdata *conn, /* errorbuf is set false so failf will overwrite any message already in the error buffer, so the user receives this error message instead of a generic resolve error. */ + char buffer[STRERROR_LEN]; data->state.errorbuf = FALSE; - failf(data, "Couldn't bind to '%s'", host); + data->state.os_errno = error = SOCKERRNO; + failf(data, "Couldn't bind to '%s' with errno %d: %s", + host, error, Curl_strerror(error, buffer, sizeof(buffer))); return CURLE_INTERFACE_FAILED; } } -- 2.47.3