Skip to content

Commit 505c0f1

Browse files
committed
BUG/MINOR: server: don't set port to 0 when not set
1 parent 3b0864b commit 505c0f1

File tree

6 files changed

+141
-33
lines changed

6 files changed

+141
-33
lines changed

configuration/server_template.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,11 @@ func ParseServerTemplate(ondiskServerTemplate types.ServerTemplate) *models.Serv
184184
Prefix: ondiskServerTemplate.Prefix,
185185
NumOrRange: ondiskServerTemplate.NumOrRange,
186186
Fqdn: ondiskServerTemplate.Fqdn,
187-
Port: &ondiskServerTemplate.Port,
188187
Metadata: misc.ParseMetadata(ondiskServerTemplate.Comment),
189188
}
189+
if ondiskServerTemplate.Port != 0 {
190+
template.Port = &ondiskServerTemplate.Port
191+
}
190192
parseServerParams(ondiskServerTemplate.Params, &template.ServerParams)
191193
return template
192194
}
@@ -203,7 +205,7 @@ func SerializeServerTemplate(s models.ServerTemplate, opt *options.Configuration
203205
Params: []params.ServerOption{},
204206
Comment: comment,
205207
}
206-
if s.Port != nil {
208+
if s.Port != nil && *s.Port > 0 {
207209
template.Port = *s.Port
208210
}
209211
template.Params = SerializeServerParams(s.ServerParams, opt)

test/configuration_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -820,6 +820,7 @@ backend test # my comment
820820
use-server webserv2 unless TRUE
821821
server webserv 192.168.1.1:9200 maxconn 1000 ssl weight 10 inter 2s cookie BLAH slowstart 6000 proxy-v2-options authority,crc32c ws h1 pool-low-conn 128 id 1234 pool-purge-delay 10s tcp-ut 2s curves secp384r1 client-sigalgs ECDSA+SHA256:RSA+SHA256 sigalgs ECDSA+SHA256 no-renegotiate log-bufsize 10 set-proxy-v2-tlv-fmt(0x20) %[fc_pp_tlv(0x20)] init-state fully-up idle-ping 10s check-reuse-pool strict-maxconn tcp-md5sig secretpass sni-auto check-sni-auto ktls on # my comment
822822
server webserv2 192.168.1.1:9300 maxconn 1000 ssl weight 10 inter 2s cookie BLAH slowstart 6000 proxy-v2-options authority,crc32c ws h1 pool-low-conn 128 hash-key akey pool-conn-name apoolconnname no-check-reuse-pool check-pool-conn-name foo renegotiate cc cubic # {"comment": "my structured comment", "id": "my_random_id_for_server"}
823+
server webserv_noport 192.168.1.2 check
823824
http-request set-dst hdr(x-dst) # my comment
824825
http-request set-dst-port int(4000)
825826
http-request set-uri %[url,regsub(^/metrics/,/,)] if { path_beg /metrics }

test/expected/structured.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1056,7 +1056,6 @@
10561056
"check": "enabled",
10571057
"fqdn": "test.com",
10581058
"num_or_range": "5",
1059-
"port": 0,
10601059
"prefix": "test"
10611060
},
10621061
"website": {
@@ -1135,6 +1134,11 @@
11351134
"check-pool-conn-name": "foo",
11361135
"renegotiate": "enabled",
11371136
"cc": "cubic"
1137+
},
1138+
"webserv_noport": {
1139+
"check": "enabled",
1140+
"address": "192.168.1.2",
1141+
"name": "webserv_noport"
11381142
}
11391143
}
11401144
},

test/server_template_test.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,48 @@ func TestGetServerTemplateFourth(t *testing.T) {
129129
checkServerTemplates(t, m)
130130
}
131131

132+
func TestCreateServerTemplateNilPort(t *testing.T) {
133+
template := &models.ServerTemplate{
134+
Prefix: "noport",
135+
NumOrRange: "1-5",
136+
Fqdn: "noport.example.com",
137+
ServerParams: models.ServerParams{
138+
Check: "enabled",
139+
},
140+
}
141+
142+
err := clientTest.CreateServerTemplate("test", template, "", version)
143+
if err != nil {
144+
t.Error(err.Error())
145+
} else {
146+
version++
147+
}
148+
149+
v, st, err := clientTest.GetServerTemplate("noport", "test", "")
150+
if err != nil {
151+
t.Error(err.Error())
152+
}
153+
154+
if v != version {
155+
t.Errorf("Version %v returned, expected %v", v, version)
156+
}
157+
158+
if st.Port != nil {
159+
t.Errorf("Expected Port to be nil, got %v", *st.Port)
160+
}
161+
if st.Fqdn != "noport.example.com" {
162+
t.Errorf("Expected Fqdn to be noport.example.com, got %v", st.Fqdn)
163+
}
164+
165+
// Cleanup
166+
err = clientTest.DeleteServerTemplate("noport", "test", "", version)
167+
if err != nil {
168+
t.Error(err.Error())
169+
} else {
170+
version++
171+
}
172+
}
173+
132174
func TestCreateEditDeleteServerTemplate(t *testing.T) {
133175
port := int64(80)
134176

test/server_test.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,47 @@ func TestGetRingServer(t *testing.T) {
133133
}
134134
}
135135

136+
func TestCreateServerNilPort(t *testing.T) {
137+
s := &models.Server{
138+
Name: "noport",
139+
Address: "192.168.2.1",
140+
ServerParams: models.ServerParams{
141+
Check: "enabled",
142+
},
143+
}
144+
145+
err := clientTest.CreateServer(configuration.BackendParentName, "test", s, "", version)
146+
if err != nil {
147+
t.Error(err.Error())
148+
} else {
149+
version++
150+
}
151+
152+
v, server, err := clientTest.GetServer("noport", configuration.BackendParentName, "test", "")
153+
if err != nil {
154+
t.Error(err.Error())
155+
}
156+
157+
if v != version {
158+
t.Errorf("Version %v returned, expected %v", v, version)
159+
}
160+
161+
if server.Port != nil {
162+
t.Errorf("Expected Port to be nil, got %v", *server.Port)
163+
}
164+
if server.Address != "192.168.2.1" {
165+
t.Errorf("Expected Address to be 192.168.2.1, got %v", server.Address)
166+
}
167+
168+
// Cleanup
169+
err = clientTest.DeleteServer("noport", configuration.BackendParentName, "test", "", version)
170+
if err != nil {
171+
t.Error(err.Error())
172+
} else {
173+
version++
174+
}
175+
}
176+
136177
func TestCreateEditDeleteServer(t *testing.T) {
137178
// TestCreateServer
138179
port := int64(4300)

test/site_test.go

Lines changed: 48 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -94,24 +94,33 @@ func TestGetSites(t *testing.T) { //nolint:gocognit,gocyclo
9494
if b.Mode != "http" {
9595
t.Errorf("%v: %v: Protocol not http: %v", s.Name, b.Name, b.Mode)
9696
}
97-
if len(b.Servers) != 2 {
98-
t.Errorf("%v: %v: Got %v servers, expected 2", s.Name, b.Name, len(b.Servers))
97+
if len(b.Servers) != 3 {
98+
t.Errorf("%v: %v: Got %v servers, expected 3", s.Name, b.Name, len(b.Servers))
9999
}
100100
for _, srv := range b.Servers {
101-
if srv.Name != "webserv" && srv.Name != "webserv2" {
102-
t.Errorf("Expected only webserv or webserv2 servers, %v found", srv.Name)
101+
if srv.Name != "webserv" && srv.Name != "webserv2" && srv.Name != "webserv_noport" {
102+
t.Errorf("Expected only webserv, webserv2, or webserv_noport servers, %v found", srv.Name)
103103
}
104-
if srv.Address != "192.168.1.1" {
105-
t.Errorf("%v: %v: %v: Address not 192.168.1.1: %v", s.Name, b.Name, srv.Name, srv.Address)
106-
}
107-
if *srv.Port != 9300 && *srv.Port != 9200 {
108-
t.Errorf("%v: %v: %v: Port not 9300 or 9200: %v", s.Name, b.Name, srv.Name, *srv.Port)
109-
}
110-
if srv.Ssl != "enabled" {
111-
t.Errorf("%v: %v: %v: Ssl not enabled: %v", s.Name, b.Name, srv.Name, srv.Ssl)
112-
}
113-
if *srv.Weight != 10 {
114-
t.Errorf("%v: %v: %v: Weight not 10: %v", s.Name, b.Name, srv.Name, *srv.Weight)
104+
if srv.Name == "webserv_noport" {
105+
if srv.Address != "192.168.1.2" {
106+
t.Errorf("%v: %v: %v: Address not 192.168.1.2: %v", s.Name, b.Name, srv.Name, srv.Address)
107+
}
108+
if srv.Port != nil {
109+
t.Errorf("%v: %v: %v: Port should be nil but got: %v", s.Name, b.Name, srv.Name, *srv.Port)
110+
}
111+
} else {
112+
if srv.Address != "192.168.1.1" {
113+
t.Errorf("%v: %v: %v: Address not 192.168.1.1: %v", s.Name, b.Name, srv.Name, srv.Address)
114+
}
115+
if *srv.Port != 9300 && *srv.Port != 9200 {
116+
t.Errorf("%v: %v: %v: Port not 9300 or 9200: %v", s.Name, b.Name, srv.Name, *srv.Port)
117+
}
118+
if srv.Ssl != "enabled" {
119+
t.Errorf("%v: %v: %v: Ssl not enabled: %v", s.Name, b.Name, srv.Name, srv.Ssl)
120+
}
121+
if *srv.Weight != 10 {
122+
t.Errorf("%v: %v: %v: Weight not 10: %v", s.Name, b.Name, srv.Name, *srv.Weight)
123+
}
115124
}
116125
}
117126
case "test_2":
@@ -243,24 +252,33 @@ func TestGetSite(t *testing.T) { //nolint:gocognit,gocyclo
243252
if b.Mode != "http" {
244253
t.Errorf("%v: %v: Protocol not http: %v", s.Name, b.Name, b.Mode)
245254
}
246-
if len(b.Servers) != 2 {
247-
t.Errorf("%v: %v: Got %v servers, expected 2", s.Name, b.Name, len(b.Servers))
255+
if len(b.Servers) != 3 {
256+
t.Errorf("%v: %v: Got %v servers, expected 3", s.Name, b.Name, len(b.Servers))
248257
}
249258
for _, srv := range b.Servers {
250-
if srv.Name != "webserv" && srv.Name != "webserv2" {
251-
t.Errorf("Expected only webserv or webserv2 servers, %v found", srv.Name)
252-
}
253-
if srv.Address != "192.168.1.1" {
254-
t.Errorf("%v: %v: %v: Address not 192.168.1.1: %v", s.Name, b.Name, srv.Name, srv.Address)
259+
if srv.Name != "webserv" && srv.Name != "webserv2" && srv.Name != "webserv_noport" {
260+
t.Errorf("Expected only webserv, webserv2, or webserv_noport servers, %v found", srv.Name)
255261
}
256-
if *srv.Port != 9300 && *srv.Port != 9200 {
257-
t.Errorf("%v: %v: %v: Port not 9300 or 9200: %v", s.Name, b.Name, srv.Name, *srv.Port)
258-
}
259-
if srv.Ssl != "enabled" {
260-
t.Errorf("%v: %v: %v: Ssl not enabled: %v", s.Name, b.Name, srv.Name, srv.Ssl)
261-
}
262-
if *srv.Weight != 10 {
263-
t.Errorf("%v: %v: %v: Weight not 10: %v", s.Name, b.Name, srv.Name, *srv.Weight)
262+
if srv.Name == "webserv_noport" {
263+
if srv.Address != "192.168.1.2" {
264+
t.Errorf("%v: %v: %v: Address not 192.168.1.2: %v", s.Name, b.Name, srv.Name, srv.Address)
265+
}
266+
if srv.Port != nil {
267+
t.Errorf("%v: %v: %v: Port should be nil but got: %v", s.Name, b.Name, srv.Name, *srv.Port)
268+
}
269+
} else {
270+
if srv.Address != "192.168.1.1" {
271+
t.Errorf("%v: %v: %v: Address not 192.168.1.1: %v", s.Name, b.Name, srv.Name, srv.Address)
272+
}
273+
if *srv.Port != 9300 && *srv.Port != 9200 {
274+
t.Errorf("%v: %v: %v: Port not 9300 or 9200: %v", s.Name, b.Name, srv.Name, *srv.Port)
275+
}
276+
if srv.Ssl != "enabled" {
277+
t.Errorf("%v: %v: %v: Ssl not enabled: %v", s.Name, b.Name, srv.Name, srv.Ssl)
278+
}
279+
if *srv.Weight != 10 {
280+
t.Errorf("%v: %v: %v: Weight not 10: %v", s.Name, b.Name, srv.Name, *srv.Weight)
281+
}
264282
}
265283
}
266284
} else if b.Name == "test_2" {

0 commit comments

Comments
 (0)