Added
Link Here
|
1 |
--- imap/notify.c.orig 2021-05-10 04:34:24 UTC |
2 |
+++ imap/notify.c |
3 |
@@ -209,6 +209,27 @@ EXPORTED void notify(const char *method, |
4 |
FNAME_NOTIFY_SOCK, sizeof(sun_data.sun_path)); |
5 |
} |
6 |
|
7 |
+#if defined(__FreeBSD__) |
8 |
+ size_t maxsockbuf; |
9 |
+ size_t len = sizeof(maxsockbuf); |
10 |
+ r = sysctlbyname("kern.ipc.maxsockbuf", &maxsockbuf, &len, NULL, 0); |
11 |
+ if (r == 0) { |
12 |
+ bufsiz = MIN(maxsockbuf, NOTIFY_MAXSIZE); |
13 |
+ } else { |
14 |
+ syslog(LOG_WARNING, |
15 |
+ "NOTIFY(%s): unable to sysctlbyname(kern.ipc.maxsockbuf): %m", |
16 |
+ loginfo); |
17 |
+ bufsiz = NOTIFY_MAXSIZE; |
18 |
+ } |
19 |
+ |
20 |
+ optlen = sizeof(bufsiz); |
21 |
+ r = setsockopt(soc, SOL_SOCKET, SO_SNDBUF, &bufsiz, optlen); |
22 |
+ if (r == -1) { |
23 |
+ syslog(LOG_WARNING, |
24 |
+ "NOTIFY(%s): unable to setsockopt(SO_SNDBUF) on socket: %m", |
25 |
+ loginfo); |
26 |
+ } |
27 |
+#else |
28 |
/* Get send buffer size */ |
29 |
optlen = sizeof(bufsiz); |
30 |
r = getsockopt(soc, SOL_SOCKET, SO_SNDBUF, &bufsiz, &optlen); |
31 |
@@ -221,6 +242,7 @@ EXPORTED void notify(const char *method, |
32 |
|
33 |
/* Use minimum of 1/10 of send buffer size (-overhead) NOTIFY_MAXSIZE */ |
34 |
bufsiz = MIN(bufsiz / 10 - 32, NOTIFY_MAXSIZE); |
35 |
+#endif |
36 |
|
37 |
/* |
38 |
* build request of the form: |