55 "context"
66 "fmt"
77 "io"
8- "net"
98 "net/http"
109 "os"
1110
@@ -16,7 +15,6 @@ import (
1615 "github.com/odpf/salt/log"
1716 "github.com/prometheus/client_golang/prometheus"
1817 slackapi "github.com/slack-go/slack"
19- "github.com/soheilhy/cmux"
2018 "google.golang.org/grpc"
2119
2220 "github.com/odpf/optimus/config"
@@ -60,7 +58,6 @@ type OptimusServer struct {
6058 key * [keyLength ]byte
6159
6260 serverAddr string
63- mux cmux.CMux
6461 grpcServer * grpc.Server
6562 httpServer * http.Server
6663
@@ -85,7 +82,6 @@ func New(conf config.ServerConfig) (*OptimusServer, error) {
8582 server .setupTelemetry ,
8683 server .setupAppKey ,
8784 server .setupDB ,
88- server .setupMux ,
8985 server .setupGRPCServer ,
9086 server .setupHandlers ,
9187 server .setupMonitoring ,
@@ -172,16 +168,6 @@ func (s *OptimusServer) setupDB() error {
172168 return nil
173169}
174170
175- func (s * OptimusServer ) setupMux () error {
176- ln , err := net .Listen ("tcp" , s .serverAddr )
177- if err != nil {
178- return err
179- }
180-
181- s .mux = cmux .New (ln )
182- return nil
183- }
184-
185171func (s * OptimusServer ) setupGRPCServer () error {
186172 var err error
187173 s .grpcServer , err = setupGRPCServer (s .logger )
@@ -195,40 +181,20 @@ func (s *OptimusServer) setupMonitoring() error {
195181}
196182
197183func (s * OptimusServer ) setupHTTPProxy () error {
198- srv , cleanup , err := prepareHTTPProxy (s .serverAddr )
184+ srv , cleanup , err := prepareHTTPProxy (s .serverAddr , s . grpcServer )
199185 s .httpServer = srv
200186 s .cleanupFn = append (s .cleanupFn , cleanup )
201187 return err
202188}
203189
204190func (s * OptimusServer ) startListening () {
205191 // run our server in a goroutine so that it doesn't block to wait for termination requests
206- // We first match a request first for grpc
207- grpcLn := s .mux .MatchWithWriters (
208- cmux .HTTP2MatchHeaderFieldSendSettings ("content-type" , "application/grpc" ))
209- // if it does not match grpc, we send the request to http
210- httpL := s .mux .Match (cmux .Any ())
211-
212- go func () {
213- // Start listening on grpc server
214- if err := s .grpcServer .Serve (grpcLn ); err != nil {
215- s .logger .Info ("shutting down grpc server" )
216- }
217- }()
218-
219- go func () {
220- // Start listening on http server
221- err := s .httpServer .Serve (httpL )
222- if err != nil {
223- s .logger .Info ("Shutting http proxy" )
224- }
225- }()
226-
227192 go func () {
228- // Start mux server
229193 s .logger .Info ("Listening at" , "address" , s .serverAddr )
230- if err := s .mux .Serve (); err != nil {
231- s .logger .Info ("server error" , "error" , err )
194+ if err := s .httpServer .ListenAndServe (); err != nil {
195+ if err != http .ErrServerClosed {
196+ s .logger .Fatal ("server error" , "error" , err )
197+ }
232198 }
233199 }()
234200}
0 commit comments