]> git.mxchange.org Git - simgear.git/commitdiff
Fixes for error handling in NetChannel
authorJames Turner <zakalawe@mac.com>
Tue, 1 Mar 2016 12:34:56 +0000 (12:34 +0000)
committerJames Turner <zakalawe@mac.com>
Tue, 1 Mar 2016 12:34:56 +0000 (12:34 +0000)
- return the correct errno value instead of using -1

simgear/io/raw_socket.cxx
simgear/io/raw_socket.hxx
simgear/io/sg_netChannel.cxx

index c0c3ff22e9679dac0a34494df0d6d3aece9c5e68..1eae0c4c742f99910e0aff165fb99d18e0f8b04e 100644 (file)
@@ -684,6 +684,15 @@ bool Socket::isNonBlockingError ()
 #endif
 }
 
+int Socket::errorNumber()
+{
+#if defined(WINSOCK)
+    return WSAGetLastError();
+#else
+    return errno;
+#endif
+}
+
 
 //////////////////////////////////////////////////////////////////////
 //
index 833b75c3ba3d8d6c4d929f34eef744478ed0546e..698ca5ebd1f67b69680d64be199fcfbe026b88b6 100644 (file)
@@ -101,7 +101,8 @@ public:
   void setBroadcast ( bool broadcast ) ;
 
   static bool isNonBlockingError () ;
-  
+  static int errorNumber();
+
   static int select ( Socket** reads, Socket** writes, int timeout ) ;
 } ;
 
index 303e4ba5c9555ea69d269bb1093072b827a85a75..3fe0decfa85ca0aaa1acc1183a5e739835cc7e11 100644 (file)
@@ -114,7 +114,7 @@ NetChannel::send (const void * buffer, int size, int flags)
     write_blocked = true ;
     return 0;
   } else {
-    this->handleError (result);
+    this->handleError (errorNumber());
     close();
     return -1;
   }
@@ -134,7 +134,7 @@ NetChannel::recv (void * buffer, int size, int flags)
   } else if (isNonBlockingError ()) {
     return 0;
   } else {
-    this->handleError (result);
+    this->handleError (errorNumber());
     close();
     return -1;
   }
@@ -207,7 +207,7 @@ NetChannel::handleResolve()
         return 0;
     } else {
         // some other error condition
-        handleError (result);
+        handleError (errorNumber());
         close();
         return -1;
     }