| 1 |
--- Socket.d 2006-01-30 13:38:25.000000000 -0300 |
|---|
| 2 |
+++ Socket.d.patched 2006-01-30 13:38:15.000000000 -0300 |
|---|
| 3 |
@@ -1564,6 +1564,7 @@ |
|---|
| 4 |
body |
|---|
| 5 |
{ |
|---|
| 6 |
fd_set* fr, fw, fe; |
|---|
| 7 |
+ socket_t maxfd; |
|---|
| 8 |
|
|---|
| 9 |
version(Win32) |
|---|
| 10 |
{ |
|---|
| 11 |
@@ -1582,7 +1583,7 @@ |
|---|
| 12 |
int result; |
|---|
| 13 |
|
|---|
| 14 |
// MANGO: if select() was interrupted, we now try again |
|---|
| 15 |
- while ((result = .select (socket_t.max - 1, fr, fw, fe, tv)) == -1) |
|---|
| 16 |
+ while ((result = .select (maxfd + 1, fr, fw, fe, tv)) == -1) |
|---|
| 17 |
version(Win32) |
|---|
| 18 |
{ |
|---|
| 19 |
if(WSAGetLastError() != WSAEINTR) |
|---|
| 20 |
@@ -2088,6 +2089,7 @@ |
|---|
| 21 |
// private: |
|---|
| 22 |
private uint nbytes; //Win32: excludes uint.size "count" |
|---|
| 23 |
private byte* buf; |
|---|
| 24 |
+ private socket_t maxfd = 0; |
|---|
| 25 |
|
|---|
| 26 |
|
|---|
| 27 |
version(Win32) |
|---|
| 28 |
@@ -2193,6 +2195,15 @@ |
|---|
| 29 |
|
|---|
| 30 |
|
|---|
| 31 |
***********************************************************************/ |
|---|
| 32 |
+ socket_t maxFd() |
|---|
| 33 |
+ { |
|---|
| 34 |
+ return maxfd; |
|---|
| 35 |
+ } |
|---|
| 36 |
+ |
|---|
| 37 |
+ /*********************************************************************** |
|---|
| 38 |
+ |
|---|
| 39 |
+ |
|---|
| 40 |
+ ***********************************************************************/ |
|---|
| 41 |
|
|---|
| 42 |
void reset() |
|---|
| 43 |
{ |
|---|
| 44 |
@@ -2226,6 +2237,9 @@ |
|---|
| 45 |
} |
|---|
| 46 |
body |
|---|
| 47 |
{ |
|---|
| 48 |
+ if (s > maxfd) |
|---|
| 49 |
+ maxfd = s; |
|---|
| 50 |
+ |
|---|
| 51 |
version(Win32) |
|---|
| 52 |
{ |
|---|
| 53 |
uint c = count; |
|---|