From: Kristján Valur Jónsson <sweskman@gmail.com>
Date: Tue, 19 Mar 2013 20:01:05 +0000 (-0700)
Subject: issue #9090 : Limit the fix to windows since getting a portable simple
X-Git-Tag: v2.7.4rc1~25
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=620e36419aafbb6d5e603bfec7fc9493c3a11b5e;p=python

issue #9090 : Limit the fix to windows since getting a portable simple
time function on non-windows isn't quite simple.
---

diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 4aa2db8f9c..76f087b715 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -751,6 +751,14 @@ internal_select(PySocketSockObject *s, int writing)
     }
     END_SELECT_LOOP(s)
 */
+#ifdef _WIN32
+/* _PyTime_floattime is exported from timemodule.c which is a builtin on windows
+ * but not on linux.  The problem we are fixing is mostly a windows problem so
+ * we leave it at that.
+ */
+#define HAVE_PYTIME_FLOATTIME
+#endif
+#ifdef HAVE_PYTIME_FLOATTIME
 PyAPI_FUNC(double) _PyTime_floattime(void); /* defined in timemodule.c */
 #define BEGIN_SELECT_LOOP(s) \
     { \
@@ -768,7 +776,18 @@ PyAPI_FUNC(double) _PyTime_floattime(void); /* defined in timemodule.c */
                 break; \
             interval = deadline - _PyTime_floattime(); \
         } \
-    } \
+    }
+#else
+#define BEGIN_SELECT_LOOP(s) \
+    { \
+        double interval = s->sock_timeout; \
+        do { \
+            errno = 0; \
+
+#define END_SELECT_LOOP(s) \
+        } while(0); \
+    }
+#endif
 
 /* Initialize a new socket object. */