]> Cypherpunks repositories - gostls13.git/commitdiff
crypto/tls: use method values
authorBrad Fitzpatrick <bradfitz@golang.org>
Thu, 21 Mar 2013 03:53:38 +0000 (23:53 -0400)
committerRuss Cox <rsc@golang.org>
Thu, 21 Mar 2013 03:53:38 +0000 (23:53 -0400)
Currently fails with a compiler error, though.

R=golang-dev, agl, rsc
CC=golang-dev
https://golang.org/cl/7933043

src/pkg/crypto/tls/common.go
src/pkg/crypto/tls/handshake_server.go

index a888df762db389ba0100189192d4ed70a4caafeb..f86c90de74d4769f6a9cee2872b579d1048ea9de 100644 (file)
@@ -204,7 +204,24 @@ type Config struct {
        // connections using that key are compromised.
        SessionTicketKey [32]byte
 
-       serverInitOnce sync.Once
+       serverInitOnce sync.Once // guards calling (*Config).serverInit
+}
+
+func (c *Config) serverInit() {
+       if c.SessionTicketsDisabled {
+               return
+       }
+
+       // If the key has already been set then we have nothing to do.
+       for _, b := range c.SessionTicketKey {
+               if b != 0 {
+                       return
+               }
+       }
+
+       if _, err := io.ReadFull(c.rand(), c.SessionTicketKey[:]); err != nil {
+               c.SessionTicketsDisabled = true
+       }
 }
 
 func (c *Config) rand() io.Reader {
index 730991016aaed5399365ec23ef8aee7701c2a486..823730c605c00eff5c96dffaf380834d208dc837 100644 (file)
@@ -33,22 +33,7 @@ func (c *Conn) serverHandshake() error {
 
        // If this is the first server handshake, we generate a random key to
        // encrypt the tickets with.
-       config.serverInitOnce.Do(func() {
-               if config.SessionTicketsDisabled {
-                       return
-               }
-
-               // If the key has already been set then we have nothing to do.
-               for _, b := range config.SessionTicketKey {
-                       if b != 0 {
-                               return
-                       }
-               }
-
-               if _, err := io.ReadFull(config.rand(), config.SessionTicketKey[:]); err != nil {
-                       config.SessionTicketsDisabled = true
-               }
-       })
+       config.serverInitOnce.Do(config.serverInit)
 
        hs := serverHandshakeState{
                c: c,