# Instantly awaiting gamestate

**URL:** <https://discourse.ioquake.org/t/instantly-awaiting-gamestate/895>\
**Category:** dev\
**Created:** [June 2, 2017, 1:37am UTC](https://discourse.ioquake.org/t/instantly-awaiting-gamestate/895 "2017-06-02T01:37:49Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![sentry](https://avatars.discourse-cdn.com/v4/letter/s/439d5e/32.png) [@sentry](https://discourse.ioquake.org/u/sentry)\
**Post date:** [June 2, 2017, 1:37am UTC](https://discourse.ioquake.org/t/instantly-awaiting-gamestate/895/1 "2017-06-02T01:37:49Z")

</div>

With q3/ioq3, it normally takes 3 seconds for the “awaiting challenge” message to turn into awaiting gamestate. However, there are servers like ([ctf.cromctf.com](http://ctf.cromctf.com)) where it instantly connects.

There’s also a fork of ioq3 called [Quake3e](https://github.com/ec-/Quake3e) which has it so its dedicated server connects clients instantly too.

I was wondering how to achieve this same effect. And by default, why does it take multiple seconds for the awaiting challenge process to take place and not instantly like these other servers?

---

<div class="post-metadata">

**Author:** ![sentry](https://avatars.discourse-cdn.com/v4/letter/s/439d5e/32.png) [@sentry](https://discourse.ioquake.org/u/sentry)\
**Post date:** [June 2, 2017, 2:01am UTC](https://discourse.ioquake.org/t/instantly-awaiting-gamestate/895/2 "2017-06-02T02:01:36Z")

</div>

I actually figured this out on my own — sv\_client.c

Inside of:

```auto
void SV_GetChallenge(netadr_t from)

```

change:

```auto
#ifndef STANDALONE

```

to:

```auto
#if !defined(STANDALONE) && defined (USE_AUTHORIZE)

```

---

<div class="post-metadata">

**Author:** ![twist3d1](https://avatars.discourse-cdn.com/v4/letter/t/7bcc69/32.png) [@twist3d1](https://discourse.ioquake.org/u/twist3d1)\
**Post date:** [June 2, 2017, 3:34am UTC](https://discourse.ioquake.org/t/instantly-awaiting-gamestate/895/3 "2017-06-02T03:34:19Z")

</div>

The guys at quake3e are rather receptive to sharing their code. They use MSVC  
and might be willing to work with you… at least they offered to work with me. It is seems popular with some of the experienced crowd still playing.  
Seems like you have things well in hand, but I thought I’d mention it just FYI.

---

<div class="post-metadata">

**Author:** ![WofWca](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.ioquake.org/wofwca/32/795_2.png) [@WofWca](https://discourse.ioquake.org/u/WofWca)\
**Post date:** [June 9, 2025, 12:53pm UTC](https://discourse.ioquake.org/t/instantly-awaiting-gamestate/895/4 "2025-06-09T12:53:45Z")

</div>

Thanks for the research!

## My findings

There is [a comment](https://github.com/ioquake/ioq3/blob/8d2c2b42a55598d99873203194d13161ec2789c6/code/server/sv_client.c#L45-L50) in ioquake3 on `SV_GetChallenge` apparently saying that the challenge is disabled for IPv6 servers:

> ioquake3: we added a possibility for clients to add a challenge  
> to their packets, to make it more difficult for malicious servers  
> to hi-jack client connections.  
> Also, the auth stuff is completely disabled for com\_standalone games  
> as well as IPv6 connections, since there is no way to use the  
> v4-only auth server for these new types of connections.

ioquake3 added IPv6 support, so what could be tried is, as long as you can connect to the server with IPv6, set [`net_enabled 7`](https://github.com/ioquake/ioq3/blob/8d2c2b42a55598d99873203194d13161ec2789c6/README.md?plain=1#L321-L326) to enable IPv4, IPv6, and prefer IPv6 over IPv4. I, however, was not able to test this.

Local servers are apparently also exempt, which is confirmed by my experience, and this comment:

> Drop also for addresses coming in on local LAN

* * *

I though that this delay could be related to `sv_floodProtect`, but testing shows that this is not the case.  
I also tried using server password

* * *

So far I have not managed to get rid of this delay by changing config variables.

## My use case

I was wondering about this constant delay in my project [GitHub - WofWca/quake3.xdc: A WebXDC (in-chat mini-app) version of Quake III Arena](https://github.com/WofWca/quake3.xdc) (for of [GitHub - jdarpinian/ioq3: Emscripten support for ioquake3, the community fork of Quake III Arena](https://github.com/jdarpinian/ioq3/)), where all clients are basically trusted, so there is no need for any kind of authorization.
