diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c index a192746bd51..9d4d2192045 100644 --- a/ext/mysqlnd/mysqlnd.c +++ b/ext/mysqlnd/mysqlnd.c @@ -2116,10 +2116,17 @@ MYSQLND_METHOD(mysqlnd_conn, set_client_option)(MYSQLND * const conn, DBG_INF_FMT("charset=%s", conn->options.charset_name); break; } + case MYSQL_OPT_NAMED_PIPE: + conn->options.protocol = MYSQL_PROTOCOL_PIPE; + break; + case MYSQL_OPT_PROTOCOL: + if (*(unsigned int*) value < MYSQL_PROTOCOL_LAST) { + conn->options.protocol = *(unsigned int*) value; + } + break; #ifdef WHEN_SUPPORTED_BY_MYSQLI case MYSQL_SET_CHARSET_DIR: case MYSQL_OPT_RECONNECT: - case MYSQL_OPT_PROTOCOL: /* we don't need external character sets, all character sets are compiled in. For compatibility we just ignore this setting. Same for protocol, we don't support old protocol */ @@ -2131,7 +2138,6 @@ MYSQLND_METHOD(mysqlnd_conn, set_client_option)(MYSQLND * const conn, #endif #ifdef WHEN_SUPPORTED_BY_MYSQLI - case MYSQL_OPT_NAMED_PIPE: case MYSQL_SHARED_MEMORY_BASE_NAME: case MYSQL_OPT_USE_RESULT: case MYSQL_SECURE_AUTH: diff --git a/ext/mysqlnd/mysqlnd_enum_n_def.h b/ext/mysqlnd/mysqlnd_enum_n_def.h index 48993f74734..c3a094ca2a4 100644 --- a/ext/mysqlnd/mysqlnd_enum_n_def.h +++ b/ext/mysqlnd/mysqlnd_enum_n_def.h @@ -168,6 +168,15 @@ typedef enum mysqlnd_option MYSQLND_OPT_SSL_PASSPHRASE = 209 } enum_mysqlnd_option; +typedef enum mysqlnd_protocol_type +{ + MYSQL_PROTOCOL_DEFAULT = 0, + MYSQL_PROTOCOL_TCP, /* all, supported */ + MYSQL_PROTOCOL_SOCKET, /* unix, supported */ + MYSQL_PROTOCOL_PIPE, /* win32, not-supported */ + MYSQL_PROTOCOL_MEMORY, /* win32, not-supported */ + MYSQL_PROTOCOL_LAST +} enum_mysqlnd_protocol_type; typedef enum mysqlnd_field_types { diff --git a/ext/mysqlnd/mysqlnd_structs.h b/ext/mysqlnd/mysqlnd_structs.h index 450047202ab..4c3ffdb8924 100644 --- a/ext/mysqlnd/mysqlnd_structs.h +++ b/ext/mysqlnd/mysqlnd_structs.h @@ -161,7 +161,7 @@ typedef struct st_mysqlnd_options char * unused3; char * unused4; char * unused5; - zend_bool unused6; + enum_mysqlnd_protocol_type protocol; char *charset_name; /* maximum allowed packet size for communication */