2007-09-25 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / io-layer / error.c
index d3e652cf22660b198efa2de63f38bf712ac292ab..7dea6633bbec7ba1daa3b2909d2b5ae466b1286e 100644 (file)
@@ -26,6 +26,14 @@ static void error_init(void)
        g_assert (ret == 0);
 }
 
+void _wapi_error_cleanup (void)
+{
+       int ret;
+
+       ret = pthread_key_delete (error_key);
+       g_assert (ret == 0);
+}
+
 /**
  * GetLastError:
  *
@@ -70,6 +78,7 @@ errno_to_WSA (guint32 code, const gchar *function_name)
        gchar *msg;
 
        switch (code) {
+       case 0: result = ERROR_SUCCESS; break;
        case EACCES: result = WSAEACCES; break;
        case EADDRINUSE: result = WSAEADDRINUSE; break;
        case EAFNOSUPPORT: result = WSAEAFNOSUPPORT; break;
@@ -113,9 +122,12 @@ errno_to_WSA (guint32 code, const gchar *function_name)
 #endif
        /*FIXME: case EROFS: result = WSAE????; break; */
        case ESOCKTNOSUPPORT: result = WSAESOCKTNOSUPPORT; break;
-       case ETIMEDOUT: result = WSAENETDOWN; break;
+       case ETIMEDOUT: result = WSAETIMEDOUT; break;
        case EWOULDBLOCK: result = WSAEWOULDBLOCK; break;
        case EADDRNOTAVAIL: result = WSAEADDRNOTAVAIL; break;
+       /* This might happen with unix sockets */
+       case ENOENT: result = WSAECONNREFUSED; break;
+       case EDESTADDRREQ: result = WSAEDESTADDRREQ; break;
        default:
                sys_error = strerror (code);
                msg = g_locale_to_utf8 (sys_error, strlen (sys_error), NULL, NULL, NULL);