@@ -27,34 +27,50 @@ import (
2727)
2828
2929// StartHTTPEndpoint starts the HTTP RPC endpoint, configured with cors/vhosts/modules
30- func StartHTTPEndpoint (endpoint string , apis []API , modules []string , cors []string , vhosts []string , timeouts HTTPTimeouts , exposeAll bool ) (net.Listener , * Server , error ) {
30+ func StartHTTPEndpoint (endpoint string , privateEndpoint string , apis []API , modules []string , cors []string , vhosts []string , timeouts HTTPTimeouts , exposeAll bool ) (net. Listener , * Server , net.Listener , * Server , error ) {
3131 // Generate the whitelist based on the allowed modules
3232 whitelist := make (map [string ]bool )
3333 for _ , module := range modules {
3434 whitelist [module ] = true
3535 }
3636 // Register all the APIs exposed by the services
3737 handler := NewServer ()
38+ privateHandler := NewServer ()
39+ privateBind := false
3840 for _ , api := range apis {
3941 if exposeAll || whitelist [api .Namespace ] || (len (whitelist ) == 0 && api .Public ) {
4042 if err := handler .RegisterName (api .Namespace , api .Service ); err != nil {
41- return nil , nil , err
43+ return nil , nil , nil , nil , err
4244 }
4345 log .Debug ("HTTP registered" , "namespace" , api .Namespace )
46+ } else if ! api .Public {
47+ if err := privateHandler .RegisterName (api .Namespace , api .Service ); err != nil {
48+ return nil , nil , nil , nil , err
49+ }
50+ privateBind = true
51+ log .Debug ("Private HTTP API registered" , "namespace" , api .Namespace )
4452 }
4553 }
4654 // All APIs registered, start the HTTP listener
4755 var (
4856 listener net.Listener
57+ privateListener net.Listener
4958 err error
5059 )
5160 if listener , err = net .Listen ("tcp" , endpoint ); err != nil {
52- return nil , nil , err
61+ return nil , nil , nil , nil , err
5362 }
5463
5564 go NewHTTPServer (cors , vhosts , timeouts , handler ).Serve (listener )
5665
57- return listener , handler , err
66+ if privateBind && len (privateEndpoint ) > 0 {
67+ if privateListener , err = net .Listen ("tcp" , privateEndpoint ); err != nil {
68+ return nil , nil , nil , nil , err
69+ }
70+ go NewHTTPServer (cors , vhosts , timeouts , privateHandler ).Serve (privateListener )
71+ }
72+
73+ return listener , handler , privateListener , privateHandler , err
5874}
5975
6076// StartWSEndpoint starts chain websocket endpoint
0 commit comments