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 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