Skip to content

Commit ccf6d0e

Browse files
oliwermjuraga
authored andcommitted
BUG/MEDIUM: Fix bind updates without restart
Some keywords in bind parameters were not using the right type for serialization (ServerOption instead of BindOption). Since both types share the same interface, the serialization to disk was working, but the parser was silently ignoring ServerOptions. So when the user used the API to create a new Bind and then GET it, the parser would miss those keywords because they have the wrong type in the cache. Note that this bug impacts both the deprecated API (like ForceNoSslv3) and the new API.
1 parent 4e508e2 commit ccf6d0e

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

configuration/bind.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -525,50 +525,50 @@ func serializeBindParams(b models.BindParams, path string) []params.BindOption {
525525
options = append(options, &params.BindOptionWord{Name: "defer-accept"})
526526
}
527527
if b.ExposeFdListeners {
528-
options = append(options, &params.ServerOptionDoubleWord{Name: "expose-fd", Value: "listeners"})
528+
options = append(options, &params.BindOptionDoubleWord{Name: "expose-fd", Value: "listeners"})
529529
}
530530
if b.Sslv3 == "enabled" ||
531531
b.ForceSslv3 {
532-
options = append(options, &params.ServerOptionWord{Name: "force-sslv3"})
532+
options = append(options, &params.BindOptionWord{Name: "force-sslv3"})
533533
}
534534
if b.Sslv3 == "disabled" ||
535535
b.NoSslv3 {
536-
options = append(options, &params.ServerOptionWord{Name: "no-sslv3"})
536+
options = append(options, &params.BindOptionWord{Name: "no-sslv3"})
537537
}
538538
if b.Tlsv10 == "enabled" ||
539539
b.ForceTlsv10 {
540-
options = append(options, &params.ServerOptionWord{Name: "force-tlsv10"})
540+
options = append(options, &params.BindOptionWord{Name: "force-tlsv10"})
541541
}
542542
if b.Tlsv10 == "disabled" ||
543543
b.NoTlsv10 {
544-
options = append(options, &params.ServerOptionWord{Name: "no-tlsv10"})
544+
options = append(options, &params.BindOptionWord{Name: "no-tlsv10"})
545545
}
546546
if b.Tlsv11 == "enabled" ||
547547
b.ForceTlsv11 {
548-
options = append(options, &params.ServerOptionWord{Name: "force-tlsv11"})
548+
options = append(options, &params.BindOptionWord{Name: "force-tlsv11"})
549549
}
550550
if b.Tlsv11 == "disabled" ||
551551
b.NoTlsv11 {
552-
options = append(options, &params.ServerOptionWord{Name: "no-tlsv11"})
552+
options = append(options, &params.BindOptionWord{Name: "no-tlsv11"})
553553
}
554554
if b.Tlsv12 == "enabled" ||
555555
b.ForceTlsv12 {
556-
options = append(options, &params.ServerOptionWord{Name: "force-tlsv12"})
556+
options = append(options, &params.BindOptionWord{Name: "force-tlsv12"})
557557
}
558558
if b.Tlsv12 == "disabled" ||
559559
b.NoTlsv12 {
560-
options = append(options, &params.ServerOptionWord{Name: "no-tlsv12"})
560+
options = append(options, &params.BindOptionWord{Name: "no-tlsv12"})
561561
}
562562
if b.Tlsv13 == "enabled" ||
563563
b.ForceTlsv13 {
564-
options = append(options, &params.ServerOptionWord{Name: "force-tlsv13"})
564+
options = append(options, &params.BindOptionWord{Name: "force-tlsv13"})
565565
}
566566
if b.Tlsv13 == "disabled" ||
567567
b.NoTlsv13 {
568-
options = append(options, &params.ServerOptionWord{Name: "no-tlsv13"})
568+
options = append(options, &params.BindOptionWord{Name: "no-tlsv13"})
569569
}
570570
if b.GenerateCertificates {
571-
options = append(options, &params.ServerOptionWord{Name: "generate-certificates"})
571+
options = append(options, &params.BindOptionWord{Name: "generate-certificates"})
572572
}
573573
if b.Gid != 0 {
574574
options = append(options, &params.BindOptionValue{Name: "gid", Value: strconv.FormatInt(b.Gid, 10)})
@@ -607,16 +607,16 @@ func serializeBindParams(b models.BindParams, path string) []params.BindOption {
607607
options = append(options, &params.BindOptionValue{Name: "nbconn", Value: strconv.FormatInt(b.Nbconn, 10)})
608608
}
609609
if b.NoCaNames {
610-
options = append(options, &params.ServerOptionWord{Name: "no-ca-names"})
610+
options = append(options, &params.BindOptionWord{Name: "no-ca-names"})
611611
}
612612
if b.NoTLSTickets {
613-
options = append(options, &params.ServerOptionWord{Name: "no-tls-tickets"})
613+
options = append(options, &params.BindOptionWord{Name: "no-tls-tickets"})
614614
}
615615
if b.Npn != "" {
616616
options = append(options, &params.BindOptionValue{Name: "npn", Value: b.Npn})
617617
}
618618
if b.PreferClientCiphers {
619-
options = append(options, &params.ServerOptionWord{Name: "prefer-client-ciphers"})
619+
options = append(options, &params.BindOptionWord{Name: "prefer-client-ciphers"})
620620
}
621621
if b.Proto != "" {
622622
options = append(options, &params.BindOptionValue{Name: "proto", Value: b.Proto})
@@ -631,10 +631,10 @@ func serializeBindParams(b models.BindParams, path string) []params.BindOption {
631631
options = append(options, &params.BindOptionValue{Name: "ssl-min-ver", Value: b.SslMinVer})
632632
}
633633
if b.StrictSni {
634-
options = append(options, &params.ServerOptionWord{Name: "strict-sni"})
634+
options = append(options, &params.BindOptionWord{Name: "strict-sni"})
635635
}
636636
if b.Tfo {
637-
options = append(options, &params.ServerOptionWord{Name: "tfo"})
637+
options = append(options, &params.BindOptionWord{Name: "tfo"})
638638
}
639639
if b.Thread != "" {
640640
options = append(options, &params.BindOptionValue{Name: "thread", Value: b.Thread})

0 commit comments

Comments
 (0)