diff --git a/source/pdo_sqlsrv/pdo_dbh.cpp b/source/pdo_sqlsrv/pdo_dbh.cpp index 07003c84..a21686d5 100644 --- a/source/pdo_sqlsrv/pdo_dbh.cpp +++ b/source/pdo_sqlsrv/pdo_dbh.cpp @@ -69,6 +69,7 @@ const char TransactionIsolation[] = "TransactionIsolation"; const char TransparentNetworkIPResolution[] = "TransparentNetworkIPResolution"; const char WSID[] = "WSID"; const char ComputePool[] = "ComputePool"; +const char HostNameInCertificate[] = "HostNameInCertificate"; } @@ -478,6 +479,15 @@ const connection_option PDO_CONN_OPTS[] = { CONN_ATTR_STRING, conn_str_append_func::func }, + { + PDOConnOptionNames::HostNameInCertificate, + sizeof(PDOConnOptionNames::HostNameInCertificate), + SQLSRV_CONN_OPTION_HOSTNAME_IN_CERT, + ODBCConnOptions::HostNameInCertificate, + sizeof(ODBCConnOptions::HostNameInCertificate), + CONN_ATTR_STRING, + conn_str_append_func::func + }, { NULL, 0, SQLSRV_CONN_OPTION_INVALID, NULL, 0 , CONN_ATTR_INVALID, NULL }, //terminate the table }; diff --git a/source/shared/core_sqlsrv.h b/source/shared/core_sqlsrv.h index ef87124d..40da6988 100644 --- a/source/shared/core_sqlsrv.h +++ b/source/shared/core_sqlsrv.h @@ -1168,6 +1168,7 @@ const char UID[] = "UID"; const char PWD[] = "PWD"; const char SERVER[] = "Server"; const char ComputePool[] = "ComputePool"; +const char HostNameInCertificate[] = "HostNameInCertificate"; } @@ -1206,6 +1207,7 @@ enum SQLSRV_CONN_OPTIONS { SQLSRV_CONN_OPTION_CONN_RETRY_COUNT, SQLSRV_CONN_OPTION_CONN_RETRY_INTERVAL, SQLSRV_CONN_OPTION_COMPUTE_POOL, + SQLSRV_CONN_OPTION_HOSTNAME_IN_CERT, // Driver specific connection options SQLSRV_CONN_OPTION_DRIVER_SPECIFIC = 1000, diff --git a/source/sqlsrv/conn.cpp b/source/sqlsrv/conn.cpp index daaef537..4ae1a286 100644 --- a/source/sqlsrv/conn.cpp +++ b/source/sqlsrv/conn.cpp @@ -259,6 +259,7 @@ const char TransparentNetworkIPResolution[] = "TransparentNetworkIPResolution"; const char UID[] = "UID"; const char WSID[] = "WSID"; const char ComputePool[] = "ComputePool"; +const char HostNameInCertificate[] = "HostNameInCertificate"; } @@ -613,6 +614,15 @@ const connection_option SS_CONN_OPTS[] = { CONN_ATTR_STRING, conn_str_append_func::func }, + { + SSConnOptionNames::HostNameInCertificate, + sizeof(SSConnOptionNames::HostNameInCertificate), + SQLSRV_CONN_OPTION_HOSTNAME_IN_CERT, + ODBCConnOptions::HostNameInCertificate, + sizeof(ODBCConnOptions::HostNameInCertificate), + CONN_ATTR_STRING, + conn_str_append_func::func + }, { NULL, 0, SQLSRV_CONN_OPTION_INVALID, NULL, 0 , CONN_ATTR_INVALID, NULL }, //terminate the table }; diff --git a/test/functional/pdo_sqlsrv/pdo_connect_hostname_cert.phpt b/test/functional/pdo_sqlsrv/pdo_connect_hostname_cert.phpt new file mode 100644 index 00000000..64daa58d --- /dev/null +++ b/test/functional/pdo_sqlsrv/pdo_connect_hostname_cert.phpt @@ -0,0 +1,23 @@ +--TEST-- +Test HostNameInCertificate keyword +--DESCRIPTION-- +This test does not test if any connection is successful but mainly test if the HostNameInCertificate keyword is recognized. +--SKIPIF-- + +--FILE-- + +--EXPECT-- +Done diff --git a/test/functional/sqlsrv/sqlsrv_connect_hostname_cert.phpt b/test/functional/sqlsrv/sqlsrv_connect_hostname_cert.phpt new file mode 100644 index 00000000..edd7915c --- /dev/null +++ b/test/functional/sqlsrv/sqlsrv_connect_hostname_cert.phpt @@ -0,0 +1,21 @@ +--TEST-- +Test HostNameInCertificate keyword +--DESCRIPTION-- +This test does not test if any connection is successful but mainly test if the HostNameInCertificate keyword is recognized. +--SKIPIF-- + +--FILE-- + 'dummy'); +$conn = sqlsrv_connect($server, $connectionOptions); +if ($conn != false) { + sqlsrv_close($conn); +} + +echo 'Done' . PHP_EOL; + +?> +--EXPECT-- +Done