Skip to content

Repository files navigation

pubg-lobby-fix

Go Version License: MIT Build Status Release Downloads Platform

Languages: English · Русский

Windows tray tool that force-closes TslGame (PUBG) TCP sockets so you can skip the 1–2 minute black screen when returning to the lobby after a match. It lives in the system tray: a click closes the sockets, a notification reports the result.

Download & run · How it works · Build · CLI


Table of contents


The problem

When a PUBG match ends, Exit to Lobby often leaves you on a black screen for 1–2 minutes. It looks like a hang, but the process is still running: the client is waiting for a TCP connection that never closes cleanly.

pubg-lobby-fix finds TslGame sockets and removes them via the Windows IP Helper API (SetTcpEntryDELETE_TCB), verifies the result, and falls back to a short Windows Filtering Platform traffic block for anything SetTcpEntry cannot delete (e.g. IPv6 sockets, which have no public delete API).


🚀 Quick start

Important

Closing sockets needs administrator rights. If you start the tool unelevated, it relaunches itself through a UAC prompt automatically (opt out with -no-elevate).

Tip

The tool keeps itself up to date: on start it downloads the latest release, verifies its sha256 checksum, swaps the executable and restarts into the new version. Opt out with -no-update.

1. Download a release

Open the Latest Release and grab the zip for your CPU:

OS Architecture Release asset
Windows x64 (amd64) pubg-lobby-fix_*_windows_amd64.zip
Windows ARM64 pubg-lobby-fix_*_windows_arm64.zip

Extract the archive. Inside: pubg-lobby-fix.exe, LICENSE, README.md.

2. Run it

Right-click pubg-lobby-fix.exeRun as administrator, or from an elevated PowerShell / cmd:

.\pubg-lobby-fix.exe

The tool lives in the system tray (a green icon with a lightning bolt) and waits for the global hotkey Ctrl+Shift+L. When started directly (double-click or the UAC relaunch), its console window is hidden — with -no-tray it stays a normal console app instead. Console output looks like:

time="2026-09-05 18:12:03" level=INFO msg="waiting for hotkey" hotkey=ctrl+shift+l processes=TslGame
time="2026-09-05 18:14:11" level=INFO msg="hotkey pressed, closing lobby connections"
time="2026-09-05 18:14:12" level=INFO msg=done closed=7 already_gone=0 failed=0 survived=0

3. During a match

  1. Match over → press Exit to Lobby.
  2. Press Ctrl+Shift+L (or your custom hotkey) — or left-click the tray icon.
  3. A Windows notification reports the result (Sockets closed, Nothing to close, …) — the black screen usually clears immediately.

Stop the tool from the tray icon menu (Exit) or with Ctrl+C in the console window.

One-shot mode (close sockets and exit)
.\pubg-lobby-fix.exe -once
List sockets without closing
.\pubg-lobby-fix.exe -list

⚙️ How it works

Step What the program does WinAPI / package
1 Finds TslGame processes and their executables Toolhelp32 (internal/process)
2 Reads the IPv4 and IPv6 TCP tables with PIDs GetExtendedTcpTable (internal/tcp)
3 Deletes each live IPv4 control block (DELETE_TCB), then re-reads the table and retries the survivors for a few rounds SetTcpEntry (internal/tcp)
4 If anything survives (IPv6 has no delete API), briefly blocks all game traffic via WFP filters that vanish when the tool exits, even on a crash FwpmFilterAdd0 in a dynamic session (internal/wfp)
5 Trigger — global Windows hotkey or a left click on the tray icon RegisterHotKey (internal/hotkey), Shell_NotifyIconW (internal/tray)

The game process is not killed. Only TCP control blocks for the selected process are torn down (or its traffic is briefly blocked); the client handles the drop and returns to the lobby.


Requirements

OS Windows 10 / 11 only (iphlpapi.dll, user32.dll)
Privileges Administrator (requested automatically via UAC)
Game Running PUBG client (TslGame.exe)
Build Go 1.27+ (only if you build yourself)

Linux and macOS are not supported — the required WinAPI is missing there.


🎮 In-game usage

┌─────────────────────────────────────────────────────────┐
│  1. Start pubg-lobby-fix.exe as Administrator          │
│  2. Play as usual                                       │
│  3. Match end → Exit to Lobby → black screen            │
│  4. Press Ctrl+Shift+L (or click the tray icon)         │
│  5. Lobby without the long wait                         │
└─────────────────────────────────────────────────────────┘

Tip

Change the hotkey with -hotkey f9 or -hotkey alt+shift+q. Format: modifiers ctrl / alt / shift / win plus a key (az, 09, f1f24, space, esc, …).

Warning

Closing all TslGame TCP connections mid-match will drop your network session. Use this when you are already exiting to the lobby — not during an active fight.


📖 CLI reference

pubg-lobby-fix [flags]
Flag Default Description
-hotkey ctrl+shift+l Global hotkey
-process TslGame Comma-separated process names (no .exe)
-pause 25ms Delay between SetTcpEntry calls
-rounds 4 Close + verify rounds before the traffic block fallback
-block 10s WFP fallback: block all game traffic for this long when some connections survive (0 disables)
-no-elevate false Do not relaunch with administrator rights
-no-update false Disable automatic self-update on start
-no-tray false Do not show the tray icon; keep the console window
-once false Close connections once and exit
-list false List sockets only; do not close
-json false With -list: print connections as JSON to stdout (logs go to stderr)
-version Version / commit / build date
-v false Debug logs (slog)
-h Help

Examples

# Background mode with a custom hotkey
.\pubg-lobby-fix.exe -hotkey f9

# Multiple process names
.\pubg-lobby-fix.exe -process TslGame,PUBG

# Diagnostics
.\pubg-lobby-fix.exe -list -v

# Machine-readable connection list for scripts
.\pubg-lobby-fix.exe -list -json

# Release version string
.\pubg-lobby-fix.exe -version

🔨 Build from source

Prerequisites

Build

git clone https://github.com/suprunchuk/pubg-lobby-fix.git
cd pubg-lobby-fix
go build -o pubg-lobby-fix.exe .

Tests

go test -shuffle=on ./...

Install with go install

go install github.com/suprunchuk/pubg-lobby-fix@latest

The binary lands in %USERPROFILE%\go\bin (add that folder to PATH). The tool requests administrator rights itself via UAC.

Repository layout

pubg-lobby-fix/
├── main.go                 # CLI, flags, version ldflags
├── internal/
│   ├── app/                # orchestration: hotkey/tray → list → close → verify
│   ├── tcp/                # GetExtendedTcpTable (v4+v6) + SetTcpEntry
│   ├── wfp/                # WFP dynamic-session traffic block fallback
│   ├── elevate/            # elevation check + UAC relaunch
│   ├── process/            # PID lookup by name
│   ├── hotkey/             # RegisterHotKey + message loop
│   └── tray/               # Shell_NotifyIcon: icon, menu, notifications
└── .github/workflows/      # test, security, release

🏗 Architecture

                    ┌─────────────┐
   Ctrl+Shift+L ───►│   hotkey    │
                    └──────┬──────┘
                           │
                           ▼
                    ┌─────────────┐     Toolhelp32
                    │     app     │◄──────────────── process names
                    └──────┬──────┘
              list │       │ close + verify rounds
                   ▼       ▼
              ┌──────────────────────────┐    survivors?
              │        tcp               │────────────┐
              │  GetExtendedTcpTable     │            │
              │  SetTcpEntry(DELETE_TCB) │            ▼
              └──────────────────────────┘  ┌──────────────────┐
                                            │       wfp        │
                                            │ dynamic session: │
                                            │ block game exe   │
                                            │ for a few secs   │
                                            └──────────────────┘

Packages live under internal/ — this is an application, not a public library.


🏷 Releases & CI

Pushing a v* tag runs GoReleaser: Windows binaries (amd64/arm64), checksums.txt, and a changelog from commits since the previous tag.

git tag v1.0.1
git push origin v1.0.1

On main / PRs:

Workflow Checks
test.yml go test, coverage
security.yml govulncheck, gosec, CodeQL, Bearer
release.yml release on tag

Dependabot updates Go modules and GitHub Actions weekly.


🤝 Contributing

Basic loop:

go test -shuffle=on ./...
go build -o pubg-lobby-fix.exe .

Details: CONTRIBUTING.md. Bugs and ideas: Issues.


📄 License

MIT © 2026 Pasha Suprunchuk


Disclaimer

This tool changes the network connection state of a local Windows process. Use at your own risk. The author is not affiliated with PUBG / Krafton / Microsoft. Follow the game rules and platform Terms of Service.

About

Windows CLI that force-closes TslGame (PUBG) TCP sockets so you can skip the 1–2 minute black screen when returning to the lobby after a match.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages