Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions apis/proxy/v1alpha1/instance_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -668,6 +668,9 @@ type DefaultsConfiguration struct {
// Options configures additional HAProxy defaults options.
// +optional
Options *DefaultsOptions `json:"options,omitempty"`
// H1CaseAdjustBogusServer enables h1-case-adjust-bogus-server in the defaults section.
// +optional
H1CaseAdjustBogusServer bool `json:"h1CaseAdjustBogusServer,omitempty"`
// AdditionalParameters can be used to specify any further configuration statements which are not covered in this section explicitly.
// +optional
AdditionalParameters string `json:"additionalParameters,omitempty"`
Expand Down Expand Up @@ -751,6 +754,10 @@ func (d *DefaultsConfiguration) Model() (models.Defaults, error) {
defaults.Redispatch = &models.Redispatch{Enabled: ptr.To(enabled)}
}

if d.H1CaseAdjustBogusServer {
defaults.H1CaseAdjustBogusServer = models.DefaultsBaseH1CaseAdjustBogusServerEnabled
}

return defaults, defaults.Validate(strfmt.Default)
}

Expand Down
43 changes: 43 additions & 0 deletions apis/proxy/v1alpha1/instance_types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,3 +112,46 @@ func TestDefaultsConfigurationAddToParserWithMaxconn(t *testing.T) {
t.Fatalf("expected generated config to contain maxconn 2000, got:\n%s", p.String())
}
}

func TestDefaultsConfiguration_AddToParser_H1CaseAdjustBogusServerEnabled(t *testing.T) {
p, err := parser.New()
if err != nil {
t.Fatalf("failed to create parser: %v", err)
}

d := &DefaultsConfiguration{
Mode: "http",
Timeouts: map[string]metav1.Duration{},
H1CaseAdjustBogusServer: true,
}

if err := d.AddToParser(p); err != nil {
t.Fatalf("failed to add defaults to parser: %v", err)
}

cfg := p.String()
if !strings.Contains(cfg, "option h1-case-adjust-bogus-server") {
t.Fatalf("expected h1-case-adjust-bogus-server option in defaults section, got:\n%s", cfg)
}
}

func TestDefaultsConfiguration_AddToParser_H1CaseAdjustBogusServerDisabledByDefault(t *testing.T) {
p, err := parser.New()
if err != nil {
t.Fatalf("failed to create parser: %v", err)
}

d := &DefaultsConfiguration{
Mode: "http",
Timeouts: map[string]metav1.Duration{},
}

if err := d.AddToParser(p); err != nil {
t.Fatalf("failed to add defaults to parser: %v", err)
}

cfg := p.String()
if strings.Contains(cfg, "option h1-case-adjust-bogus-server") {
t.Fatalf("did not expect h1-case-adjust-bogus-server option in defaults section, got:\n%s", cfg)
}
}
1 change: 1 addition & 0 deletions docs/api-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -1266,6 +1266,7 @@ _Appears in:_
| `retries` _integer_ | Retries sets the maximum number of retries on a connection failure. | | Minimum: 1 <br />Optional: \{\} <br /> |
| `logging` _[DefaultsLoggingConfiguration](#defaultsloggingconfiguration)_ | Logging is used to configure default logging for all proxies. | | Optional: \{\} <br /> |
| `options` _[DefaultsOptions](#defaultsoptions)_ | Options configures additional HAProxy defaults options. | | Optional: \{\} <br /> |
| `h1CaseAdjustBogusServer` _boolean_ | H1CaseAdjustBogusServer enables h1-case-adjust-bogus-server in the defaults section. | | Optional: \{\} <br /> |
| `additionalParameters` _string_ | AdditionalParameters can be used to specify any further configuration statements which are not covered in this section explicitly. | | Optional: \{\} <br /> |


Expand Down
4 changes: 4 additions & 0 deletions helm/haproxy-operator/crds/proxy.haproxy.com_instances.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,10 @@ spec:
in defaults.
type: boolean
type: object
h1CaseAdjustBogusServer:
description: H1CaseAdjustBogusServer enables h1-case-adjust-bogus-server
in the defaults section.
type: boolean
mode:
default: http
description: Mode can be either 'tcp' or 'http'. In tcp mode
Expand Down
Loading