summaryrefslogtreecommitdiff
path: root/src/net_query.c
diff options
context:
space:
mode:
authorSimon Howard2006-04-09 02:50:34 +0000
committerSimon Howard2006-04-09 02:50:34 +0000
commiteb937f4d148a75c4f2b6d3f7687dae4ef2053105 (patch)
treedb93179683ab1f4f71e36185ca6c92aae3daba03 /src/net_query.c
parent6f76c8ee6b97097772c11cf3e75d1b641c4d29b7 (diff)
downloadchocolate-doom-eb937f4d148a75c4f2b6d3f7687dae4ef2053105.tar.gz
chocolate-doom-eb937f4d148a75c4f2b6d3f7687dae4ef2053105.tar.bz2
chocolate-doom-eb937f4d148a75c4f2b6d3f7687dae4ef2053105.zip
Broadcast searches (currently broken)
Subversion-branch: /trunk/chocolate-doom Subversion-revision: 467
Diffstat (limited to 'src/net_query.c')
-rw-r--r--src/net_query.c59
1 files changed, 56 insertions, 3 deletions
diff --git a/src/net_query.c b/src/net_query.c
index b6a604f8..4ee62298 100644
--- a/src/net_query.c
+++ b/src/net_query.c
@@ -46,7 +46,16 @@ static void NET_Query_SendQuery(net_addr_t *addr)
request = NET_NewPacket(10);
NET_WriteInt16(request, NET_PACKET_TYPE_QUERY);
- NET_SendPacket(addr, request);
+
+ if (addr == NULL)
+ {
+ NET_SendBroadcast(query_context, request);
+ }
+ else
+ {
+ NET_SendPacket(addr, request);
+ }
+
NET_FreePacket(request);
}
@@ -164,6 +173,7 @@ void NET_Query_Init(void)
void NET_QueryAddress(char *addr)
{
int start_time;
+ int last_send_time;
net_addr_t *net_addr;
NET_Query_Init();
@@ -177,12 +187,21 @@ void NET_QueryAddress(char *addr)
printf("\nQuerying '%s'...\n\n", addr);
- NET_Query_SendQuery(net_addr);
-
+ last_send_time = -1;
start_time = I_GetTimeMS();
while (num_responses <= 0 && I_GetTimeMS() < start_time + 5000)
{
+ // Send a query once every second
+
+ if (last_send_time < 0 || I_GetTimeMS() > last_send_time + 1000)
+ {
+ NET_Query_SendQuery(net_addr);
+ last_send_time = I_GetTimeMS();
+ }
+
+ // Check for a response
+
NET_Query_GetResponse();
I_Sleep(100);
}
@@ -195,3 +214,37 @@ void NET_QueryAddress(char *addr)
exit(0);
}
+void NET_LANQuery(void)
+{
+ int start_time;
+ int last_send_time;
+
+ NET_Query_Init();
+
+ printf("\nPerforming broadcast scan for servers ...\n\n");
+
+ start_time = I_GetTimeMS();
+ last_send_time = -1;
+
+ while (num_responses <= 0 && I_GetTimeMS() < start_time + 5000)
+ {
+ // Send a query once every second
+
+ if (last_send_time < 0 || I_GetTimeMS() > last_send_time + 1000)
+ {
+ NET_Query_SendQuery(NULL);
+ last_send_time = I_GetTimeMS();
+ }
+
+ NET_Query_GetResponse();
+ I_Sleep(100);
+ }
+
+ if (num_responses <= 0)
+ {
+ I_Error("No servers found");
+ }
+
+ exit(0);
+}
+