]>
Commit | Line | Data |
---|---|---|
b4e1fa2c AM |
1 | # name : remove_fcntl_excessive_calls.patch |
2 | # introduced : 12 | |
3 | # maintainer : Oleg | |
4 | # | |
5 | #!!! notice !!! | |
6 | # Any small change to this file in the main branch | |
7 | # should be done or reviewed by the maintainer! | |
db82db79 AM |
8 | --- /dev/null |
9 | +++ b/patch_info/remove_fcntl_excessive_calls.info | |
b4e1fa2c AM |
10 | @@ -0,0 +1,6 @@ |
11 | +File=remove_fcntl_excessive_calls.patch | |
12 | +Name=remove fcntl excessive calls | |
13 | +Version=1.0 | |
14 | +Author=This is a port of the official fix. | |
15 | +License=GPL | |
16 | +Comment= | |
db82db79 AM |
17 | --- a/sql/net_serv.cc |
18 | +++ b/sql/net_serv.cc | |
a9ee80b9 ER |
19 | @@ -61,7 +61,7 @@ |
20 | the client should have a bigger max_allowed_packet. | |
21 | */ | |
22 | ||
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. */ | |
26 | #ifndef NO_ALARM | |
27 | #define NO_ALARM | |
b4e1fa2c AM |
28 | @@ -133,7 +133,7 @@ |
29 | if (vio != 0) /* If real connection */ | |
30 | { | |
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)) | |
35 | { | |
36 | my_bool old_mode; | |
d8778560 | 37 | @@ -632,7 +632,7 @@ |
b4e1fa2c AM |
38 | if ((long) (length= vio_write(net->vio,pos,(size_t) (end-pos))) <= 0) |
39 | { | |
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)) | |
44 | { | |
45 | if (!thr_alarm(&alarmed, net->write_timeout, &alarm_buff)) | |
d8778560 | 46 | @@ -688,7 +688,7 @@ |
b4e1fa2c AM |
47 | pos+=length; |
48 | update_statistics(thd_increment_bytes_sent(length)); | |
49 | } | |
50 | -#ifndef __WIN__ | |
51 | +#if !defined(NO_ALARM) && !defined(__WIN__) | |
52 | end: | |
53 | #endif | |
54 | #ifdef HAVE_COMPRESS | |
d8778560 | 55 | @@ -820,6 +820,7 @@ |
b4e1fa2c AM |
56 | thr_alarm(&alarmed,net->read_timeout,&alarm_buff); |
57 | #else | |
58 | /* Read timeout is set in my_net_set_read_timeout */ | |
59 | + DBUG_ASSERT(net_blocking); | |
60 | #endif /* NO_ALARM */ | |
61 | ||
62 | pos = net->buff + net->where_b; /* net->packet -4 */ | |
d8778560 | 63 | @@ -834,7 +835,7 @@ |
b4e1fa2c AM |
64 | |
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)) | |
69 | /* | |
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 |