Skip to content

Commit 7622e63

Browse files
committed
fix: refactor gathering ips
1 parent bb018fd commit 7622e63

File tree

1 file changed

+62
-58
lines changed

1 file changed

+62
-58
lines changed

src/croc/croc.go

+62-58
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,6 @@ func New(ops Options) (c *Client, err error) {
190190
// setup basic info
191191
c.Options = ops
192192
Debug(c.Options.Debug)
193-
log.Debugf("options: %+v", c.Options)
194193

195194
if len(c.Options.SharedSecret) < 6 {
196195
err = fmt.Errorf("code is too short")
@@ -712,9 +711,7 @@ func (c *Client) Send(filesInfo []FileInfo, emptyFoldersToTransfer []FileInfo, t
712711
log.Debugf("[%+v] had error: %s", conn, errConn.Error())
713712
}
714713
err = json.Unmarshal(data, &dataMessage)
715-
if err != nil {
716-
log.Debugf("dataMessage error unmarshalling: %v", err)
717-
} else {
714+
if err == nil {
718715
log.Debugf("dataMessage: %s", dataMessage)
719716
}
720717
// if kB not null, then use it to decrypt
@@ -934,62 +931,68 @@ func (c *Client) Receive() (err error) {
934931
if c.Options.TestFlag || (!usingLocal && !c.Options.DisableLocal && !isIPset) {
935932
// ask the sender for their local ips and port
936933
// and try to connect to them
937-
var A *pake.Pake
938-
var data []byte
939-
A, err = pake.InitCurve([]byte(c.Options.SharedSecret[5:]), 0, c.Options.Curve)
940-
if err != nil {
941-
return err
942-
}
943-
dataMessage := SimpleMessage{
944-
Bytes: A.Bytes(),
945-
Kind: "pake1",
946-
}
947-
data, _ = json.Marshal(dataMessage)
948-
if err = c.conn[0].Send(data); err != nil {
949-
log.Errorf("dataMessage send error: %v", err)
950-
return
951-
}
952-
data, err = c.conn[0].Receive()
953-
if err != nil {
954-
return
955-
}
956-
err = json.Unmarshal(data, &dataMessage)
957-
if err != nil || dataMessage.Kind != "pake2" {
958-
return fmt.Errorf("dataMessage %s pake failed", ipRequest)
959-
}
960-
err = A.Update(dataMessage.Bytes)
961-
if err != nil {
962-
return
963-
}
964-
var kA []byte
965-
kA, err = A.SessionKey()
966-
if err != nil {
967-
return
968-
}
969-
log.Debugf("dataMessage kA: %x", kA)
970934

971-
// secure ipRequest
972-
data, err = crypt.Encrypt([]byte(ipRequest), kA)
973-
if err != nil {
974-
return
975-
}
976-
log.Debug("sending ips?")
977-
if err = c.conn[0].Send(data); err != nil {
978-
log.Errorf("ips send error: %v", err)
979-
}
980-
data, err = c.conn[0].Receive()
981-
if err != nil {
982-
return
983-
}
984-
data, err = crypt.Decrypt(data, kA)
985-
if err != nil {
986-
return
987-
}
988-
log.Debugf("ips data: %s", data)
989935
var ips []string
990-
if err = json.Unmarshal(data, &ips); err != nil {
991-
log.Debugf("ips unmarshal error: %v", err)
992-
}
936+
err = func() (err error) {
937+
var A *pake.Pake
938+
var data []byte
939+
A, err = pake.InitCurve([]byte(c.Options.SharedSecret[5:]), 0, c.Options.Curve)
940+
if err != nil {
941+
return err
942+
}
943+
dataMessage := SimpleMessage{
944+
Bytes: A.Bytes(),
945+
Kind: "pake1",
946+
}
947+
data, _ = json.Marshal(dataMessage)
948+
if err = c.conn[0].Send(data); err != nil {
949+
log.Errorf("dataMessage send error: %v", err)
950+
return
951+
}
952+
data, err = c.conn[0].Receive()
953+
if err != nil {
954+
return
955+
}
956+
err = json.Unmarshal(data, &dataMessage)
957+
if err != nil || dataMessage.Kind != "pake2" {
958+
log.Debugf("data: %s", data)
959+
return fmt.Errorf("dataMessage %s pake failed", ipRequest)
960+
}
961+
err = A.Update(dataMessage.Bytes)
962+
if err != nil {
963+
return
964+
}
965+
var kA []byte
966+
kA, err = A.SessionKey()
967+
if err != nil {
968+
return
969+
}
970+
log.Debugf("dataMessage kA: %x", kA)
971+
972+
// secure ipRequest
973+
data, err = crypt.Encrypt([]byte(ipRequest), kA)
974+
if err != nil {
975+
return
976+
}
977+
log.Debug("sending ips?")
978+
if err = c.conn[0].Send(data); err != nil {
979+
log.Errorf("ips send error: %v", err)
980+
}
981+
data, err = c.conn[0].Receive()
982+
if err != nil {
983+
return
984+
}
985+
data, err = crypt.Decrypt(data, kA)
986+
if err != nil {
987+
return
988+
}
989+
log.Debugf("ips data: %s", data)
990+
if err = json.Unmarshal(data, &ips); err != nil {
991+
log.Debugf("ips unmarshal error: %v", err)
992+
}
993+
return
994+
}()
995+
993996
if len(ips) > 1 {
994997
port := ips[0]
995998
ips = ips[1:]
@@ -1085,6 +1088,7 @@ func (c *Client) transfer() (err error) {
10851088
}
10861089
done, err = c.processMessage(data)
10871090
if err != nil {
1091+
log.Debugf("data: %s", data)
10881092
log.Debugf("got error processing: %v", err)
10891093
break
10901094
}

0 commit comments

Comments
 (0)