Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
8d6ffa86
Commit
8d6ffa86
authored
Feb 21, 2006
by
msvensson@neptunus.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge neptunus.(none):/home/msvensson/mysql/bug2845/my51-bug2845
into neptunus.(none):/home/msvensson/mysql/mysql-5.1
parents
2453cd4e
0aa2580a
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
101 additions
and
14 deletions
+101
-14
mysql-test/r/wait_timeout.result
mysql-test/r/wait_timeout.result
+8
-0
mysql-test/t/wait_timeout-master.opt
mysql-test/t/wait_timeout-master.opt
+1
-1
mysql-test/t/wait_timeout.test
mysql-test/t/wait_timeout.test
+18
-2
sql/net_serv.cc
sql/net_serv.cc
+74
-11
No files found.
mysql-test/r/wait_timeout.result
View file @
8d6ffa86
...
...
@@ -6,3 +6,11 @@ ERROR HY000: MySQL server has gone away
select 3;
3
3
select 1;
1
1
select 2;
ERROR HY000: MySQL server has gone away
select 3;
3
3
mysql-test/t/wait_timeout-master.opt
View file @
8d6ffa86
--wait-timeout=
2
--wait-timeout=
1
mysql-test/t/wait_timeout.test
View file @
8d6ffa86
...
...
@@ -6,9 +6,25 @@
#
--
disable_reconnect
select
1
;
# wait_timeout is 2, so we should get disconnected now
--
sleep
5
# wait_timeout is 1, so we should get disconnected now
--
sleep
2
# When the connection is closed in this way, the error code should
# be consistent see bug#2845 for an explanation
--
error
2006
select
2
;
--
enable_reconnect
select
3
;
# Do the same test as above on a TCP connection
connect
(
con1
,
127.0
.
0.1
,
root
,,
test
,
$MASTER_MYPORT
,);
--
disable_reconnect
select
1
;
# wait_timeout is 1, so we should get disconnected now
--
sleep
2
# When the connection is closed in this way, the error code should
# be consistent see bug#2845 for an explanation
--
error
2006
select
2
;
--
enable_reconnect
select
3
;
disconnect
con1
;
sql/net_serv.cc
View file @
8d6ffa86
...
...
@@ -194,30 +194,93 @@ my_bool net_realloc(NET *net, ulong length)
DBUG_RETURN
(
0
);
}
/* Remove unwanted characters from connection */
/*
Check if there is any data to be read from the socket
SYNOPSIS
net_data_is_ready()
sd socket descriptor
DESCRIPTION
Check if there is any data to be read from the socket.
RETURN VALUES
0 No data to read
1 Data or EOF to read
*/
static
my_bool
net_data_is_ready
(
my_socket
sd
)
{
fd_set
sfds
;
struct
timeval
tv
;
int
res
;
FD_ZERO
(
&
sfds
);
FD_SET
(
sd
,
&
sfds
);
tv
.
tv_sec
=
tv
.
tv_usec
=
0
;
if
((
res
=
select
(
sd
+
1
,
&
sfds
,
NULL
,
NULL
,
&
tv
))
<
0
)
return
FALSE
;
else
return
test
(
res
?
FD_ISSET
(
sd
,
&
sfds
)
:
0
);
}
/*
Remove unwanted characters from connection
and check if disconnected
SYNOPSIS
net_clear()
net NET handler
DESCRIPTION
Read from socket until there is nothing more to read. Discard
what is read.
If there is anything when to read 'net_clear' is called this
normally indicates an error in the protocol.
When connection is properly closed (for TCP it means with
a FIN packet), then select() considers a socket "ready to read",
in the sense that there's EOF to read, but read() returns 0.
*/
void
net_clear
(
NET
*
net
)
{
int
count
;
DBUG_ENTER
(
"net_clear"
);
#if !defined(EXTRA_DEBUG) && !defined(EMBEDDED_LIBRARY)
#if !defined(EMBEDDED_LIBRARY)
while
(
net_data_is_ready
(
net
->
vio
->
sd
))
{
int
count
;
/* One may get 'unused' warn
*/
my_bool
old_mode
;
if
(
!
vio_blocking
(
net
->
vio
,
FALSE
,
&
old_mode
)
)
/* The socket is ready
*/
if
((
count
=
vio_read
(
net
->
vio
,
(
char
*
)
(
net
->
buff
),
(
uint32
)
net
->
max_packet
))
>
0
)
{
while
((
count
=
vio_read
(
net
->
vio
,
(
char
*
)
(
net
->
buff
),
(
uint32
)
net
->
max_packet
))
>
0
)
DBUG_PRINT
(
"info"
,(
"skipped %d bytes from file: %s"
,
count
,
vio_description
(
net
->
vio
)));
vio_blocking
(
net
->
vio
,
TRUE
,
&
old_mode
);
DBUG_PRINT
(
"info"
,(
"skipped %d bytes from file: %s"
,
count
,
vio_description
(
net
->
vio
)));
#ifdef EXTRA_DEBUG
fprintf
(
stderr
,
"skipped %d bytes from file: %s
\n
"
,
count
,
vio_description
(
net
->
vio
));
#endif
}
else
{
DBUG_PRINT
(
"info"
,(
"socket ready but only EOF to read - disconnected"
));
net
->
error
=
2
;
break
;
}
}
#endif
/* EXTRA_DEBUG */
#endif
net
->
pkt_nr
=
net
->
compress_pkt_nr
=
0
;
/* Ready for new command */
net
->
write_pos
=
net
->
buff
;
DBUG_VOID_RETURN
;
}
/* Flush write_buffer if not empty. */
my_bool
net_flush
(
NET
*
net
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment