Page 1 of 1

Some strange disconnect error on Unreal running on windows..

Posted: Sat Jul 30, 2005 12:08 pm
by ]Godlike[
It jst happens from time to time and alot of users get disconected at once or one by one. Error is "Operation would block". IRCD is running on windows xp sp2, and with ssl.

I have no ideer what this could be, it never happend when running ircd on linux, with same config ...

Somebody could explain me what this error means and if it can be fixed.


thx.

Posted: Tue Aug 02, 2005 6:24 am
by nate
I'm not fully sure what the Operation would Block is, however that sounds like something which might be Firewall related, possibly even SP2 related, I personally don't use SP2, but i've heard horror storries about it and its networking aspect, especially with how many connections it permits regardless of some settings.

Does this happen everytime you start getting a certain amount of connections to that particular server, or just random?

Posted: Tue Aug 02, 2005 4:12 pm
by ]Godlike[
Hehe. I knew it is windows related and it`s stupid networking. The one leaf on linux works great, and the windows one is giving a minute based errors, and booting down users. :)

There is like 100+ connections on it, and then it cleans it down to few 10 :)

Then it just boots off a random number of users every few mins :) and so on ...

Getting me a big headache :)

Probably nothing to do about it, or am i wrong ?

Posted: Tue Aug 02, 2005 5:55 pm
by Jason
It doesnt seem to me to be a firewall issue. It looks like something was going on with blocking socket operations.

* Jason pokes around the source

This diagnosis of non-firewall issue is supported by the following GREP output on the IRCd's source:

Code: Select all

s_bsd.c:            WSAGetLastError() != WSAEWOULDBLOCK)
socket.c:               if (retval < 0 && (WSAGetLastError() == WSAEWOULDBLOCK ||
support.c: { WSAEWOULDBLOCK,        "Operation would block" },
AFAIK, it usually isnt so easy as a error code from a write? to determine that you were blocked by a firewall, and each firewall works differently. A firewall is more likely to return a peer, a ping, a i/o error, or something like that

It is a windows only problem though aparently: socket.c shows that the code throwing that error is windows only:

Code: Select all

# ifndef _WIN32
...
# else
                if (retval < 0 && (WSAGetLastError() == WSAEWOULDBLOCK ||
                    WSAGetLastError() == WSAENOBUFS))
# endif
NOTE: I am not a C coder, so I could be wrong, and cant tell much more about what was going on.

Posted: Tue Aug 02, 2005 6:46 pm
by Stealth
Keep in mind that even though it is Windows XP, you might be running out of available sockets. Does this happe every time you reach a certain amount of users + unknown connections?

If this happens every time the server gets 100 connections, that may be the system limit. To fix this, you would put the maxclients settings in your class block to just below that number. (You need to allow a few sockets for unknown connections)