libbind / FD_SETSIZE question (on Windows)
stefanpuiu at itcnetworks.ro
Thu Jan 27 10:31:37 UTC 2005
Danny, first of all, I haven't redefined FD_SETSIZE. I've only changed
the value of highestFD in res_send.c on Windows.
Looking at res_send.c, I see that highestFD is only used to decide
whether a socket descriptor is valid or not - if the descriptor is above
highestFD, two of the functions fail and set errno to ENOTSOCK. This
doesn't affect FD_SETSIZE in any way, or at least not in a way I can see
- the consequences you're talking about might make sense if FD_SETSIZE
Danny Mayer wrote:
>At 09:11 AM 1/26/2005, Stefan Puiu wrote:
>>Does it look ok to you? I've used 0xFFFFFFFF as highestFD, since I'm not
>>aware of a Windows #define for the maximum socket descriptor value.
>You really DON'T want to do this. FD_SETSIZE is used for a number of arrays.
>You'd end up with a HUGE memory problem for arrays that are sparsely
>populated. You really don't want to step through an array like that.
>It's one of the reasons that socket-handling was totally redesign in BIND 9.3.0
>(and 9.2.4) for Windows. The overhead was outrageous. You need to understand
>that FD_SETSIZE is used in different ways on Unix and may have different
>uses depending on the assumptions made.
More information about the bind-users