summaryrefslogtreecommitdiff
path: root/sql-common
diff options
context:
space:
mode:
Diffstat (limited to 'sql-common')
-rw-r--r--sql-common/client.c14
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)