Skip to content

Commit

Permalink
export header list sizes in dialopts/serveropts
Browse files Browse the repository at this point in the history
  • Loading branch information
ZhouyihaiDing committed Mar 11, 2024
1 parent 7c37770 commit 0650caf
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 6 deletions.
13 changes: 13 additions & 0 deletions default_dial_option_server_option_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,3 +132,16 @@ func (s) TestJoinServerOption(t *testing.T) {
t.Fatalf("Unexpected s.opts.initialWindowSize: %d != %d", s.opts.initialWindowSize, initialWindowSize)
}
}

// funcTestHeaderListSizeDialOptionServerOption tests
func (s) TestHeaderListSizeDialOptionServerOption(t *testing.T) {
const maxHeaderListSize uint32 = 998765
clientHeaderListSize := WithMaxHeaderListSize(maxHeaderListSize)
if clientHeaderListSize.(MaxHeaderListSizeDialOption).MaxHeaderListSize != maxHeaderListSize {
t.Fatalf("Unexpected s.opts.MaxHeaderListSizeDialOption.MaxHeaderListSize: %d != %d", clientHeaderListSize, maxHeaderListSize)
}
serverHeaderListSize := MaxHeaderListSize(maxHeaderListSize)
if serverHeaderListSize.(*MaxHeaderListSizeServerOption).MaxHeaderListSize != maxHeaderListSize {
t.Fatalf("Unexpected s.opts.MaxHeaderListSizeDialOption.MaxHeaderListSize: %d != %d", serverHeaderListSize, maxHeaderListSize)
}
}
17 changes: 14 additions & 3 deletions dialoptions.go
Original file line number Diff line number Diff line change
Expand Up @@ -601,12 +601,23 @@ func WithDisableRetry() DialOption {
})
}


// MaxHeaderListSizeDialOption is a DialOption that specifies the maximum
// (uncompressed) size of header list that the client is prepared to accept.
type MaxHeaderListSizeDialOption struct {
MaxHeaderListSize uint32
}

func (o MaxHeaderListSizeDialOption) apply(do *dialOptions) {
do.copts.MaxHeaderListSize = &o.MaxHeaderListSize
}

// WithMaxHeaderListSize returns a DialOption that specifies the maximum
// (uncompressed) size of header list that the client is prepared to accept.
func WithMaxHeaderListSize(s uint32) DialOption {
return newFuncDialOption(func(o *dialOptions) {
o.copts.MaxHeaderListSize = &s
})
return MaxHeaderListSizeDialOption{
MaxHeaderListSize: s,
}
}

// WithDisableHealthCheck disables the LB channel health checking for all
Expand Down
16 changes: 13 additions & 3 deletions server.go
Original file line number Diff line number Diff line change
Expand Up @@ -528,12 +528,22 @@ func ConnectionTimeout(d time.Duration) ServerOption {
})
}

// MaxHeaderListSizeServerOption is a ServerOption that sets the max
// (uncompressed) size of header list that the server is prepared to accept.
type MaxHeaderListSizeServerOption struct {
MaxHeaderListSize uint32
}

func (o MaxHeaderListSizeServerOption) apply(so *serverOptions) {
so.maxHeaderListSize = &o.MaxHeaderListSize
}

// MaxHeaderListSize returns a ServerOption that sets the max (uncompressed) size
// of header list that the server is prepared to accept.
func MaxHeaderListSize(s uint32) ServerOption {
return newFuncServerOption(func(o *serverOptions) {
o.maxHeaderListSize = &s
})
return &MaxHeaderListSizeServerOption{
MaxHeaderListSize: s,
}
}

// HeaderTableSize returns a ServerOption that sets the size of dynamic
Expand Down

0 comments on commit 0650caf

Please sign in to comment.