@ -263,7 +263,7 @@ func (n *Node) startRPC(services map[reflect.Type]Service) error {
n . stopInProc ( )
return err
}
if err := n . startHTTP ( n . httpEndpoint , apis , n . config . HTTPModules , n . config . HTTPCors ) ; err != nil {
if err := n . startHTTP ( n . httpEndpoint , apis , n . config . HTTPModules , n . config . HTTPCors , n . config . HTTPVirtualHosts ) ; err != nil {
n . stopIPC ( )
n . stopInProc ( )
return err
@ -287,7 +287,7 @@ func (n *Node) startInProc(apis []rpc.API) error {
if err := handler . RegisterName ( api . Namespace , api . Service ) ; err != nil {
return err
}
n . log . Debug ( fmt . Sprintf ( "InProc registered %T under '%s'" , api . Service , api . Namespace ) )
n . log . Debug ( "InProc registered" , "service" , api . Service , "namespace" , api . Namespace )
}
n . inprocHandler = handler
return nil
@ -313,7 +313,7 @@ func (n *Node) startIPC(apis []rpc.API) error {
if err := handler . RegisterName ( api . Namespace , api . Service ) ; err != nil {
return err
}
n . log . Debug ( fmt . Sprintf ( "IPC registered %T under '%s'" , api . Service , api . Namespace ) )
n . log . Debug ( "IPC registered" , "service" , api . Service , "namespace" , api . Namespace )
}
// All APIs registered, start the IPC listener
var (
@ -324,7 +324,7 @@ func (n *Node) startIPC(apis []rpc.API) error {
return err
}
go func ( ) {
n . log . Info ( fmt . Sprintf ( "IPC endpoint opened: %s" , n . ipcEndpoint ) )
n . log . Info ( "IPC endpoint opened" , "url" , fmt . Sprintf ( "%s" , n . ipcEndpoint ) )
for {
conn , err := listener . Accept ( )
@ -337,7 +337,7 @@ func (n *Node) startIPC(apis []rpc.API) error {
return
}
// Not closed, just some error; report and continue
n . log . Error ( fmt . Sprintf ( "IPC accept failed: %v ", err ) )
n . log . Error ( "IPC accept failed" , "err ", err )
continue
}
go handler . ServeCodec ( rpc . NewJSONCodec ( conn ) , rpc . OptionMethodInvocation | rpc . OptionSubscriptions )
@ -356,7 +356,7 @@ func (n *Node) stopIPC() {
n . ipcListener . Close ( )
n . ipcListener = nil
n . log . Info ( fmt . Sprintf ( "IPC endpoint closed: %s ", n . ipcEndpoint ) )
n . log . Info ( "IPC endpoint closed" , "endpoint ", n . ipcEndpoint )
}
if n . ipcHandler != nil {
n . ipcHandler . Stop ( )
@ -365,7 +365,7 @@ func (n *Node) stopIPC() {
}
// startHTTP initializes and starts the HTTP RPC endpoint.
func ( n * Node ) startHTTP ( endpoint string , apis [ ] rpc . API , modules [ ] string , cors [ ] string ) error {
func ( n * Node ) startHTTP ( endpoint string , apis [ ] rpc . API , modules [ ] string , cors [ ] string , vhosts [ ] string ) error {
// Short circuit if the HTTP endpoint isn't being exposed
if endpoint == "" {
return nil
@ -382,7 +382,7 @@ func (n *Node) startHTTP(endpoint string, apis []rpc.API, modules []string, cors
if err := handler . RegisterName ( api . Namespace , api . Service ) ; err != nil {
return err
}
n . log . Debug ( fmt . Sprintf ( "HTTP registered %T under '%s'" , api . Service , api . Namespace ) )
n . log . Debug ( "HTTP registered" , "service" , api . Service , "namespace" , api . Namespace )
}
}
// All APIs registered, start the HTTP listener
@ -393,9 +393,8 @@ func (n *Node) startHTTP(endpoint string, apis []rpc.API, modules []string, cors
if listener , err = net . Listen ( "tcp" , endpoint ) ; err != nil {
return err
}
go rpc . NewHTTPServer ( cors , handler ) . Serve ( listener )
n . log . Info ( fmt . Sprintf ( "HTTP endpoint opened: http://%s" , endpoint ) )
go rpc . NewHTTPServer ( cors , vhosts , handler ) . Serve ( listener )
n . log . Info ( "HTTP endpoint opened" , "url" , fmt . Sprintf ( "http://%s" , endpoint ) , "cors" , strings . Join ( cors , "," ) , "hvosts" , strings . Join ( vhosts , "," ) )
// All listeners booted successfully
n . httpEndpoint = endpoint
n . httpListener = listener
@ -410,7 +409,7 @@ func (n *Node) stopHTTP() {
n . httpListener . Close ( )
n . httpListener = nil
n . log . Info ( fmt . Sprintf ( "HTTP endpoint closed: http://%s" , n . httpEndpoint ) )
n . log . Info ( "HTTP endpoint closed" , "url" , fmt . Sprintf ( "http://%s" , n . httpEndpoint ) )
}
if n . httpHandler != nil {
n . httpHandler . Stop ( )
@ -436,7 +435,7 @@ func (n *Node) startWS(endpoint string, apis []rpc.API, modules []string, wsOrig
if err := handler . RegisterName ( api . Namespace , api . Service ) ; err != nil {
return err
}
n . log . Debug ( fmt . Sprintf ( "WebSocket registered %T under '%s'" , api . Service , api . Namespace ) )
n . log . Debug ( "WebSocket registered" , "service" , api . Service , "namespace" , api . Namespace )
}
}
// All APIs registered, start the HTTP listener
@ -448,7 +447,7 @@ func (n *Node) startWS(endpoint string, apis []rpc.API, modules []string, wsOrig
return err
}
go rpc . NewWSServer ( wsOrigins , handler ) . Serve ( listener )
n . log . Info ( fmt . Sprintf ( "WebSocket endpoint opened: ws://%s" , listener . Addr ( ) ) )
n . log . Info ( "WebSocket endpoint opened" , "url" , fmt . Sprintf ( "ws://%s" , listener . Addr ( ) ) )
// All listeners booted successfully
n . wsEndpoint = endpoint
@ -464,7 +463,7 @@ func (n *Node) stopWS() {
n . wsListener . Close ( )
n . wsListener = nil
n . log . Info ( fmt . Sprintf ( "WebSocket endpoint closed: ws://%s" , n . wsEndpoint ) )
n . log . Info ( "WebSocket endpoint closed" , "url" , fmt . Sprintf ( "ws://%s" , n . wsEndpoint ) )
}
if n . wsHandler != nil {
n . wsHandler . Stop ( )