{"record":{"id":"bb26099e9661adc0","repo":"zaproxy/zaproxy","slug":"conn-options-proxy-address-empty","errorCode":null,"errorMessage":"conn.options.proxy.address.empty","messagePattern":"conn\\.options\\.proxy\\.address\\.empty","errorType":"validation","errorClass":"Exception","httpStatus":null,"severity":"warning","filePath":"zap/src/main/java/org/parosproxy/paros/extension/option/OptionsConnectionPanel.java","lineNumber":654,"sourceCode":"        if (chkProxyChainPrompt.isSelected()) {\n            setProxyChainPromptEnabled(true);\n        }\n    }\n\n    private void setProxyChainPromptEnabled(boolean isEnabled) {\n\n        txtProxyChainPassword.setEnabled(!isEnabled);\n        chkShowPassword.setEnabled(!isEnabled);\n    }\n\n    @Override\n    public void validateParam(Object obj) throws Exception {\n\n        if (chkUseProxyChain.isSelected()) {\n            // ZAP: empty proxy name validation\n            if (txtProxyChainName.getText().isEmpty()) {\n                txtProxyChainName.requestFocus();\n                throw new Exception(\n                        Constant.messages.getString(\"conn.options.proxy.address.empty\"));\n            }\n\n            if (chkProxyChainAuth.isSelected()\n                    && !chkProxyChainPrompt.isSelected()\n                    && txtProxyChainUserName.getText().isEmpty()) {\n                txtProxyChainUserName.requestFocus();\n                throw new Exception(\n                        Constant.messages.getString(\"conn.options.proxy.username.empty\"));\n            }\n        }\n\n        securityProtocolsPanel.validateSecurityProtocols();\n\n        socksProxyPanel.validateParam();\n    }\n\n    @Override","sourceCodeStart":636,"sourceCodeEnd":672,"githubUrl":"https://github.com/zaproxy/zaproxy/blob/9d1970a436b1b189bfb588fc88864c80d9baf6a5/zap/src/main/java/org/parosproxy/paros/extension/option/OptionsConnectionPanel.java#L636-L672","documentation":"OptionsConnectionPanel.validateParam() validates the Connection options dialog before saving. If 'Use proxy chain' is enabled, the proxy chain address/host field must be non-empty; otherwise it throws a generic Exception whose message is a localized i18n key (conn.options.proxy.address.empty). The field is also given focus so the user can correct it.","triggerScenarios":"Clicking OK on Options > Connection with 'Use proxy chain' checked but the proxy address/host text field left blank.","commonSituations":"Users enabling the upstream-proxy checkbox to configure it later; a saved profile where the address was cleared; automation or scripting that selects the checkbox programmatically without setting the text field.","solutions":["Enter the upstream proxy address/host in the 'Address' field of the proxy chain section","Untick 'Use proxy chain' if no upstream proxy is needed","If configuring programmatically, set the proxy chain address before triggering validation/save"],"exampleFix":"// before\nchkUseProxyChain.setSelected(true); // then save -> 'conn.options.proxy.address.empty'\n// after\nchkUseProxyChain.setSelected(true);\ntxtProxyChainName.setText(\"corp-proxy.example.com\");\ntxtProxyChainPort.setText(\"8080\");","handlingStrategy":"validation","validationCode":"if (useProxyChain && (proxyAddress == null || proxyAddress.trim().isEmpty())) {\n    // do not open/save the dialog; prompt for the address first\n}","typeGuard":null,"tryCatchPattern":"try {\n    optionsPanel.validateParam(connectionOptions);\n} catch (Exception e) {\n    if (\"conn.options.proxy.address.empty\".equals(e.getMessage())) {\n        focusProxyAddressField();\n    }\n}","preventionTips":["Never enable 'Use proxy chain' without filling the address field","Trim text field values before validation","In scripts, set both checkbox and text field together","Prefer credential/config profiles that keep proxy data consistent"],"tags":["ui","validation","options-dialog","proxy"],"backgroundTag":"empty-required-field","analyzedSha":"9d1970a436b1b189bfb588fc88864c80d9baf6a5","analyzedAt":"2026-09-05T19:26:59.356Z","contentChangedAt":"2026-09-05T19:26:59.356Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}