cubefs
50 строк · 1.3 Кб
1/*
2*
3* Copyright 2020 gRPC authors.
4*
5* Licensed under the Apache License, Version 2.0 (the "License");
6* you may not use this file except in compliance with the License.
7* You may obtain a copy of the License at
8*
9* http://www.apache.org/licenses/LICENSE-2.0
10*
11* Unless required by applicable law or agreed to in writing, software
12* distributed under the License is distributed on an "AS IS" BASIS,
13* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14* See the License for the specific language governing permissions and
15* limitations under the License.
16*
17*/
18
19package credentials20
21import "crypto/tls"22
23const alpnProtoStrH2 = "h2"24
25// AppendH2ToNextProtos appends h2 to next protos.
26func AppendH2ToNextProtos(ps []string) []string {27for _, p := range ps {28if p == alpnProtoStrH2 {29return ps30}31}32ret := make([]string, 0, len(ps)+1)33ret = append(ret, ps...)34return append(ret, alpnProtoStrH2)35}
36
37// CloneTLSConfig returns a shallow clone of the exported
38// fields of cfg, ignoring the unexported sync.Once, which
39// contains a mutex and must not be copied.
40//
41// If cfg is nil, a new zero tls.Config is returned.
42//
43// TODO: inline this function if possible.
44func CloneTLSConfig(cfg *tls.Config) *tls.Config {45if cfg == nil {46return &tls.Config{}47}48
49return cfg.Clone()50}
51