Fix issue where the control socket should not be used as a streamsession
This commit is contained in:
2
Makefile
2
Makefile
@ -1,6 +1,6 @@
|
||||
|
||||
USER_GH=eyedeekay
|
||||
VERSION=0.32.5
|
||||
VERSION=0.32.51
|
||||
packagename=gosam
|
||||
|
||||
echo: fmt
|
||||
|
17
accept.go
17
accept.go
@ -25,24 +25,23 @@ func (c *Client) Listen() (net.Listener, error) {
|
||||
func (c *Client) ListenI2P(dest string) (net.Listener, error) {
|
||||
var err error
|
||||
c.destination, err = c.CreateStreamSession(dest)
|
||||
d := c.destination
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if c.d == nil {
|
||||
c.d, err = c.NewClient(c.NewID())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println("Listening on destination:", c.Base32()+".b32.i2p")
|
||||
|
||||
c, err = c.NewClient(c.id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
c.destination = d
|
||||
|
||||
if c.debug {
|
||||
c.SamConn = WrapConn(c.SamConn)
|
||||
}
|
||||
|
||||
return c.d, nil
|
||||
return c, nil
|
||||
}
|
||||
|
||||
// Accept accepts a connection on a listening goSam.Client(Implements net.Listener)
|
||||
|
11
client.go
11
client.go
@ -27,7 +27,7 @@ type Client struct {
|
||||
SamConn net.Conn // Control socket
|
||||
SamDGConn DatagramConn // Datagram socket
|
||||
rd *bufio.Reader
|
||||
d *Client
|
||||
// d *Client
|
||||
|
||||
sigType string
|
||||
destination string
|
||||
@ -93,11 +93,16 @@ func NewClient(addr string) (*Client, error) {
|
||||
return NewClientFromOptions(SetAddr(addr))
|
||||
}
|
||||
|
||||
func NewID() int32 {
|
||||
id := rand.Int31n(math.MaxInt32)
|
||||
fmt.Printf("Initializing new ID: %d\n", id)
|
||||
return id
|
||||
}
|
||||
|
||||
// NewID generates a random number to use as an tunnel name
|
||||
func (c *Client) NewID() int32 {
|
||||
if c.id == 0 {
|
||||
c.id = rand.Int31n(math.MaxInt32)
|
||||
fmt.Printf("Initializing new ID: %d\n", c.id)
|
||||
c.id = NewID()
|
||||
}
|
||||
return c.id
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ func TestCompositeClient(t *testing.T) {
|
||||
// http.HandleFunc("/", HelloServer)
|
||||
go http.Serve(listener3, nil)
|
||||
|
||||
sam, err := NewClientFromOptions(SetDebug(true))
|
||||
sam, err := NewClientFromOptions(SetDebug(false))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
}
|
||||
@ -55,27 +55,32 @@ func TestCompositeClient(t *testing.T) {
|
||||
}
|
||||
client := &http.Client{Transport: tr}
|
||||
defer sam.Close()
|
||||
time.Sleep(time.Second * 30)
|
||||
x := 0
|
||||
for x < 15 {
|
||||
time.Sleep(time.Second * 2)
|
||||
t.Log("waiting a little while for services to register", (30 - (x * 2)))
|
||||
x++
|
||||
}
|
||||
go func() {
|
||||
resp, err := client.Get("http://" + listener.Addr().(i2pkeys.I2PAddr).Base32())
|
||||
if err != nil {
|
||||
t.Fatalf("Get Error: %q\n", err)
|
||||
t.Fatalf("Get Error test 1: %q\n", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
}()
|
||||
time.Sleep(time.Second * 15)
|
||||
//time.Sleep(time.Second * 15)
|
||||
go func() {
|
||||
resp, err := client.Get("http://" + listener2.Addr().(i2pkeys.I2PAddr).Base32())
|
||||
if err != nil {
|
||||
t.Fatalf("Get Error: %q\n", err)
|
||||
t.Fatalf("Get Error test 2: %q\n", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
}()
|
||||
time.Sleep(time.Second * 15)
|
||||
//time.Sleep(time.Second * 15)
|
||||
go func() {
|
||||
resp, err := client.Get("http://" + listener3.Addr().(i2pkeys.I2PAddr).Base32())
|
||||
if err != nil {
|
||||
t.Fatalf("Get Error: %q\n", err)
|
||||
t.Fatalf("Get Error test 3: %q\n", err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
}()
|
||||
@ -84,7 +89,7 @@ func TestCompositeClient(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestClientHello(t *testing.T) {
|
||||
client, err := NewClientFromOptions(SetDebug(true))
|
||||
client, err := NewClientFromOptions(SetDebug(false))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
}
|
||||
@ -95,7 +100,7 @@ func TestClientHello(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestNewDestination(t *testing.T) {
|
||||
client, err := NewClientFromOptions(SetDebug(true))
|
||||
client, err := NewClientFromOptions(SetDebug(false))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
}
|
||||
|
@ -20,7 +20,6 @@ type DatagramConn interface {
|
||||
}
|
||||
|
||||
/**
|
||||
var conn DatagramConn = &Client{}
|
||||
|
||||
|
||||
*/
|
||||
* When datagram support is finished, this will compile.
|
||||
* var conn DatagramConn = &Client{}
|
||||
**/
|
||||
|
14
dial.go
14
dial.go
@ -76,16 +76,14 @@ func (c *Client) DialStreamingContextFree(addr string) (net.Conn, error) {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
if c.d == nil {
|
||||
c.d, err = c.NewClient(c.NewID())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
err = c.d.StreamConnect(addr)
|
||||
d, err := c.NewClient(c.NewID())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return c.d.SamConn, nil
|
||||
err = d.StreamConnect(addr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return d.SamConn, nil
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ import (
|
||||
func TestClientLookupInvalid(t *testing.T) {
|
||||
var err error
|
||||
|
||||
client, err := NewClientFromOptions(SetDebug(true))
|
||||
client, err := NewClientFromOptions(SetDebug(false))
|
||||
if err != nil {
|
||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ func (c *Client) validCreate() (string, error) {
|
||||
}
|
||||
|
||||
func TestOptionAddrString(t *testing.T) {
|
||||
client, err := NewClientFromOptions(SetAddr("127.0.0.1:7656"), SetDebug(true))
|
||||
client, err := NewClientFromOptions(SetAddr("127.0.0.1:7656"), SetDebug(false))
|
||||
if err != nil {
|
||||
t.Fatalf("NewClientFromOptions() Error: %q\n", err)
|
||||
}
|
||||
@ -56,7 +56,7 @@ func TestOptionAddrString(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestOptionAddrStringLh(t *testing.T) {
|
||||
client, err := NewClientFromOptions(SetAddr("localhost:7656"), SetDebug(true))
|
||||
client, err := NewClientFromOptions(SetAddr("localhost:7656"), SetDebug(false))
|
||||
if err != nil {
|
||||
t.Fatalf("NewClientFromOptions() Error: %q\n", err)
|
||||
}
|
||||
@ -75,7 +75,7 @@ func TestOptionAddrStringLh(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestOptionAddrSlice(t *testing.T) {
|
||||
client, err := NewClientFromOptions(SetAddr("127.0.0.1", "7656"), SetDebug(true))
|
||||
client, err := NewClientFromOptions(SetAddr("127.0.0.1", "7656"), SetDebug(false))
|
||||
if err != nil {
|
||||
t.Fatalf("NewClientFromOptions() Error: %q\n", err)
|
||||
}
|
||||
@ -94,7 +94,7 @@ func TestOptionAddrSlice(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestOptionAddrMixedSlice(t *testing.T) {
|
||||
client, err := NewClientFromOptions(SetAddrMixed("127.0.0.1", 7656), SetDebug(true))
|
||||
client, err := NewClientFromOptions(SetAddrMixed("127.0.0.1", 7656), SetDebug(false))
|
||||
if err != nil {
|
||||
t.Fatalf("NewClientFromOptions() Error: %q\n", err)
|
||||
}
|
||||
@ -125,7 +125,7 @@ func TestOptionHost(t *testing.T) {
|
||||
SetInBackups(2),
|
||||
SetOutBackups(2),
|
||||
SetEncrypt(true),
|
||||
SetDebug(true),
|
||||
SetDebug(false),
|
||||
SetUnpublished(true),
|
||||
SetReduceIdle(true),
|
||||
SetReduceIdleTime(300001),
|
||||
@ -163,7 +163,7 @@ func TestOptionPortInt(t *testing.T) {
|
||||
SetInBackups(2),
|
||||
SetOutBackups(2),
|
||||
SetEncrypt(true),
|
||||
SetDebug(true),
|
||||
SetDebug(false),
|
||||
SetUnpublished(true),
|
||||
SetReduceIdle(true),
|
||||
SetReduceIdleTime(300001),
|
||||
|
Reference in New Issue
Block a user