Add a patch to make the invocation of select(2) work in CEPoll::wait() method.
Applicable only to non-Linux platforms, such as FreeBSD. Bump PORTREVISION. Obtained from: https://sourceforge.net/p/udt/patches/12/
This commit is contained in:
parent
446f9cc70f
commit
c1d655e918
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=343828
2 changed files with 31 additions and 0 deletions
|
@ -3,6 +3,7 @@
|
|||
|
||||
PORTNAME= udt
|
||||
PORTVERSION= 4.11
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= net
|
||||
MASTER_SITES= SF
|
||||
DISTNAME= udt.sdk.${PORTVERSION}
|
||||
|
|
30
net/udt/files/patch-fix-select-call
Normal file
30
net/udt/files/patch-fix-select-call
Normal file
|
@ -0,0 +1,30 @@
|
|||
From
|
||||
http://sourceforge.net/p/udt/patches/12/
|
||||
|
||||
--- src/epoll.cpp
|
||||
+++ src/epoll.cpp
|
||||
@@ -256,18 +256,23 @@ int CEPoll::wait(const int eid, set<UDTSOCKET>* readfds, set<UDTSOCKET>* writefd
|
||||
FD_ZERO(&readfds);
|
||||
FD_ZERO(&writefds);
|
||||
|
||||
+ //"select" needs to know the max file descriptor that is set in the fd_set structs
|
||||
+ SYSSOCKET max_fd = 0;
|
||||
+
|
||||
for (set<SYSSOCKET>::const_iterator i = p->second.m_sLocals.begin(); i != p->second.m_sLocals.end(); ++ i)
|
||||
{
|
||||
if (lrfds)
|
||||
FD_SET(*i, &readfds);
|
||||
if (lwfds)
|
||||
FD_SET(*i, &writefds);
|
||||
+ if (*i > max_fd)
|
||||
+ max_fd = *i;
|
||||
}
|
||||
|
||||
timeval tv;
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_usec = 0;
|
||||
- if (::select(0, &readfds, &writefds, NULL, &tv) > 0)
|
||||
+ if (::select(max_fd + 1, &readfds, &writefds, NULL, &tv) > 0)
|
||||
{
|
||||
for (set<SYSSOCKET>::const_iterator i = p->second.m_sLocals.begin(); i != p->second.m_sLocals.end(); ++ i)
|
||||
{
|
Loading…
Reference in a new issue