mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-14 08:05:37 +00:00
FS-6969 #resolve #comment This patch should accomplish the same and handle other platforms, please test
This commit is contained in:
parent
b7741916eb
commit
5ce5199be9
@ -541,6 +541,28 @@ SWITCH_DECLARE(int) switch_build_uri(char *uri, switch_size_t size, const char *
|
||||
|
||||
#define SWITCH_STATUS_IS_BREAK(x) (x == SWITCH_STATUS_BREAK || x == 730035 || x == 35 || x == SWITCH_STATUS_INTR)
|
||||
|
||||
|
||||
#ifdef _MSC_VER
|
||||
|
||||
#define switch_errno() WSAGetLastError()
|
||||
|
||||
static inline int switch_errno_is_break(int errcode)
|
||||
{
|
||||
return errcode == WSAEWOULDBLOCK || errcode == WSAEINPROGRESS || errcode == WSAEINTR;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#define switch_errno() errno
|
||||
|
||||
static inline int switch_errno_is_break(int errcode)
|
||||
{
|
||||
return errcode == EAGAIN || errcode == EWOULDBLOCK || errcode == EINPROGRESS || errcode == EINTR || errcode == ETIMEDOUT;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/*!
|
||||
\brief Return a printable name of a switch_priority_t
|
||||
\param priority the priority to get the name of
|
||||
|
@ -2567,6 +2567,12 @@ SWITCH_DECLARE(int) switch_wait_sock(switch_os_socket_t sock, uint32_t ms, switc
|
||||
|
||||
s = poll(pfds, 1, ms);
|
||||
|
||||
if (s < 0) {
|
||||
if (switch_errno_is_break(switch_errno())) {
|
||||
s = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (s < 0) {
|
||||
r = s;
|
||||
} else if (s > 0) {
|
||||
@ -2645,6 +2651,12 @@ SWITCH_DECLARE(int) switch_wait_socklist(switch_waitlist_t *waitlist, uint32_t l
|
||||
|
||||
s = poll(pfds, len, ms);
|
||||
|
||||
if (s < 0) {
|
||||
if (switch_errno_is_break(switch_errno())) {
|
||||
s = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (s < 0) {
|
||||
r = s;
|
||||
} else if (s > 0) {
|
||||
@ -2758,6 +2770,12 @@ SWITCH_DECLARE(int) switch_wait_sock(switch_os_socket_t sock, uint32_t ms, switc
|
||||
|
||||
s = select(sock + 1, (flags & SWITCH_POLL_READ) ? rfds : NULL, (flags & SWITCH_POLL_WRITE) ? wfds : NULL, (flags & SWITCH_POLL_ERROR) ? efds : NULL, &tv);
|
||||
|
||||
if (s < 0) {
|
||||
if (switch_errno_is_break(switch_errno())) {
|
||||
s = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (s < 0) {
|
||||
r = s;
|
||||
} else if (s > 0) {
|
||||
@ -2858,6 +2876,12 @@ SWITCH_DECLARE(int) switch_wait_socklist(switch_waitlist_t *waitlist, uint32_t l
|
||||
|
||||
s = select(max_fd + 1, (flags & SWITCH_POLL_READ) ? rfds : NULL, (flags & SWITCH_POLL_WRITE) ? wfds : NULL, (flags & SWITCH_POLL_ERROR) ? efds : NULL, &tv);
|
||||
|
||||
if (s < 0) {
|
||||
if (switch_errno_is_break(switch_errno())) {
|
||||
s = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (s < 0) {
|
||||
r = s;
|
||||
} else if (s > 0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user