@@ -22,7 +22,6 @@ import (
2222 "encoding/json"
2323 "encoding/pem"
2424 "fmt"
25- "slices"
2625
2726 "github.com/pkg/errors"
2827 corev1 "k8s.io/api/core/v1"
@@ -50,7 +49,6 @@ func (t *Translator) TranslateGateway(tctx *provider.TranslateContext, obj *gate
5049 result .SSL = append (result .SSL , ssl ... )
5150 }
5251 }
53- result .SSL = mergeSSLWithSameID (result .SSL )
5452
5553 rk := utils .NamespacedNameKind (obj )
5654 gatewayProxy , ok := tctx .GatewayProxies [rk ]
@@ -80,7 +78,7 @@ func (t *Translator) translateSecret(tctx *provider.TranslateContext, listener g
8078 sslObjs := make ([]* adctypes.SSL , 0 )
8179 switch * listener .TLS .Mode {
8280 case gatewayv1 .TLSModeTerminate :
83- for _ , ref := range listener .TLS .CertificateRefs {
81+ for refIndex , ref := range listener .TLS .CertificateRefs {
8482 ns := obj .GetNamespace ()
8583 if ref .Namespace != nil {
8684 ns = string (* ref .Namespace )
@@ -122,8 +120,7 @@ func (t *Translator) translateSecret(tctx *provider.TranslateContext, listener g
122120 }
123121 sslObj .Snis = append (sslObj .Snis , hosts ... )
124122 }
125- // Note: use cert as id to avoid duplicate certificate across ssl objects
126- sslObj .ID = id .GenID (string (cert ))
123+ sslObj .ID = id .GenID (fmt .Sprintf ("%s_%s_%d" , adctypes .ComposeSSLName (internaltypes .KindGateway , obj .Namespace , obj .Name ), listener .Name , refIndex ))
127124 t .Log .V (1 ).Info ("generated ssl id" , "ssl id" , sslObj .ID , "secret" , secretNN .String ())
128125 sslObj .Labels = label .GenLabel (obj )
129126 sslObjs = append (sslObjs , sslObj )
@@ -241,47 +238,3 @@ func (t *Translator) fillPluginMetadataFromGatewayProxy(pluginMetadata adctypes.
241238 pluginMetadata [pluginName ] = pluginConfig
242239 }
243240}
244-
245- // mergeSSLWithSameID merge ssl with same id
246- func mergeSSLWithSameID (sslList []* adctypes.SSL ) []* adctypes.SSL {
247- if len (sslList ) <= 1 {
248- return sslList
249- }
250-
251- // create a map to store ssl with same id
252- sslMap := make (map [string ]* adctypes.SSL )
253- for _ , ssl := range sslList {
254- if existing , exists := sslMap [ssl .ID ]; exists {
255- // if ssl with same id exists, merge their snis
256- // use map to deduplicate
257- sniMap := make (map [string ]struct {})
258- // add existing snis
259- for _ , sni := range existing .Snis {
260- sniMap [sni ] = struct {}{}
261- }
262- // add new snis
263- for _ , sni := range ssl .Snis {
264- sniMap [sni ] = struct {}{}
265- }
266- // rebuild deduplicated snis list
267- newSnis := make ([]string , 0 , len (sniMap ))
268- for sni := range sniMap {
269- newSnis = append (newSnis , sni )
270- }
271-
272- slices .Sort (newSnis )
273- // update existing ssl object
274- existing .Snis = newSnis
275- } else {
276- slices .Sort (ssl .Snis )
277- // if new ssl id, add to map
278- sslMap [ssl .ID ] = ssl
279- }
280- }
281-
282- mergedSSL := make ([]* adctypes.SSL , 0 , len (sslMap ))
283- for _ , ssl := range sslMap {
284- mergedSSL = append (mergedSSL , ssl )
285- }
286- return mergedSSL
287- }
0 commit comments