mirror of https://gogs.blitter.com/RLabs/xs
Moved mutex to front of Conn struct
This commit is contained in:
parent
70448dda08
commit
64e511c3c5
15
hkexnet.go
15
hkexnet.go
|
@ -46,6 +46,7 @@ type WinSize struct {
|
||||||
|
|
||||||
// Conn is a HKex connection - a drop-in replacement for net.Conn
|
// Conn is a HKex connection - a drop-in replacement for net.Conn
|
||||||
type Conn struct {
|
type Conn struct {
|
||||||
|
m *sync.Mutex
|
||||||
c net.Conn // which also implements io.Reader, io.Writer, ...
|
c net.Conn // which also implements io.Reader, io.Writer, ...
|
||||||
h *HerraduraKEx
|
h *HerraduraKEx
|
||||||
cipheropts uint32 // post-KEx cipher/hmac options
|
cipheropts uint32 // post-KEx cipher/hmac options
|
||||||
|
@ -54,7 +55,6 @@ type Conn struct {
|
||||||
Rows uint16
|
Rows uint16
|
||||||
Cols uint16
|
Cols uint16
|
||||||
|
|
||||||
Rwmut *sync.Mutex
|
|
||||||
chaff bool
|
chaff bool
|
||||||
chaffMsecsMin int //msecs min interval
|
chaffMsecsMin int //msecs min interval
|
||||||
chaffMsecsMax int //msecs max interval
|
chaffMsecsMax int //msecs max interval
|
||||||
|
@ -147,7 +147,7 @@ func Dial(protocol string, ipport string, extensions ...string) (hc *Conn, err e
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
// Init hkexnet.Conn hc over net.Conn c
|
// Init hkexnet.Conn hc over net.Conn c
|
||||||
hc = &Conn{c: c, h: New(0, 0), Rwmut: &sync.Mutex{}, dBuf: new(bytes.Buffer)}
|
hc = &Conn{m: &sync.Mutex{}, c: c, h: New(0, 0), dBuf: new(bytes.Buffer)}
|
||||||
hc.applyConnExtensions(extensions...)
|
hc.applyConnExtensions(extensions...)
|
||||||
|
|
||||||
// Send hkexnet.Conn parameters to remote side
|
// Send hkexnet.Conn parameters to remote side
|
||||||
|
@ -274,15 +274,14 @@ func (hl HKExListener) Accept() (hc Conn, err error) {
|
||||||
// Open raw Conn c
|
// Open raw Conn c
|
||||||
c, err := hl.l.Accept()
|
c, err := hl.l.Accept()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
hc := Conn{c: nil, h: nil, cipheropts: 0, opts: 0, Rwmut: &sync.Mutex{},
|
hc := Conn{m: &sync.Mutex{}, c: nil, h: nil, cipheropts: 0, opts: 0,
|
||||||
r: nil, w: nil}
|
r: nil, w: nil}
|
||||||
return hc, err
|
return hc, err
|
||||||
}
|
}
|
||||||
log.Println("[Accepted]")
|
log.Println("[Accepted]")
|
||||||
|
|
||||||
hc = Conn{c: c, h: New(0, 0), WinCh: make(chan WinSize, 1),
|
hc = Conn{m: &sync.Mutex{}, c: c, h: New(0, 0), WinCh: make(chan WinSize, 1),
|
||||||
Rwmut: &sync.Mutex{},
|
dBuf: new(bytes.Buffer)}
|
||||||
dBuf: new(bytes.Buffer)}
|
|
||||||
|
|
||||||
// Read in hkexnet.Conn parameters over raw Conn c
|
// Read in hkexnet.Conn parameters over raw Conn c
|
||||||
// d is value for Herradura key exchange
|
// d is value for Herradura key exchange
|
||||||
|
@ -454,7 +453,7 @@ func (c Conn) WritePacket(b []byte, op byte) (n int, err error) {
|
||||||
//
|
//
|
||||||
// Would be nice to determine if the mutex scope
|
// Would be nice to determine if the mutex scope
|
||||||
// could be tightened.
|
// could be tightened.
|
||||||
c.Rwmut.Lock()
|
c.m.Lock()
|
||||||
{
|
{
|
||||||
log.Printf(" :>ptext:\r\n%s\r\n", hex.Dump(b))
|
log.Printf(" :>ptext:\r\n%s\r\n", hex.Dump(b))
|
||||||
|
|
||||||
|
@ -490,7 +489,7 @@ func (c Conn) WritePacket(b []byte, op byte) (n int, err error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
c.Rwmut.Unlock()
|
c.m.Unlock()
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
//panic(err)
|
//panic(err)
|
||||||
|
|
Loading…
Reference in New Issue