diff options
Diffstat (limited to 'sql-common')
-rw-r--r-- | sql-common/client.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/sql-common/client.c b/sql-common/client.c index a014e398d8b..0ff98102da9 100644 --- a/sql-common/client.c +++ b/sql-common/client.c @@ -393,6 +393,7 @@ HANDLE create_shared_memory(MYSQL *mysql,NET *net, uint connect_timeout) HANDLE event_server_read = NULL; HANDLE event_client_wrote = NULL; HANDLE event_client_read = NULL; + HANDLE event_conn_closed = NULL; HANDLE handle_file_map = NULL; ulong connect_number; char connect_number_char[22], *p; @@ -505,6 +506,13 @@ HANDLE create_shared_memory(MYSQL *mysql,NET *net, uint connect_timeout) error_allow = CR_SHARED_MEMORY_EVENT_ERROR; goto err2; } + + strmov(suffix_pos, "CONNECTION_CLOSED"); + if ((event_conn_closed = OpenEvent(EVENT_ALL_ACCESS,FALSE,tmp)) == NULL) + { + error_allow = CR_SHARED_MEMORY_EVENT_ERROR; + goto err2; + } /* Set event that server should send data */ @@ -514,9 +522,9 @@ err2: if (error_allow == 0) { net->vio= vio_new_win32shared_memory(net,handle_file_map,handle_map, - event_server_wrote, + event_server_wrote, event_server_read,event_client_wrote, - event_client_read); + event_client_read,event_conn_closed); } else { @@ -529,6 +537,8 @@ err2: CloseHandle(event_client_read); if (event_client_wrote) CloseHandle(event_client_wrote); + if (event_conn_closed) + CloseHandle(event_conn_closed); if (handle_map) UnmapViewOfFile(handle_map); if (handle_file_map) |