mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-17 01:02:12 +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)
|
#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
|
\brief Return a printable name of a switch_priority_t
|
||||||
\param priority the priority to get the name of
|
\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);
|
s = poll(pfds, 1, ms);
|
||||||
|
|
||||||
|
if (s < 0) {
|
||||||
|
if (switch_errno_is_break(switch_errno())) {
|
||||||
|
s = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (s < 0) {
|
if (s < 0) {
|
||||||
r = s;
|
r = s;
|
||||||
} else if (s > 0) {
|
} 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);
|
s = poll(pfds, len, ms);
|
||||||
|
|
||||||
|
if (s < 0) {
|
||||||
|
if (switch_errno_is_break(switch_errno())) {
|
||||||
|
s = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (s < 0) {
|
if (s < 0) {
|
||||||
r = s;
|
r = s;
|
||||||
} else if (s > 0) {
|
} 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);
|
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) {
|
if (s < 0) {
|
||||||
r = s;
|
r = s;
|
||||||
} else if (s > 0) {
|
} 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);
|
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) {
|
if (s < 0) {
|
||||||
r = s;
|
r = s;
|
||||||
} else if (s > 0) {
|
} else if (s > 0) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user