How on earth do I host a server on this thing?

Iceball is a moddable, open source, cross-platform engine and game inspired by AoS Classic. Created by GreaseMonkey.
Incompatible with PySnip/pyspades-based AoS Classic 0.75/0.76 servers.
14 posts Page 1 of 1 First unread post
Lincent
Veterans
Veterans
Posts: 693
Joined: Wed Mar 27, 2013 9:47 pm


I want to run an eternal Hallway server for Iceball.
I host a server on the same port as an Ace of Spades server
Code: Select all
32887
, which when I host an Ace of Spades server appears on the Ace of Spades server list.
However, when I host the Iceball server, on the same port"
Code: Select all
iceball -d 32887 pkg/base
it doesn't appear.
Is there something I missed?
Zyc
Deuced Up
Posts: 83
Joined: Sun Dec 29, 2013 10:28 pm


do you host it by yourself or on a vps server ?
Lincent
Veterans
Veterans
Posts: 693
Joined: Wed Mar 27, 2013 9:47 pm


Zyc wrote:
do you host it by yourself or on a vps server ?
By myself.
Marisa Kirisame
Deuced Up
Posts: 152
Joined: Sat Sep 21, 2013 10:52 pm


Lincent wrote:
I want to run an eternal Hallway server for Iceball.
I host a server on the same port as an Ace of Spades server
Code: Select all
32887
, which when I host an Ace of Spades server appears on the Ace of Spades server list.
However, when I host the Iceball server, on the same port"
Code: Select all
iceball -d 32887 pkg/base
it doesn't appear.
Is there something I missed?
svsave/pub/server.json:
Code: Select all
	"heartbeat_send": false,
Change that to true.
Lincent
Veterans
Veterans
Posts: 693
Joined: Wed Mar 27, 2013 9:47 pm


Thanks Marisa

Wait, now it's saying the UDP socket used to connect to master servers broke horribly.
Marisa Kirisame
Deuced Up
Posts: 152
Joined: Sat Sep 21, 2013 10:52 pm


Ah shit, I think this is a known problem when you try to host an Iceball server on Windows. I don't know what actually causes it. The messagte shows up when common.udp_recvfrom() returns false.

From src/lua_udp.h:
Code: Select all
	socklen_t sadlen = sizeof(saddr);
	n = recvfrom(sockfd, buf, sizeof(buf) - 1, 0, (struct sockaddr *)&saddr, &sadlen);
	if (n == -1) {
#ifdef WIN32
		int err = WSAGetLastError();
		if (err != WSAEWOULDBLOCK) {
#else
		int err = errno;
		if (err != EAGAIN && err != EWOULDBLOCK) {
#endif
			lua_pushboolean(L, 0);
			return 1;
#ifdef WIN32
		} else if (err == WSAEWOULDBLOCK) {
#else
		} else if (err == EWOULDBLOCK || err == EAGAIN) {
#endif
			lua_pushstring(L, "");
			return 1;
		}
	}
After preprocessing:
Code: Select all
	socklen_t sadlen = sizeof(saddr);
	n = recvfrom(sockfd, buf, sizeof(buf) - 1, 0, (struct sockaddr *)&saddr, &sadlen);
	if (n == -1) {
		int err = WSAGetLastError();
		if (err != WSAEWOULDBLOCK) {
			lua_pushboolean(L, 0);
			return 1; // Lua gets: false
		} else if (err == WSAEWOULDBLOCK) {
			lua_pushstring(L, "");
			return 1; // Lua gets: ""
		}
	}
Workaround to try:

Here's the code in pkg/base/lib_heartbeat.lua:
Code: Select all
	-- check if we received any messages
	while true do
		local msg, host, port = common.udp_recvfrom(heartbeat_sockfd)
		if msg == "" then
			break
		elseif msg == false then
			print("*** UDP socket used to connect to master servers broke horribly. What the hell?!")
			irc.write("*** UDP socket used to connect to master servers broke horribly. What the hell?!")
			heartbeat_t_burstsleft = nil
			heartbeat_t_nextmsg = nil
Change it to this and see if it works:
Code: Select all
	-- check if we received any messages
	while true do
		local msg, host, port = common.udp_recvfrom(heartbeat_sockfd)
		if msg == "" or msg == false then
			break
You'll want to open it in an editor that doesn't shit itself when you give it a file with unix newlines - try wordpad instead of notepad.

I've got a feeling that this was tried and it didn't work, but if it somehow works... well, I guess that fixes *one* thing. Badly, though, but it'll do for a workaround while we find out how to fix the *real* issue.
Lincent
Veterans
Veterans
Posts: 693
Joined: Wed Mar 27, 2013 9:47 pm


The last suggestion seems to have fixed it.
Thanks again Marissa.
Marisa Kirisame
Deuced Up
Posts: 152
Joined: Sat Sep 21, 2013 10:52 pm


Alright, if you ever get around to compiling it, see if you can find out what error code Windows is actually shitting out so we can patch it.
Lincent
Veterans
Veterans
Posts: 693
Joined: Wed Mar 27, 2013 9:47 pm


Now I'm getting an error when joining.
net_connect(enet_host_service): failed
Marisa Kirisame
Deuced Up
Posts: 152
Joined: Sat Sep 21, 2013 10:52 pm


Weird. I do recall your server showed up on the list for a bit...

Perhaps you could bring the server up and I could try to join it? I'll be online for about another hour.
Lincent
Veterans
Veterans
Posts: 693
Joined: Wed Mar 27, 2013 9:47 pm


I put it up again.
Marisa Kirisame
Deuced Up
Posts: 152
Joined: Sat Sep 21, 2013 10:52 pm


OK, I've done a quick check, and it seems to not want to connect. Pings don't work, and 32887 and 32888 both report "open|filtered".

When you host an AoS server on the same port (having closed Iceball beforehand, of course), can you and/or other people connect to it?
Lincent
Veterans
Veterans
Posts: 693
Joined: Wed Mar 27, 2013 9:47 pm


Marisa Kirisame wrote:
When you host an AoS server on the same port (having closed Iceball beforehand, of course), can you and/or other people connect to it?
Yes
;edit I meant to say No, but I didn't notice until it was too late.
Last edited by Lincent on Sun Sep 17, 2017 3:55 am, edited 1 time in total.
Lincent
Veterans
Veterans
Posts: 693
Joined: Wed Mar 27, 2013 9:47 pm


I still need help hosting servers on this.
14 posts Page 1 of 1 First unread post
Return to “Iceball”

Who is online

Users browsing this forum: No registered users and 15 guests