コード例 #1
0
ファイル: ottd.c プロジェクト: Bubelbub/qstat
query_status_t send_ottd_request_packet(struct qserver *server)
{
	qserver_send_initial(server, server->type->status_packet, server->type->status_len);

	if(get_server_rules || get_player_info)
	{
		server->next_rule = ""; // trigger calling send_a2s_rule_request_packet
	}

	return INPROGRESS;
}
コード例 #2
0
ファイル: fl.c プロジェクト: JasonRivers/qstat
query_status_t send_fl_request_packet(struct qserver *server)
{
	struct fl_status* status = (struct fl_status*)server->master_query_tag;

	if( SOCKET_ERROR == qserver_send_initial(server, FL_INFO, sizeof(FL_INFO) - 1) )
	{
		return SOCKET_ERROR;
	}

	status->sent_info = 1;
	status->type = 0;

	return INPROGRESS;
}
コード例 #3
0
ファイル: ottd.c プロジェクト: Bubelbub/qstat
query_status_t send_ottdmaster_request_packet(struct qserver *server)
{
	return qserver_send_initial(server, server->type->master_packet, server->type->master_len);
}
コード例 #4
0
ファイル: fl.c プロジェクト: JasonRivers/qstat
query_status_t send_fl_rule_request_packet(struct qserver *server)
{
	struct fl_status* status = (struct fl_status*)server->master_query_tag;

	if ( 1 >= status->type )
	{
		// Not supported
		return PKT_ERROR;
	}

	if(!get_server_rules && !get_player_info)
	{
		return DONE_FORCE;
	}

	do
	{
		if(!status->have_challenge)
		{
			debug(3, "sending challenge");
			if( SOCKET_ERROR == qserver_send_initial(server, FL_GETCHALLENGE, sizeof(FL_GETCHALLENGE)-1) )
			{
				return SOCKET_ERROR;
			}
			status->sent_challenge = 1;
			break;
		}
		else if(get_server_rules && !status->have_rules)
		{
			char buf[sizeof(FL_RULES)-1+4] = FL_RULES;
			memcpy(buf+sizeof(FL_RULES)-1, &status->challenge, 4);
			debug(3, "sending rule query");
			if( SOCKET_ERROR == qserver_send_initial(server, buf, sizeof(buf)) )
			{
				return SOCKET_ERROR;
			}
			status->sent_rules = 1;
			break;
		}
		else if(get_player_info && !status->have_player)
		{
			char buf[sizeof(FL_PLAYER)-1+4] = FL_PLAYER;
			memcpy(buf+sizeof(FL_PLAYER)-1, &status->challenge, 4);
			debug(3, "sending player query");
			if( SOCKET_ERROR == qserver_send_initial(server, buf, sizeof(buf)) )
			{
				return SOCKET_ERROR;
			}
			status->sent_player = 1;
			break;
		}
		else
		{
			debug(3, "timeout");
			// we are probably called due to timeout, restart.
			status->have_challenge = 0;
			status->have_rules = 0;
		}
	} while(1);

	return INPROGRESS;
}