-/////////////////////////////////////////////////////////////////////////////
-// Some patch ///// BEGIN
-/////////////////////////////////////////////////////////////////////////////
-#ifdef __WINDOWS__
-#define close closesocket
-#define ioctl ioctlsocket
-#ifdef errno
-#undef errno
-#endif
-#define errno WSAGetLastError()
-#ifdef EWOULDBLOCK
-#undef EWOULDBLOCK
-#endif
-#define EWOULDBLOCK WSAEWOULDBLOCK
-#define ETIMEDOUT WSAETIMEDOUT
-#undef EINTR
-#define EINTR WSAEINTR
-#endif
-
-#ifndef __WINDOWS__
-#define INVALID_SOCKET -1
-#endif
-
-#ifdef __WXMOTIF__
-#define wxAPP_CONTEXT ((XtAppContext)wxTheApp->GetAppContext())
-#endif
-
-#ifdef __WINDOWS__
-// This is an MS TCP/IP routine and is not needed here. Some WinSock
-// implementations (such as PC-NFS) will require you to include this
-// or a similar routine (see appendix in WinSock doc or help file).
-
-#if defined( NEED_WSAFDIsSet ) || defined( __VISUALC__ )
-int PASCAL FAR __WSAFDIsSet(SOCKET fd, fd_set FAR *set)
-{
- int i = set->fd_count;
-
- while (i--)
- {
- if (set->fd_array[i] == fd)
- return 1;
- }
-
- return 0;
-}
-#endif
-#endif
-
-#if defined(__WINDOWS__)
-#define PROCESS_EVENTS() wxYield()
-#elif defined(__WXXT__) || defined(__WXMOTIF__)
-#define PROCESS_EVENTS() XtAppProcessEvent(wxAPP_CONTEXT, XtIMAll)
-#elif defined(__WXGTK__)
-#define PROCESS_EVENTS() gtk_main_iteration()
-#endif
-
-/////////////////////////////////////////////////////////////////////////////
-// Some patch ///// END
-/////////////////////////////////////////////////////////////////////////////
+// DLL options compatibility check:
+#include "wx/build.h"
+WX_CHECK_BUILD_OPTIONS("wxNet")
+
+// --------------------------------------------------------------------------
+// macros and constants
+// --------------------------------------------------------------------------
+
+// discard buffer
+#define MAX_DISCARD_SIZE (10 * 1024)
+
+// what to do within waits: we have 2 cases: from the main thread itself we
+// have to call wxYield() to let the events (including the GUI events and the
+// low-level (not wxWidgets) events from GSocket) be processed. From another
+// thread it is enough to just call wxThread::Yield() which will give away the
+// rest of our time slice: the explanation is that the events will be processed
+// by the main thread anyhow, without calling wxYield(), but we don't want to
+// eat the CPU time uselessly while sitting in the loop waiting for the data
+#if wxUSE_THREADS
+ #define PROCESS_EVENTS() \
+ { \
+ if ( wxThread::IsMain() ) \
+ wxYield(); \
+ else \
+ wxThread::Yield(); \
+ }
+#else // !wxUSE_THREADS
+ #define PROCESS_EVENTS() wxYield()
+#endif // wxUSE_THREADS/!wxUSE_THREADS