![]() |
|
|
|
#1
|
|||
|
Always had problems with empty server select on Linux. Threw together a little Windows app that does nothing but connect to the login server and dump the server name strings. Never had any problems getting the server list using this app through Wine.
I assumed there was some issue with Wine's implementation of the Win32-specific socket functions (WSASocket and friends -- of course Verant and SOE used all the Windows-specific calls instead of the equivalent standard ones). Maybe it delays things just enough to exacerbate issues with wifi... but if it happens on Windows too, there's probably more to it than that. No idea why Login specifically would be so fragile, char select and zones use the same packet protocol to address dropped packets. Maybe it doesn't actually wait until you receive the whole server list and just goes "they hit the Connect button, we're going to server select in x milliseconds whether we have anything to show them or not!" ? Would be a bizarre choice for a game that started in the dialup days, though. | ||
|
#2
|
|||
|
I had a thought after my last post. I know that, in my case at least, the server list packets are getting through fine, it's just that the Client chokes on them for whatever reason.
The EQEmu login server does have a lot of servers listed on it, so the server list is somewhat big (~6k), and gets split into several fragments (10 or so) to be sent over the wire. So I thought, why not just filter out all the non-P99 servers before letting the client see them? That way the client only has to deal with a few hundred bytes, in a single packet. I made a tiny, localhost man-in-the-middle program between the client and the login server to do just that. It is totally working for me, server select is much much more reliable with it running. Some of the code is a bit of a mess right now (lots of last-minute debugging, couldn't test it while I was coding it at work), but you can find it here: https://github.com/Zaela/p99-login-middlemand. Includes a makefile. You can check for yourself, but I can promise that it doesn't try to sniff passwords or anything dumb like that -- all client-to-server packets are simply forwarded and maybe tweaked slightly due to the filtering desychronizing the session somewhat. Definitely could have some bugs, but I urge you to at least give it a quick try. If it works out well, it shouldn't be too hard to set it up as a daemon and forget about all your server select problems for good. One thing you will need to do if you want to try it is to update your eqhost.txt to point at the middleman: Code:
[LoginServer] Host=localhost:5998 | ||
|
#3
|
|||
|
Is this easy to change for the new server list? I am unable to see any servers now.
EDIT: Never mind that. I had to re-edit my login server to Host=localhost:5998 | ||
|
Last edited by mantis502; 11-13-2019 at 02:19 PM..
| |||
|
#4
|
||||
|
Quote:
| |||
|
#5
|
||||
|
Quote:
https://github.com/rtrajano/p99_login_helper | |||
|
#6
|
|||
|
How do I get the middleman running/working? I told it to make but make install wouldn't work.
| ||
|
#7
|
||||
|
Quote:
a) Look into how to set up a daemon on your system (I understand this varies depending on your init system, although it will probably come down to filling in a few lines in a script template somewhere). b) Work it into an EQ launching script like this guy did. Has the potential benefit of only running the middleman when you're actually running EQ rather than having it on in the background all the time (although the resource usage is tiny either way). c) Run it manually in a terminal. ./p99-login-middlemand | |||
|
#8
|
|||
|
This works amazing!
I often had to try 10-30 times to get the list and now it is jackpot. Mini-Howto that worked for me on Mint 17something. Mainly I had to learn how to compile the source and where to put it so as to use to use mgellan's newly modified shellscript launcher ('b' above). Downloaded Zaela's .zip from the weblink. (p99-login-middlemand-master.zip) Browsed to Downloads directory , Extracted via GUI browser (right click, Extract here) Launched terminal mkdir ~/bin cd Downloads/ cd p99-login-middlemand-master/ make -f Makefile cd bin/ cp p99-login-middlemand ~/bin Modified the eqhosts to point to localhost as previously mentioned. Give a shout if questions, try to explain better if you need. I'm just a sapling in the shadow of titans. | ||
|
#9
|
|||
|
Zaela, while I'm totally not surprised that you made that tool... You're still awesome and that was a great idea.
| ||
|
#10
|
|||
|
Thanks Zaela middleman worked first time for me with on my wifi connection and Lubuntu laptop!
Mobile EQ is here again!
__________________
In-game characters:-
Tobeunce (Druid) <Knights Who Say Ni> Parpd (Enchanter) <Ardness> Echinops (Cleric) <Ardness> | ||
![]() |
|
|