1
# name : remove_fcntl_excessive_calls.patch
6
# Any small change to this file in the main branch
7
# should be done or reviewed by the maintainer!
9
+++ b/patch_info/remove_fcntl_excessive_calls.info
11
+File=remove_fcntl_excessive_calls.patch
12
+Name=remove fcntl excessive calls
14
+Author=This is a port of the official fix.
20
can't normally do this the client should have a bigger max_allowed_packet.
23
-#if defined(__WIN__) || !defined(MYSQL_SERVER)
24
+#if (defined(__WIN__) || !defined(MYSQL_SERVER)) && !defined(NO_ALARM)
25
/* The following is because alarms doesn't work on windows. */
29
if (vio != 0) /* If real connection */
31
net->fd = vio_fd(vio); /* For perl DBI/DBD */
32
-#if defined(MYSQL_SERVER) && !defined(__WIN__)
33
+#if defined(MYSQL_SERVER) && !defined(__WIN__) && !defined(NO_ALARM)
34
if (!(test_flags & TEST_BLOCKING))
38
if ((long) (length= vio_write(net->vio,pos,(size_t) (end-pos))) <= 0)
40
my_bool interrupted = vio_should_retry(net->vio);
41
-#if !defined(__WIN__)
42
+#if !defined(NO_ALARM) && !defined(__WIN__)
43
if ((interrupted || length == 0) && !thr_alarm_in_use(&alarmed))
45
if (!thr_alarm(&alarmed, net->write_timeout, &alarm_buff))
48
update_statistics(thd_increment_bytes_sent(length));
51
+#if !defined(NO_ALARM) && !defined(__WIN__)
56
thr_alarm(&alarmed,net->read_timeout,&alarm_buff);
58
/* Read timeout is set in my_net_set_read_timeout */
59
+ DBUG_ASSERT(net_blocking);
62
pos = net->buff + net->where_b; /* net->packet -4 */
65
DBUG_PRINT("info",("vio_read returned %ld errno: %d",
66
(long) length, vio_errno(net->vio)));
67
-#if !defined(__WIN__) || defined(MYSQL_SERVER)
68
+#if !defined(NO_ALARM) && (!defined(__WIN__) || defined(MYSQL_SERVER))
70
We got an error that there was no data on the socket. We now set up
71
an alarm to not 'read forever', change the socket to non blocking