@@ -247,7 +247,7 @@ func (c *Conn) ServerHello() *serverHelloMsg {
247247// A halfConn represents one direction of the record layer
248248// connection, either sending or receiving.
249249type halfConn struct {
250- // sync.Mutex
250+ sync.Mutex
251251
252252 err error // first permanent error
253253 version uint16 // protocol version
@@ -1302,34 +1302,29 @@ var (
13021302// has not yet completed. See SetDeadline, SetReadDeadline, and
13031303// SetWriteDeadline.
13041304func (c * Conn ) Write (b []byte ) (int , error ) {
1305- // defer c.allocator.Free(b)
1306-
13071305 if len (b ) == 0 {
13081306 return 0 , nil
13091307 }
1310-
13111308 c .closeMux .Lock ()
1312- defer c .closeMux .Unlock ()
1313-
13141309 if c .closed {
1310+ c .closeMux .Unlock ()
13151311 return 0 , net .ErrClosed
13161312 }
1313+ c .closeMux .Unlock ()
13171314
13181315 if err := c .Handshake (); err != nil {
13191316 return 0 , err
13201317 }
13211318
1322- // c.out.Lock()
1323- // defer c.out.Unlock()
1324-
1319+ c .out .Lock ()
1320+ defer c .out .Unlock ()
13251321 if err := c .out .err ; err != nil {
13261322 return 0 , err
13271323 }
13281324
13291325 if ! c .handshakeComplete () {
13301326 return 0 , alertInternalError
13311327 }
1332-
13331328 if c .closeNotifySent {
13341329 return 0 , errShutdown
13351330 }
@@ -1353,8 +1348,8 @@ func (c *Conn) Write(b []byte) (int, error) {
13531348 m , b = 1 , b [1 :]
13541349 }
13551350 }
1356-
13571351 n , err := c .writeRecordLocked (recordTypeApplicationData , b )
1352+
13581353 return n + m , c .out .setErrorLocked (err )
13591354}
13601355
@@ -1497,10 +1492,11 @@ func (c *Conn) Append(b []byte) (int, error) {
14971492// SetWriteDeadline.
14981493func (c * Conn ) Read (b []byte ) (int , error ) {
14991494 c .closeMux .Lock ()
1500- defer c .closeMux .Unlock ()
15011495 if c .closed {
1496+ c .closeMux .Unlock ()
15021497 return 0 , net .ErrClosed
15031498 }
1499+ c .closeMux .Unlock ()
15041500
15051501 if err := c .Handshake (); err != nil {
15061502 if c .isNonBlock && err == errDataNotEnough {
@@ -1514,8 +1510,8 @@ func (c *Conn) Read(b []byte) (int, error) {
15141510 return 0 , nil
15151511 }
15161512
1517- // c.in.Lock()
1518- // defer c.in.Unlock()
1513+ c .in .Lock ()
1514+ defer c .in .Unlock ()
15191515
15201516 for c .input .Len () == 0 {
15211517 if err := c .readRecord (); err != nil {
@@ -1659,7 +1655,6 @@ func (c *Conn) Close() error {
16591655 }
16601656
16611657 c .release ()
1662-
16631658 var alertErr error
16641659 if c .handshakeComplete () {
16651660 if err := c .closeNotify (); err != nil {
0 commit comments