Cube  Diff

Differences From Artifact [4bf1a6646d]:

To Artifact [7dc044a533]:


32
33
34
35
36
37
38
39

40
41
42
43
44
45
46
47
48

49
50
51
52
53
54
55
32
33
34
35
36
37
38

39
40
41
42
43
44
45
46
47

48
49
50
51
52
53
54
55







-
+








-
+







		if (resolverqueries.empty()) {
			SDL_UnlockMutex(resolvermutex);
			continue;
		}
		rt->query = resolverqueries.pop();
		rt->starttime = lastmillis;
		SDL_UnlockMutex(resolvermutex);
		ENetAddress address = {ENET_HOST_ANY, CUBE_SERVINFO_PORT};
		ENetAddress address = { ENET_HOST_ANY, CUBE_SERVINFO_PORT };
		enet_address_set_host(&address, rt->query);
		SDL_LockMutex(resolvermutex);
		resolverresult &rr = resolverresults.add();
		rr.query = rt->query;
		rr.address = address;
		rt->query = NULL;
		rt->starttime = 0;
		SDL_UnlockMutex(resolvermutex);
	};
	}
	return 0;
}

void
resolverinit(int threads, int limit)
{
	resolverlimit = limit;
121
122
123
124
125
126
127
128
129


130
131
132
133
134
135
136
121
122
123
124
125
126
127


128
129
130
131
132
133
134
135
136







-
-
+
+







		resolverthread &rt = resolverthreads[i];
		if (rt.query) {
			if (lastmillis - rt.starttime > resolverlimit) {
				resolverstop(rt, true);
				*name = rt.query;
				SDL_UnlockMutex(resolvermutex);
				return true;
			};
		};
			}
		}
	}
	SDL_UnlockMutex(resolvermutex);
	return false;
}

struct serverinfo {
	string name;
195
196
197
198
199
200
201
202

203
204
205
206
207
208
209
195
196
197
198
199
200
201

202
203
204
205
206
207
208
209







-
+







	lastinfo = lastmillis;
}

void
checkresolver()
{
	char *name = NULL;
	ENetAddress addr = {ENET_HOST_ANY, CUBE_SERVINFO_PORT};
	ENetAddress addr = { ENET_HOST_ANY, CUBE_SERVINFO_PORT };
	while (resolvercheck(&name, &addr)) {
		if (addr.host == ENET_HOST_ANY)
			continue;
		loopv(servers)
		{
			serverinfo &si = servers[i];
			if (name == si.name) {
301
302
303
304
305
306
307
308

309
310
311
312
313
314
315
301
302
303
304
305
306
307

308
309
310
311
312
313
314
315







-
+








void
servermenu()
{
	if (pingsock == ENET_SOCKET_NULL) {
		pingsock = enet_socket_create(ENET_SOCKET_TYPE_DATAGRAM, NULL);
		resolverinit(1, 1000);
	};
	}
	resolverclear();
	loopv(servers) resolverquery(servers[i].name);
	refreshservers();
	menuset(1);
}

void