Skip to content

Commit

Permalink
BUG/MEDIUM: Fix bind updates without restart
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
oliwer committed Feb 13, 2025
1 parent 428abe2 commit bbbe085
Showing 1 changed file with 17 additions and 17 deletions.
34 changes: 17 additions & 17 deletions configuration/bind.go
Original file line number Diff line number Diff line change
Expand Up @@ -492,25 +492,25 @@ func serializeBindParams(b models.BindParams, path string) (options []params.Bin
options = append(options, &params.BindOptionWord{Name: "defer-accept"})
}
if b.ExposeFdListeners {
options = append(options, &params.ServerOptionDoubleWord{Name: "expose-fd", Value: "listeners"})
options = append(options, &params.BindOptionDoubleWord{Name: "expose-fd", Value: "listeners"})
}
if b.ForceSslv3 {
options = append(options, &params.ServerOptionWord{Name: "force-sslv3"})
options = append(options, &params.BindOptionWord{Name: "force-sslv3"})
}
if b.ForceTlsv10 {
options = append(options, &params.ServerOptionWord{Name: "force-tlsv10"})
options = append(options, &params.BindOptionWord{Name: "force-tlsv10"})
}
if b.ForceTlsv11 {
options = append(options, &params.ServerOptionWord{Name: "force-tlsv11"})
options = append(options, &params.BindOptionWord{Name: "force-tlsv11"})
}
if b.ForceTlsv12 {
options = append(options, &params.ServerOptionWord{Name: "force-tlsv12"})
options = append(options, &params.BindOptionWord{Name: "force-tlsv12"})
}
if b.ForceTlsv13 {
options = append(options, &params.ServerOptionWord{Name: "force-tlsv13"})
options = append(options, &params.BindOptionWord{Name: "force-tlsv13"})
}
if b.GenerateCertificates {
options = append(options, &params.ServerOptionWord{Name: "generate-certificates"})
options = append(options, &params.BindOptionWord{Name: "generate-certificates"})
}
if b.Gid != 0 {
options = append(options, &params.BindOptionValue{Name: "gid", Value: strconv.FormatInt(b.Gid, 10)})
Expand Down Expand Up @@ -546,31 +546,31 @@ func serializeBindParams(b models.BindParams, path string) (options []params.Bin
options = append(options, &params.BindOptionValue{Name: "nbconn", Value: strconv.FormatInt(b.Nbconn, 10)})
}
if b.NoCaNames {
options = append(options, &params.ServerOptionWord{Name: "no-ca-names"})
options = append(options, &params.BindOptionWord{Name: "no-ca-names"})
}
if b.NoSslv3 {
options = append(options, &params.ServerOptionWord{Name: "no-sslv3"})
options = append(options, &params.BindOptionWord{Name: "no-sslv3"})
}
if b.NoTLSTickets {
options = append(options, &params.ServerOptionWord{Name: "no-tls-tickets"})
options = append(options, &params.BindOptionWord{Name: "no-tls-tickets"})
}
if b.NoTlsv10 {
options = append(options, &params.ServerOptionWord{Name: "no-tlsv10"})
options = append(options, &params.BindOptionWord{Name: "no-tlsv10"})
}
if b.NoTlsv11 {
options = append(options, &params.ServerOptionWord{Name: "no-tlsv11"})
options = append(options, &params.BindOptionWord{Name: "no-tlsv11"})
}
if b.NoTlsv12 {
options = append(options, &params.ServerOptionWord{Name: "no-tlsv12"})
options = append(options, &params.BindOptionWord{Name: "no-tlsv12"})
}
if b.NoTlsv13 {
options = append(options, &params.ServerOptionWord{Name: "no-tlsv13"})
options = append(options, &params.BindOptionWord{Name: "no-tlsv13"})
}
if b.Npn != "" {
options = append(options, &params.BindOptionValue{Name: "npn", Value: b.Npn})
}
if b.PreferClientCiphers {
options = append(options, &params.ServerOptionWord{Name: "prefer-client-ciphers"})
options = append(options, &params.BindOptionWord{Name: "prefer-client-ciphers"})
}
if b.Proto != "" {
options = append(options, &params.BindOptionValue{Name: "proto", Value: b.Proto})
Expand All @@ -585,10 +585,10 @@ func serializeBindParams(b models.BindParams, path string) (options []params.Bin
options = append(options, &params.BindOptionValue{Name: "ssl-min-ver", Value: b.SslMinVer})
}
if b.StrictSni {
options = append(options, &params.ServerOptionWord{Name: "strict-sni"})
options = append(options, &params.BindOptionWord{Name: "strict-sni"})
}
if b.Tfo {
options = append(options, &params.ServerOptionWord{Name: "tfo"})
options = append(options, &params.BindOptionWord{Name: "tfo"})
}
if b.Thread != "" {
options = append(options, &params.BindOptionValue{Name: "thread", Value: b.Thread})
Expand Down

0 comments on commit bbbe085

Please sign in to comment.