diff --git a/third_party/sipcc/cpr_win_types.h b/third_party/sipcc/cpr_win_types.h
index c4dfa0b72a497346b3cda988b9c1a46bedb60226..106e551728b93d06e2a18fe6f05e4e9c39070f35 100644
--- a/third_party/sipcc/cpr_win_types.h
+++ b/third_party/sipcc/cpr_win_types.h
@@ -40,15 +40,22 @@ typedef uint8_t boolean;
  * NOTE: size_t should already be declared by both the MinGW and Microsoft
  * SDKs.
  */
-#ifndef _SSIZE_T_
+
+#if defined(_MSC_VER) && !defined(_SSIZE_T_)
 #define _SSIZE_T_
-typedef int ssize_t;
+#if !defined(_WIN64)
+typedef int32_t ssize_t;
+#else
+typedef int64_t ssize_t;
+#endif
 #endif
 
 /*
- * Define pid_t.
+ * Define pid_t for MSVC builds
  */
+#if defined(_WIN32) && defined (_MSC_VER)
 typedef int pid_t;
+#endif
 
 /*
  * Define min/max
diff --git a/third_party/sipcc/sdp_token.c b/third_party/sipcc/sdp_token.c
index b570d8169009f66beb3b9bc07b10b70e1e940b3b..70f2a19138ea43cad6417c1b24a60c806d1ddbaf 100644
--- a/third_party/sipcc/sdp_token.c
+++ b/third_party/sipcc/sdp_token.c
@@ -4,6 +4,10 @@
 
 #include <errno.h>
 
+#if defined(SIP_OS_WINDOWS) && !defined(_MSC_VER)
+#include <minmax.h>
+#endif
+
 #include "sdp_os_defs.h"
 #include "sipcc_sdp.h"
 #include "sdp_private.h"