aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libstrongswan/utils/windows.c13
-rw-r--r--src/libstrongswan/utils/windows.h5
2 files changed, 18 insertions, 0 deletions
diff --git a/src/libstrongswan/utils/windows.c b/src/libstrongswan/utils/windows.c
index a0ff6b84b..4a6a35eff 100644
--- a/src/libstrongswan/utils/windows.c
+++ b/src/libstrongswan/utils/windows.c
@@ -39,6 +39,19 @@ void windows_deinit()
/**
* See header
*/
+int usleep(useconds_t usec)
+{
+ if (usec > 0 && usec < 1000)
+ { /* do not Sleep(0) for small values */
+ usec = 1000;
+ }
+ SleepEx(usec / 1000, TRUE);
+ return 0;
+}
+
+/**
+ * See header
+ */
int socketpair(int domain, int type, int protocol, int sv[2])
{
struct sockaddr_in addr = {
diff --git a/src/libstrongswan/utils/windows.h b/src/libstrongswan/utils/windows.h
index afa524242..8e6fd80b1 100644
--- a/src/libstrongswan/utils/windows.h
+++ b/src/libstrongswan/utils/windows.h
@@ -86,6 +86,11 @@ static inline int sleep(unsigned int seconds)
}
/**
+ * Replacement of usleep(3), cancellable, ms resolution only
+ */
+int usleep(useconds_t usec);
+
+/**
* strdup(3), the Windows variant can't free(strdup("")) and others
*/
#define strdup strdup_windows