Skip to content

Commit

Permalink
Merge pull request #10 from hkh4n/refactor
Browse files Browse the repository at this point in the history
Refactored error handling in sam3.go
  • Loading branch information
eyedeekay authored Sep 12, 2024
2 parents 19d8d8e + b4293f7 commit 83f9866
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions sam3.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"bufio"
"bytes"
"errors"
"fmt"
"io"
"math/rand"
"net"
Expand Down Expand Up @@ -60,28 +61,27 @@ func NewSAM(address string) (*SAM, error) {
// TODO: clean this up
conn, err := net.Dial("tcp", address)
if err != nil {
return nil, err
return nil, fmt.Errorf("error dialing to address '%s': %w", address, err)
}
if _, err := conn.Write(s.Config.HelloBytes()); err != nil {
conn.Close()
return nil, err
return nil, fmt.Errorf("error writing to address '%s': %w", address, err)
}
buf := make([]byte, 256)
n, err := conn.Read(buf)
if err != nil {
conn.Close()
return nil, err
return nil, fmt.Errorf("error reading onto buffer: %w", err)
}
if strings.Contains(string(buf[:n]), "HELLO REPLY RESULT=OK") {
s.Config.I2PConfig.SetSAMAddress(address)
s.conn = conn
//s.Config.I2PConfig.DestinationKeys = nil
s.resolver, err = NewSAMResolver(&s)
if err != nil {
return nil, err
return nil, fmt.Errorf("error creating resolver: %w", err)
}
return &s, nil
//return &SAM{address, conn, nil, nil}, nil
} else if string(buf[:n]) == "HELLO REPLY RESULT=NOVERSION\n" {
conn.Close()
return nil, errors.New("That SAM bridge does not support SAMv3.")
Expand Down Expand Up @@ -155,12 +155,12 @@ func (sam *SAM) NewKeys(sigType ...string) (i2pkeys.I2PKeys, error) {
sigtmp = sigType[0]
}
if _, err := sam.conn.Write([]byte("DEST GENERATE " + sigtmp + "\n")); err != nil {
return i2pkeys.I2PKeys{}, err
return i2pkeys.I2PKeys{}, fmt.Errorf("error with writing in SAM: %w", err)
}
buf := make([]byte, 8192)
n, err := sam.conn.Read(buf)
if err != nil {
return i2pkeys.I2PKeys{}, err
return i2pkeys.I2PKeys{}, fmt.Errorf("error with reading in SAM: %w", err)
}
s := bufio.NewScanner(bytes.NewReader(buf[:n]))
s.Split(bufio.ScanWords)
Expand Down Expand Up @@ -229,15 +229,15 @@ func (sam *SAM) newGenericSessionWithSignatureAndPorts(style, id, from, to strin
n, err := conn.Write(scmsg[m:])
if err != nil {
conn.Close()
return nil, err
return nil, fmt.Errorf("writing to connection failed: %w", err)
}
m += n
}
buf := make([]byte, 4096)
n, err := conn.Read(buf)
if err != nil {
conn.Close()
return nil, err
return nil, fmt.Errorf("reading from connection failed: %w", err)
}
text := string(buf[:n])
if strings.HasPrefix(text, session_OK) {
Expand Down

0 comments on commit 83f9866

Please sign in to comment.