rpc/ws: switch to golang.org/x/net
code.google.com/p/go.net is deprecated and will cause problems in future versions of Go.
This commit is contained in:
parent
34d0e1b2c3
commit
bb346a3ae1
9
Godeps/Godeps.json
generated
9
Godeps/Godeps.json
generated
@ -30,11 +30,6 @@
|
|||||||
"Comment": "null-236",
|
"Comment": "null-236",
|
||||||
"Rev": "69e2a90ed92d03812364aeb947b7068dc42e561e"
|
"Rev": "69e2a90ed92d03812364aeb947b7068dc42e561e"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"ImportPath": "code.google.com/p/go.net/websocket",
|
|
||||||
"Comment": "null-173",
|
|
||||||
"Rev": "4231557d7c726df4cf9a4e8cdd8a417c8c200bdb"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"ImportPath": "code.google.com/p/snappy-go/snappy",
|
"ImportPath": "code.google.com/p/snappy-go/snappy",
|
||||||
"Comment": "null-15",
|
"Comment": "null-15",
|
||||||
@ -105,6 +100,10 @@
|
|||||||
"ImportPath": "golang.org/x/crypto/pbkdf2",
|
"ImportPath": "golang.org/x/crypto/pbkdf2",
|
||||||
"Rev": "4ed45ec682102c643324fae5dff8dab085b6c300"
|
"Rev": "4ed45ec682102c643324fae5dff8dab085b6c300"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"ImportPath": "golang.org/x/net/websocket",
|
||||||
|
"Rev": "59b0df9b1f7abda5aab0495ee54f408daf182ce7"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "gopkg.in/check.v1",
|
"ImportPath": "gopkg.in/check.v1",
|
||||||
"Rev": "64131543e7896d5bcc6bd5a76287eb75ea96c673"
|
"Rev": "64131543e7896d5bcc6bd5a76287eb75ea96c673"
|
||||||
|
@ -64,6 +64,20 @@ func Dial(url_, protocol, origin string) (ws *Conn, err error) {
|
|||||||
return DialConfig(config)
|
return DialConfig(config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var portMap = map[string]string{
|
||||||
|
"ws": "80",
|
||||||
|
"wss": "443",
|
||||||
|
}
|
||||||
|
|
||||||
|
func parseAuthority(location *url.URL) string {
|
||||||
|
if _, ok := portMap[location.Scheme]; ok {
|
||||||
|
if _, _, err := net.SplitHostPort(location.Host); err != nil {
|
||||||
|
return net.JoinHostPort(location.Host, portMap[location.Scheme])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return location.Host
|
||||||
|
}
|
||||||
|
|
||||||
// DialConfig opens a new client connection to a WebSocket with a config.
|
// DialConfig opens a new client connection to a WebSocket with a config.
|
||||||
func DialConfig(config *Config) (ws *Conn, err error) {
|
func DialConfig(config *Config) (ws *Conn, err error) {
|
||||||
var client net.Conn
|
var client net.Conn
|
||||||
@ -75,10 +89,10 @@ func DialConfig(config *Config) (ws *Conn, err error) {
|
|||||||
}
|
}
|
||||||
switch config.Location.Scheme {
|
switch config.Location.Scheme {
|
||||||
case "ws":
|
case "ws":
|
||||||
client, err = net.Dial("tcp", config.Location.Host)
|
client, err = net.Dial("tcp", parseAuthority(config.Location))
|
||||||
|
|
||||||
case "wss":
|
case "wss":
|
||||||
client, err = tls.Dial("tcp", config.Location.Host, config.TlsConfig)
|
client, err = tls.Dial("tcp", parseAuthority(config.Location), config.TlsConfig)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
err = ErrBadScheme
|
err = ErrBadScheme
|
@ -8,7 +8,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
"code.google.com/p/go.net/websocket"
|
"golang.org/x/net/websocket"
|
||||||
)
|
)
|
||||||
|
|
||||||
// This example demonstrates a trivial client.
|
// This example demonstrates a trivial client.
|
@ -8,7 +8,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"code.google.com/p/go.net/websocket"
|
"golang.org/x/net/websocket"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Echo the data received on the WebSocket.
|
// Echo the data received on the WebSocket.
|
@ -339,3 +339,76 @@ func TestSmallBuffer(t *testing.T) {
|
|||||||
}
|
}
|
||||||
conn.Close()
|
conn.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var parseAuthorityTests = []struct {
|
||||||
|
in *url.URL
|
||||||
|
out string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
&url.URL{
|
||||||
|
Scheme: "ws",
|
||||||
|
Host: "www.google.com",
|
||||||
|
},
|
||||||
|
"www.google.com:80",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
&url.URL{
|
||||||
|
Scheme: "wss",
|
||||||
|
Host: "www.google.com",
|
||||||
|
},
|
||||||
|
"www.google.com:443",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
&url.URL{
|
||||||
|
Scheme: "ws",
|
||||||
|
Host: "www.google.com:80",
|
||||||
|
},
|
||||||
|
"www.google.com:80",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
&url.URL{
|
||||||
|
Scheme: "wss",
|
||||||
|
Host: "www.google.com:443",
|
||||||
|
},
|
||||||
|
"www.google.com:443",
|
||||||
|
},
|
||||||
|
// some invalid ones for parseAuthority. parseAuthority doesn't
|
||||||
|
// concern itself with the scheme unless it actually knows about it
|
||||||
|
{
|
||||||
|
&url.URL{
|
||||||
|
Scheme: "http",
|
||||||
|
Host: "www.google.com",
|
||||||
|
},
|
||||||
|
"www.google.com",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
&url.URL{
|
||||||
|
Scheme: "http",
|
||||||
|
Host: "www.google.com:80",
|
||||||
|
},
|
||||||
|
"www.google.com:80",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
&url.URL{
|
||||||
|
Scheme: "asdf",
|
||||||
|
Host: "127.0.0.1",
|
||||||
|
},
|
||||||
|
"127.0.0.1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
&url.URL{
|
||||||
|
Scheme: "asdf",
|
||||||
|
Host: "www.google.com",
|
||||||
|
},
|
||||||
|
"www.google.com",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestParseAuthority(t *testing.T) {
|
||||||
|
for _, tt := range parseAuthorityTests {
|
||||||
|
out := parseAuthority(tt.in)
|
||||||
|
if out != tt.out {
|
||||||
|
t.Errorf("got %v; want %v", out, tt.out)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -21,10 +21,10 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"code.google.com/p/go.net/websocket"
|
|
||||||
"github.com/ethereum/go-ethereum/logger"
|
"github.com/ethereum/go-ethereum/logger"
|
||||||
"github.com/ethereum/go-ethereum/rpc"
|
"github.com/ethereum/go-ethereum/rpc"
|
||||||
"github.com/ethereum/go-ethereum/xeth"
|
"github.com/ethereum/go-ethereum/xeth"
|
||||||
|
"golang.org/x/net/websocket"
|
||||||
)
|
)
|
||||||
|
|
||||||
var wslogger = logger.NewLogger("RPC-WS")
|
var wslogger = logger.NewLogger("RPC-WS")
|
||||||
|
Loading…
Reference in New Issue
Block a user