{"record":{"id":"e5b882804dc671b6","repo":"shadowsocks/shadowsocks-windows","slug":"server-ip-can-not-be-blank","errorCode":null,"errorMessage":"Server IP can not be blank","messagePattern":"Server IP can not be blank","errorType":"validation","errorClass":"ArgumentException","httpStatus":null,"severity":"warning","filePath":"shadowsocks-csharp/Model/Configuration.cs","lineNumber":374,"sourceCode":"        }\r\n\r\n        public static void CheckLocalPort(int port)\r\n        {\r\n            CheckPort(port);\r\n            if (port == 8123)\r\n                throw new ArgumentException(I18N.GetString(\"Port can't be 8123\"));\r\n        }\r\n\r\n        private static void CheckPassword(string password)\r\n        {\r\n            if (string.IsNullOrEmpty(password))\r\n                throw new ArgumentException(I18N.GetString(\"Password can not be blank\"));\r\n        }\r\n\r\n        public static void CheckServer(string server)\r\n        {\r\n            if (string.IsNullOrEmpty(server))\r\n                throw new ArgumentException(I18N.GetString(\"Server IP can not be blank\"));\r\n        }\r\n\r\n        public static void CheckTimeout(int timeout, int maxTimeout)\r\n        {\r\n            if (timeout <= 0 || timeout > maxTimeout)\r\n                throw new ArgumentException(\r\n                    I18N.GetString(\"Timeout is invalid, it should not exceed {0}\", maxTimeout));\r\n        }\r\n    }\r\n}\r\n","sourceCodeStart":356,"sourceCodeEnd":385,"githubUrl":"https://github.com/shadowsocks/shadowsocks-windows/blob/891d971682eefcaa2e640258d3b352a3ad3b2233/shadowsocks-csharp/Model/Configuration.cs#L356-L385","documentation":"ArgumentException thrown by CheckServer when the server address is null or empty. The remote Shadowsocks server IP or hostname is mandatory; without it the client cannot establish a connection. It is checked during server-config validation.","triggerScenarios":"A server entry with a blank address field. An SS URL missing the host. The GUI Save action triggered before the server field was filled.","commonSituations":"Pasting only the password/port. The host field left at a default placeholder. Config import dropped the host segment.","solutions":["Fill in the server IP or hostname (e.g. 1.2.3.4 or example.com).","Re-import the full ss:// URL so the host is populated.","Edit gui-config.json to set a non-empty server field and reload."],"exampleFix":"// before\nConfiguration.CheckServer(\"\");\n\n// after\nConfiguration.CheckServer(\"example.com\");","handlingStrategy":"validation","validationCode":"if (string.IsNullOrEmpty(server)) {\n    // block Save / report error before calling CheckServer\n    return;\n}","typeGuard":null,"tryCatchPattern":"try { Configuration.CheckServer(server); }\ncatch (ArgumentException ex) { /* prompt the user for the server address */ }","preventionTips":["Validate the server field on config import.","Reject empty host segments in parsed ss:// URLs."],"tags":["configuration","validation","server","networking"],"backgroundTag":null,"analyzedSha":"891d971682eefcaa2e640258d3b352a3ad3b2233","analyzedAt":"2026-08-13T10:12:34.434Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}