@@ -130,16 +130,30 @@ void Configuration::LoadDsn(const std::string& dsn) {
130130 Set (FlightSqlConnection::TOKEN, ReadDsnString (dsn, FlightSqlConnection::TOKEN));
131131 Set (FlightSqlConnection::UID, ReadDsnString (dsn, FlightSqlConnection::UID));
132132 Set (FlightSqlConnection::PWD, ReadDsnString (dsn, FlightSqlConnection::PWD));
133- Set (FlightSqlConnection::USE_ENCRYPTION,
134- ReadDsnString (dsn, FlightSqlConnection::USE_ENCRYPTION, DEFAULT_ENABLE_ENCRYPTION));
135133 Set (FlightSqlConnection::TRUSTED_CERTS,
136134 ReadDsnString (dsn, FlightSqlConnection::TRUSTED_CERTS));
135+
136+ #ifdef __APPLE__
137+ // macOS iODBC treats non-empty defaults as the real values when reading from system
138+ // DSN, so we don't pass defaults on macOS.
139+ // GH-49387 TODO: enable default values on macOS
140+ Set (FlightSqlConnection::USE_ENCRYPTION,
141+ ReadDsnString (dsn, FlightSqlConnection::USE_ENCRYPTION));
142+ Set (FlightSqlConnection::USE_SYSTEM_TRUST_STORE,
143+ ReadDsnString (dsn, FlightSqlConnection::USE_SYSTEM_TRUST_STORE));
144+ Set (FlightSqlConnection::DISABLE_CERTIFICATE_VERIFICATION,
145+ ReadDsnString (dsn, FlightSqlConnection::DISABLE_CERTIFICATE_VERIFICATION));
146+ #else
147+ // Windows and Linux
148+ Set (FlightSqlConnection::USE_ENCRYPTION,
149+ ReadDsnString (dsn, FlightSqlConnection::USE_ENCRYPTION, DEFAULT_ENABLE_ENCRYPTION));
137150 Set (FlightSqlConnection::USE_SYSTEM_TRUST_STORE,
138151 ReadDsnString (dsn, FlightSqlConnection::USE_SYSTEM_TRUST_STORE,
139152 DEFAULT_USE_CERT_STORE));
140153 Set (FlightSqlConnection::DISABLE_CERTIFICATE_VERIFICATION,
141154 ReadDsnString (dsn, FlightSqlConnection::DISABLE_CERTIFICATE_VERIFICATION,
142155 DEFAULT_DISABLE_CERT_VERIFICATION));
156+ #endif
143157
144158 auto customKeys = ReadAllKeys (dsn);
145159 RemoveAllKnownKeys (customKeys);
0 commit comments