Fix issue where the control socket should not be used as a streamsession

This commit is contained in:
idk
2022-02-02 00:40:01 -05:00
parent 0623ed8a79
commit a2fcfb8bc1
8 changed files with 47 additions and 41 deletions

View File

@ -1,6 +1,6 @@
USER_GH=eyedeekay
VERSION=0.32.5
VERSION=0.32.51
packagename=gosam
echo: fmt

View File

@ -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)

View File

@ -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
}

View File

@ -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)
}

View File

@ -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
View File

@ -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
}

View File

@ -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)
}

View File

@ -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),