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

Đang mở
#5,142 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
18/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
linux, nodejs, shell
Lĩnh vực
networking

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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.
Ngôn ngữ chính
Shell
Star
4.9k
Fork
871
Merge trung bình
1 ngày 7 giờ
Pull request đã merge (30 ngày)
133

Chuẩn bị môi trường

Mở trong Codespaces

Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của GameServerManagers/LinuxGSM

Tất cả issue của GameServerManagers/LinuxGSM

Issue tương tự

Thêm issue về Shell/Bash

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.