I note that 'data->state.os_errno' is not set in many places. Only some
places around send(), bind() etc. What if 'curl_easy_getinfo 
(..CURLINFO_OS_ERRNO..)'
is called to retrieve the OS-error when thing fails?

I do note the man-page says "connect failure". But things can fail before a
connect() is called. No? Like in telnet.c; shouldn't it be stored like this:

@@ -217,6 +217,7 @@
  /* should always succeed.  But, just in case... */
  if(err != 0) {
    failf(data,"WSAStartup failed (%d)",err);
+    data->state.os_errno = err;
    return CURLE_FAILED_INIT;
  }

@@ -230,6 +231,7 @@
      /* Our version isn't supported */
      failf(data,"insufficient winsock version to support "
            "telnet");
+      data->state.os_errno = WSAVERNOTSUPPORTED;
      return CURLE_FAILED_INIT;
  }

-----

An oversight or what?

Btw. there are other places where libcurl's very strict error-messages are
not very helpful. Like when I tried to build with '-DUSE_LWIPSOCK' on Win32,
(not to mention all the define-combos that can mess things up) I got the dreaded curl message "A requested feature, protocol or option was not found .." w/o knowing what I did wrong. It would be very helpful to know where and why I got it. So I ended up with a temporary hack of using:

 #define NOT_BUILT_IN() \
          printf("Returning 'CURLE_NOT_BUILT_IN' at %s(%u)\n", \
              __FILE__, __LINE__), CURLE_NOT_BUILT_IN

where 'return CURLE_NOT_BUILT_IN' is normally used.

That helped greatly. Using a debugger with a conditional break-point would
be an option, but I wish libcurl had some more verbose trace in cases
like this. Independent of 'CURLOPT_VERBOSE' which in many cases are too late or too limited.

--gv
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-library
Etiquette:  http://curl.haxx.se/mail/etiquette.html

Reply via email to