Home / Function/ getTLSConfig() — fiber Function Reference

getTLSConfig() — fiber Function Reference

Architecture documentation for the getTLSConfig() function in helpers.go from the fiber codebase.

Entity Profile

Dependency Diagram

graph TD
  efae1809_5c25_1c98_9578_477fd00968bd["getTLSConfig()"]
  bec0e401_e4cd_f765_6df3_a79059073e50["helpers.go"]
  efae1809_5c25_1c98_9578_477fd00968bd -->|defined in| bec0e401_e4cd_f765_6df3_a79059073e50
  style efae1809_5c25_1c98_9578_477fd00968bd fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

helpers.go lines 55–118

func getTLSConfig(ln net.Listener) *tls.Config {
	if ln == nil {
		return nil
	}

	type tlsConfigProvider interface {
		TLSConfig() *tls.Config
	}

	type configProvider interface {
		Config() *tls.Config
	}

	if provider, ok := ln.(tlsConfigProvider); ok {
		return provider.TLSConfig()
	}

	if provider, ok := ln.(configProvider); ok {
		return provider.Config()
	}

	pointer := reflect.ValueOf(ln)
	if !pointer.IsValid() {
		return nil
	}

	// Reflection fallback for listeners that do not expose a TLS config method.
	val := reflect.Indirect(pointer)
	if !val.IsValid() {
		return nil
	}

	field := val.FieldByName("config")
	if !field.IsValid() {
		return nil
	}

	if field.Type() != reflect.TypeFor[*tls.Config]() {
		return nil
	}

	if field.CanInterface() {
		if cfg, ok := field.Interface().(*tls.Config); ok {
			return cfg
		}
		return nil
	}

	if !field.CanAddr() {
		return nil
	}

	value := reflect.NewAt(field.Type(), unsafe.Pointer(field.UnsafeAddr())).Elem() //nolint:gosec // Access to unexported field is required for listeners that don't expose TLS config methods.
	if !value.IsValid() {
		return nil
	}

	cfg, ok := value.Interface().(*tls.Config)
	if !ok {
		return nil
	}

	return cfg
}

Domain

Subdomains

Defined In

Frequently Asked Questions

What does getTLSConfig() do?
getTLSConfig() is a function in the fiber codebase, defined in helpers.go.
Where is getTLSConfig() defined?
getTLSConfig() is defined in helpers.go at line 55.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free