config/ssl.go
func (c *SSLConfig) Merge(o *SSLConfig) *SSLConfig {
	if c == nil {
		if o == nil {
			return nil
		}
		return o.Copy()
	}

	if o == nil {
		return c.Copy()
	}

	r := c.Copy()

	if o.Cert != nil {
		r.Cert = o.Cert
	}

	if o.CaCert != nil {
		r.CaCert = o.CaCert
	}

	if o.CaPath != nil {
		r.CaPath = o.CaPath
	}

	if o.Enabled != nil {
		r.Enabled = o.Enabled
	}

	if o.Key != nil {
		r.Key = o.Key
	}

	if o.ServerName != nil {
		r.ServerName = o.ServerName
	}

	if o.Verify != nil {
		r.Verify = o.Verify
	}

	return r
}
func (c *SSLConfig) Merge(o *SSLConfig) *SSLConfig {
	if c == nil {
		if o == nil {
			return nil
		}
		return o.Copy()
	}

	if o == nil {
		return c.Copy()
	}

	r := c.Copy()

	if o.Cert != nil {
		r.Cert = o.Cert
	}

	if o.CaCert != nil {
		r.CaCert = o.CaCert
	}

	if o.CaPath != nil {
		r.CaPath = o.CaPath
	}

	if o.Enabled != nil {
		r.Enabled = o.Enabled
	}

	if o.Key != nil {
		r.Key = o.Key
	}

	if o.ServerName != nil {
		r.ServerName = o.ServerName
	}

	if o.Verify != nil {
		r.Verify = o.Verify
	}

	return r
}
// Merge combines all values in this configuration with the values in the other
// configuration, with values in the other configuration taking precedence.
// Maps and slices are merged, most other values are overwritten. Complex
// structs define their own merge functionality.