[Bug]: Half-Life WON2 and Counter-Strike WON2 servers do not answer queries

Abierto
#5,142 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
18/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
linux, nodejs, shell
Área
networking

Línea de trabajo

The failing path is the WON2 query handling in the LinuxGSM game server scripts for hlwonserver and cswonserver, with start and monitor driving it. Reproduce by starting the server in a clean ubuntu-26.04 container and sending a WON details query to port 27015, then trace hlds_run for setsockopt or a second socket set up by the preloaded libraries. Done means the server answers the protocol-valve-won query so monitor passes.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

command: monitor command: start distro: Ubuntu engine: goldsrc game: Counter-Strike: WON2 game: Half-Life: WON2 info: docker info: query reproducible: always severity: medium type: bug
Severity

severity: medium

Reproducibility

reproducible: always

Regression

regression: unknown

Affects latest release

latest-release: no

User story

As a Half-Life WON or Counter-Strike WON server owner, I want the server to answer queries so that monitor keeps it running and players can find it.

Script name

hlwonserver, cswonserver

Game

Half-Life: WON2, Counter-Strike: WON2

Linux distro

Ubuntu 26.04, Ubuntu 24.04, Ubuntu 22.04

Command

command: start, command: monitor

Expected behavior

The server answers the protocol-valve-won query on its game port, so monitor passes.

Actual behavior

The server starts and reaches Server IP address <ip>:27015, and HLShield 1.14 loads. It never answers any query: not the WON details query, not A2S_INFO and not info. monitor therefore restarts it. This is the same with the hosted archive (hlds_l-3111e-won2-linuxgsm.tar.xz) and with a rebuilt one.

What has been checked so far:

  • hlds_run starts ./hlds_i686 -noipx +sv_lan 1 ... with LD_PRELOAD="./nowon.so ./hlds_20040707fix.so ./hlshield.so".
  • The process binds UDP 0.0.0.0:27015 and reads from it all the time (strace shows recvfrom about every 10 ms, always EAGAIN).
  • tcpdump shows the query packets reaching the container's interface, but strace never sees one arrive at the socket. The socket's receive queue and drop count stay at 0, and UDP InErrors and NoPorts do not move.
  • Same result on Ubuntu 26.04, 24.04 and 22.04, on two different hosts, when querying from the host, from inside the container and over loopback, with different preload combinations, and with a faked date.

Only develop is affected. hlwon and cswon are not in a release yet (#5104, #5105).

Further information

#5104 and #5105 report queries passing on 23 October with the same archive (md5 83164405c744a5e424814e67eacf27fb). The quickest way forward is probably to repeat exactly how those tests were run (Docker network mode, where the query came from, the query tool) and find what is different.

Other ideas:

  • Trace from process start (strace -f -o on hlds_run) and look for a setsockopt call such as SO_ATTACH_FILTER, or a second socket, set up by one of the preloaded libraries.
  • Try without +sv_lan 1, and with each preload left out one at a time, while tracing.
Pre-checks
  • I ran update and validate before reporting this issue.
Relevant log output
Server IP address 172.17.0.2:27015
Steps to reproduce
  1. In a clean gameservermanagers/linuxgsm:ubuntu-26.04 container on develop, run ./linuxgsm.sh hlwonserver, ./hlwonserver auto-install and ./hlwonserver start.
  2. Wait two minutes, then send the WON details query (\xff\xff\xff\xffdetails\0) or A2S_INFO to the container IP on port 27015.
  3. Nothing comes back, and ./hlwonserver monitor restarts the server.
Lenguaje dominante
Shell
Estrellas
4.9k
Forks
871
Merge medio
1 d 7 h
PR fusionados (30 d)
133

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de GameServerManagers/LinuxGSM

Todos los issues de GameServerManagers/LinuxGSM

Issues similares

Más issues de Shell/Bash

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.