egametang/ET · error · Exception
router manager address is empty.
Error message
router manager address is empty.
What it means
Thrown by ClientSenderComponentSystem.LoginAsync when the address parameter for the router manager is null, empty, or whitespace. The router manager address is required to create the NetClient fiber that handles the actual login connection.
Source
Thrown at Packages/cn.etetet.login/Scripts/Hotfix/Client/Login/ClientSenderComponentSystem.cs:46
long fiberId = self.fiberId;
self.fiberId = 0;
await self.Fiber().RemoveFiber(fiberId);
}
public static async ETTask DisposeAsync(this ClientSenderComponent self)
{
EntityRef<ClientSenderComponent> selfRef = self;
await self.RemoveFiberAsync();
self = selfRef;
self?.Dispose();
}
public static async ETTask<long> LoginAsync(this ClientSenderComponent self, string address, string account, string password)
{
EntityRef<ClientSenderComponent> selfRef = self;
if (string.IsNullOrWhiteSpace(address))
{
throw new Exception("router manager address is empty.");
}
self.fiberId = await self.Fiber().CreateFiber(SchedulerType.ThreadPool, IdGenerater.Instance.GenerateId(), SceneType.NetClient, "NetClient");
self = selfRef;
self.FiberInstanceId = new FiberInstanceId(self.fiberId);
Main2NetClient_Login main2NetClientLogin = Main2NetClient_Login.Create();
main2NetClientLogin.OwnerFiberId = self.Fiber().Id;
main2NetClientLogin.Account = account;
main2NetClientLogin.Password = password;
main2NetClientLogin.Address = address;
NetClient2Main_Login response = await self.Root().GetComponent<ProcessInnerSender>().Call(self.FiberInstanceId, main2NetClientLogin) as NetClient2Main_Login;
return response.PlayerId;
}
public static void Send(this ClientSenderComponent self, IMessage message)View on GitHub (pinned to 5cab01f7a8)
Solutions
- Set the router manager address in the login configuration or pass a valid address to LoginAsync.
- Validate the address is non-empty before calling LoginAsync — show a UI error if blank.
- Check config loading logs to ensure the address field was deserialized correctly.
Example fix
// before
if (string.IsNullOrWhiteSpace(address))
throw new Exception("router manager address is empty.");
// caller validation before the call
if (string.IsNullOrWhiteSpace(address))
{
Log.Error("router manager address is empty");
return 0;
} Defensive patterns
Strategy: validation
Validate before calling
// Validate address before calling LoginAsync
if (string.IsNullOrWhiteSpace(address))
{
Log.Error("Router manager address is empty — check login config");
// show user-facing error or use default address
return;
} Prevention
- Populate the router manager address in config before attempting login.
- Validate the address field in the UI layer and show a user-facing error if blank.
- Log the address source (config key) at startup to trace misconfiguration.
When it happens
Trigger: LoginAsync is called with an empty or whitespace-only address string. Typically the address comes from config or a UI input field; if that source is not populated, the guard fires.
Common situations: Router manager address not configured in the login config or start config. UI text field for server address was left blank by the user. Config deserialization failed silently and the address field defaulted to null/empty.
Related errors
- invalid capacity: {capacity}
- Rpc error: request, 注意Actor消息超时,请注意查看是否死锁或者没有reply: {request
- Rpc error: {request}, response: {response}
- get router fail: {netComponent.Root().Id} {address}
- actor id is 0: {request}
AI-assisted analysis of egametang/ET@5cab01f7a8 (2026-08-13).
Data as JSON: /api/errors/938ea22a2d7ab470.
Report an issue: GitHub.