mirror of
https://github.com/go-i2p/goSam.git
synced 2025-07-13 06:07:42 -04:00
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
|
USER_GH=eyedeekay
|
||||||
VERSION=0.32.5
|
VERSION=0.32.51
|
||||||
packagename=gosam
|
packagename=gosam
|
||||||
|
|
||||||
echo: fmt
|
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) {
|
func (c *Client) ListenI2P(dest string) (net.Listener, error) {
|
||||||
var err error
|
var err error
|
||||||
c.destination, err = c.CreateStreamSession(dest)
|
c.destination, err = c.CreateStreamSession(dest)
|
||||||
|
d := c.destination
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
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")
|
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 {
|
if c.debug {
|
||||||
c.SamConn = WrapConn(c.SamConn)
|
c.SamConn = WrapConn(c.SamConn)
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.d, nil
|
return c, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Accept accepts a connection on a listening goSam.Client(Implements net.Listener)
|
// 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
|
SamConn net.Conn // Control socket
|
||||||
SamDGConn DatagramConn // Datagram socket
|
SamDGConn DatagramConn // Datagram socket
|
||||||
rd *bufio.Reader
|
rd *bufio.Reader
|
||||||
d *Client
|
// d *Client
|
||||||
|
|
||||||
sigType string
|
sigType string
|
||||||
destination string
|
destination string
|
||||||
@ -93,11 +93,16 @@ func NewClient(addr string) (*Client, error) {
|
|||||||
return NewClientFromOptions(SetAddr(addr))
|
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
|
// NewID generates a random number to use as an tunnel name
|
||||||
func (c *Client) NewID() int32 {
|
func (c *Client) NewID() int32 {
|
||||||
if c.id == 0 {
|
if c.id == 0 {
|
||||||
c.id = rand.Int31n(math.MaxInt32)
|
c.id = NewID()
|
||||||
fmt.Printf("Initializing new ID: %d\n", c.id)
|
|
||||||
}
|
}
|
||||||
return c.id
|
return c.id
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@ func TestCompositeClient(t *testing.T) {
|
|||||||
// http.HandleFunc("/", HelloServer)
|
// http.HandleFunc("/", HelloServer)
|
||||||
go http.Serve(listener3, nil)
|
go http.Serve(listener3, nil)
|
||||||
|
|
||||||
sam, err := NewClientFromOptions(SetDebug(true))
|
sam, err := NewClientFromOptions(SetDebug(false))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||||
}
|
}
|
||||||
@ -55,27 +55,32 @@ func TestCompositeClient(t *testing.T) {
|
|||||||
}
|
}
|
||||||
client := &http.Client{Transport: tr}
|
client := &http.Client{Transport: tr}
|
||||||
defer sam.Close()
|
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() {
|
go func() {
|
||||||
resp, err := client.Get("http://" + listener.Addr().(i2pkeys.I2PAddr).Base32())
|
resp, err := client.Get("http://" + listener.Addr().(i2pkeys.I2PAddr).Base32())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Get Error: %q\n", err)
|
t.Fatalf("Get Error test 1: %q\n", err)
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
}()
|
}()
|
||||||
time.Sleep(time.Second * 15)
|
//time.Sleep(time.Second * 15)
|
||||||
go func() {
|
go func() {
|
||||||
resp, err := client.Get("http://" + listener2.Addr().(i2pkeys.I2PAddr).Base32())
|
resp, err := client.Get("http://" + listener2.Addr().(i2pkeys.I2PAddr).Base32())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Get Error: %q\n", err)
|
t.Fatalf("Get Error test 2: %q\n", err)
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
}()
|
}()
|
||||||
time.Sleep(time.Second * 15)
|
//time.Sleep(time.Second * 15)
|
||||||
go func() {
|
go func() {
|
||||||
resp, err := client.Get("http://" + listener3.Addr().(i2pkeys.I2PAddr).Base32())
|
resp, err := client.Get("http://" + listener3.Addr().(i2pkeys.I2PAddr).Base32())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Get Error: %q\n", err)
|
t.Fatalf("Get Error test 3: %q\n", err)
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
}()
|
}()
|
||||||
@ -84,7 +89,7 @@ func TestCompositeClient(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestClientHello(t *testing.T) {
|
func TestClientHello(t *testing.T) {
|
||||||
client, err := NewClientFromOptions(SetDebug(true))
|
client, err := NewClientFromOptions(SetDebug(false))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||||
}
|
}
|
||||||
@ -95,7 +100,7 @@ func TestClientHello(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestNewDestination(t *testing.T) {
|
func TestNewDestination(t *testing.T) {
|
||||||
client, err := NewClientFromOptions(SetDebug(true))
|
client, err := NewClientFromOptions(SetDebug(false))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
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
|
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 {
|
if err != nil {
|
||||||
return nil, err
|
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) {
|
func TestClientLookupInvalid(t *testing.T) {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
client, err := NewClientFromOptions(SetDebug(true))
|
client, err := NewClientFromOptions(SetDebug(false))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
t.Fatalf("NewDefaultClient() Error: %q\n", err)
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ func (c *Client) validCreate() (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestOptionAddrString(t *testing.T) {
|
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 {
|
if err != nil {
|
||||||
t.Fatalf("NewClientFromOptions() Error: %q\n", err)
|
t.Fatalf("NewClientFromOptions() Error: %q\n", err)
|
||||||
}
|
}
|
||||||
@ -56,7 +56,7 @@ func TestOptionAddrString(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestOptionAddrStringLh(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 {
|
if err != nil {
|
||||||
t.Fatalf("NewClientFromOptions() Error: %q\n", err)
|
t.Fatalf("NewClientFromOptions() Error: %q\n", err)
|
||||||
}
|
}
|
||||||
@ -75,7 +75,7 @@ func TestOptionAddrStringLh(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestOptionAddrSlice(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 {
|
if err != nil {
|
||||||
t.Fatalf("NewClientFromOptions() Error: %q\n", err)
|
t.Fatalf("NewClientFromOptions() Error: %q\n", err)
|
||||||
}
|
}
|
||||||
@ -94,7 +94,7 @@ func TestOptionAddrSlice(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestOptionAddrMixedSlice(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 {
|
if err != nil {
|
||||||
t.Fatalf("NewClientFromOptions() Error: %q\n", err)
|
t.Fatalf("NewClientFromOptions() Error: %q\n", err)
|
||||||
}
|
}
|
||||||
@ -125,7 +125,7 @@ func TestOptionHost(t *testing.T) {
|
|||||||
SetInBackups(2),
|
SetInBackups(2),
|
||||||
SetOutBackups(2),
|
SetOutBackups(2),
|
||||||
SetEncrypt(true),
|
SetEncrypt(true),
|
||||||
SetDebug(true),
|
SetDebug(false),
|
||||||
SetUnpublished(true),
|
SetUnpublished(true),
|
||||||
SetReduceIdle(true),
|
SetReduceIdle(true),
|
||||||
SetReduceIdleTime(300001),
|
SetReduceIdleTime(300001),
|
||||||
@ -163,7 +163,7 @@ func TestOptionPortInt(t *testing.T) {
|
|||||||
SetInBackups(2),
|
SetInBackups(2),
|
||||||
SetOutBackups(2),
|
SetOutBackups(2),
|
||||||
SetEncrypt(true),
|
SetEncrypt(true),
|
||||||
SetDebug(true),
|
SetDebug(false),
|
||||||
SetUnpublished(true),
|
SetUnpublished(true),
|
||||||
SetReduceIdle(true),
|
SetReduceIdle(true),
|
||||||
SetReduceIdleTime(300001),
|
SetReduceIdleTime(300001),
|
||||||
|
Reference in New Issue
Block a user