#ifndef __GSOCKET_STANDALONE__
-#include "wx/gsocket.h"
#include "wx/unix/gsockunx.h"
+#include "wx/gsocket.h"
#else
-#include "gsocket.h"
#include "gsockunx.h"
+#include "gsocket.h"
#endif /* __GSOCKET_STANDALONE__ */
*/
GSocketEventFlags GSocket_Select(GSocket *socket, GSocketEventFlags flags)
{
+ GSocketEventFlags result = 0;
+ char c;
+
assert(socket != NULL);
- return (flags & socket->m_detected);
+ result = flags & socket->m_detected;
+
+ if ((flags & GSOCK_INPUT_FLAG) &&
+ (recv(socket->m_fd, &c, 1, MSG_PEEK) > 0))
+ {
+ result |= GSOCK_INPUT_FLAG;
+ }
+
+ return result;
}
/* Flags */
int _GSocket_Recv_Stream(GSocket *socket, char *buffer, int size)
{
- int ret;
-
- MASK_SIGNAL();
- ret = recv(socket->m_fd, buffer, size, 0);
- UNMASK_SIGNAL();
-
- return ret;
+ return recv(socket->m_fd, buffer, size, 0);
}
int _GSocket_Recv_Dgram(GSocket *socket, char *buffer, int size)
fromlen = sizeof(from);
- MASK_SIGNAL();
ret = recvfrom(socket->m_fd, buffer, size, 0, &from, (SOCKLEN_T *) &fromlen);
- UNMASK_SIGNAL();
if (ret == -1)
return -1;