diff --git a/connectivity/acn.go b/connectivity/acn.go index f6b67b4..b6b1d06 100644 --- a/connectivity/acn.go +++ b/connectivity/acn.go @@ -28,6 +28,9 @@ type ACN interface { // Sets the calback function to be called when ACN status changes SetStatusCallback(callback func(int, string)) + // Restart the underlying connection + Restart() + // Open takes a hostname and returns a net.conn to the derived endpoint // Open allows a client to resolve various hostnames to connections // The supported types are onions address are: diff --git a/connectivity/localProvider.go b/connectivity/localProvider.go index be8dc48..96440fb 100644 --- a/connectivity/localProvider.go +++ b/connectivity/localProvider.go @@ -38,6 +38,10 @@ func (lp *localProvider) SetStatusCallback(callback func(int, string)) { // nop } +func (lp *localProvider) Restart() { + // noop +} + // WaitTillBootstrapped Blocks until underlying network is bootstrapped func (lp *localProvider) WaitTillBootstrapped() { } diff --git a/connectivity/torProvider.go b/connectivity/torProvider.go index 473efb7..07fde26 100644 --- a/connectivity/torProvider.go +++ b/connectivity/torProvider.go @@ -174,6 +174,13 @@ func (tp *torProvider) Open(hostname string) (net.Conn, string, error) { return conn, resolvedHostname, err } +func (tp *torProvider) Restart() { + if tp.statusCallback != nil { + tp.statusCallback(0, "rebooting") + } + tp.restart() +} + func (tp *torProvider) Close() { for _, child := range tp.childListeners { child.Close() diff --git a/go.mod b/go.mod index 382f90e..7fcefae 100644 --- a/go.mod +++ b/go.mod @@ -9,3 +9,5 @@ require ( golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3 // indirect golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 // indirect ) + +go 1.13