@@ -1133,6 +1133,7 @@ mongoc_stream_t* phongo_stream_initiator(const mongoc_uri_t *uri, const mongoc_h
11331133 struct timeval timeout = {0 , 0 };
11341134 struct timeval * timeoutp = NULL ;
11351135 char * uniqid ;
1136+ const char * persistent_id ;
11361137 phongo_char * errmsg = NULL ;
11371138 int errcode ;
11381139 char * dsn ;
@@ -1178,9 +1179,13 @@ mongoc_stream_t* phongo_stream_initiator(const mongoc_uri_t *uri, const mongoc_h
11781179
11791180 spprintf (& uniqid , 0 , "%s:%d[%s]" , host -> host , host -> port , mongoc_uri_get_string (uri ));
11801181
1182+ /* Do not persist SSL streams to avoid errors attempting to reinitialize SSL
1183+ * on subsequent requests (see: PHPC-720) */
1184+ persistent_id = mongoc_uri_get_ssl (uri ) ? NULL : uniqid ;
1185+
11811186 MONGOC_DEBUG ("Connecting to '%s'" , uniqid );
11821187 zend_replace_error_handling (EH_SUPPRESS , NULL , & error_handling TSRMLS_CC );
1183- stream = php_stream_xport_create (dsn , dsn_len , 0 , STREAM_XPORT_CLIENT | STREAM_XPORT_CONNECT , uniqid , timeoutp , (php_stream_context * )user_data , & errmsg , & errcode );
1188+ stream = php_stream_xport_create (dsn , dsn_len , 0 , STREAM_XPORT_CLIENT | STREAM_XPORT_CONNECT , persistent_id , timeoutp , (php_stream_context * )user_data , & errmsg , & errcode );
11841189 zend_restore_error_handling (& error_handling TSRMLS_CC );
11851190
11861191 if (!stream ) {
@@ -1200,7 +1205,7 @@ mongoc_stream_t* phongo_stream_initiator(const mongoc_uri_t *uri, const mongoc_h
12001205 if (mongoc_uri_get_ssl (uri )) {
12011206 zend_replace_error_handling (EH_THROW , php_phongo_sslconnectionexception_ce , & error_handling TSRMLS_CC );
12021207
1203- MONGOC_DEBUG ("Enabling SSL" );
1208+ MONGOC_DEBUG ("Enabling SSL (stream will not be persisted) " );
12041209
12051210 /* Capture the server certificate so we can do further verification */
12061211 if (PHP_STREAM_CONTEXT (stream )) {
0 commit comments