System Version: macOS 10.12.1 (16B2553a)
      Kernel Version: Darwin 16.1.0

cc queuefile.c
queuefile.c:73:3: warning: add explicit braces to avoid dangling else [-Wdangling-else]
  else if (j < 0)
  ^
queuefile.c:129:2: warning: '&&' within '||' [-Wlogical-op-parentheses]
&& (s = srcpath, (srcfd = openat(sdfd, CCS filename, O_RDONLY)) < 0)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
queuefile.c:129:2: note: place parentheses around the '&&' expression to silence this warning && (s = srcpath, (srcfd = openat(sdfd, CCS filename, O_RDONLY)) < 0)
        ^
2 warnings generated.
cc smtp.c
smtp.c:2584:5: warning: add explicit braces to avoid dangling else [-Wdangling-else]
    else
    ^
smtp.c:4152:5: warning: add explicit braces to avoid dangling else [-Wdangling-else]
    else
    ^
2 warnings generated.
cc smtp_socks.c
cc tf_maildir.c
ar cq transports.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: transports.a(smtp_socks.o) has no symbols
ranlib transports.a
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: file: transports.a(smtp_socks.o) has no symbols

cc acl.c
acl.c:1656:7: warning: add explicit braces to avoid dangling else [-Wdangling-else]
      else
      ^
acl.c:3649:5: warning: add explicit braces to avoid dangling else [-Wdangling-else]
    else if (rc == FAIL || rc == FAIL_DROP) rc = OK;
    ^
acl.c:4358:2: warning: add explicit braces to avoid dangling else [-Wdangling-else]
        else
        ^
3 warnings generated.
cc base64.c
cc child.c
cc crypt16.c
cc daemon.c
daemon.c:1457:7: warning: add explicit braces to avoid dangling else [-Wdangling-else]
      else
      ^
daemon.c:1461:40: error: use of undeclared identifier 'SOL_TCP'
if (setsockopt(listen_sockets[sk], SOL_TCP, TCP_FASTOPEN, &smtp_connect_backlog,
                                       ^
1 warning and 1 error generated.
make[1]: *** [daemon.o] Error 1
make: *** [all] Error 2


On 10/24/16 7:38 AM, The Doctor wrote:
On Mon, Oct 24, 2016 at 12:43:26PM +0100, Jeremy Harris wrote:
On 24/10/16 04:05, Phil Pennock wrote:
On 2016-10-24 at 02:34 +0100, Jeremy Harris wrote:
Of course, secondary thoughts, we don't know that the same sequences
of library calls on FreeBSD as on Linux will do what's wanted.
   https://people.freebsd.org/~pkelsey/tfo-tools/
server:
                rc = setsockopt(listen_fd, IPPROTO_TCP, TCP_FASTOPEN,
                                &on, sizeof(on));

  * Need to guard against flag being undef
Done for TCP_FASTOPEN, probably need to do for MSG_FASTOPEN.

  * Need to gracefully handle the setsockopt() call failing


OK, so

- The library call sequence is identical

- Use IPPROTO_TCP where Linux has SOL_TCP

- The current coding for failures on the server side is
   ok (just ignore the setsockopt failure; we get a
   non-fastopen socket as before) for non-supporting kernels

- The current coding for failures on the client side
   needs thought.  I made it log-noisy but functional
   on the grounds that you do an extra syscall
   [the sendto(..., MSG_FASTOPEN, ...)] getting a fail
   every time on non-supporting kernels.  There is
   a transport control, defaulting to enabled.

   Adding probe code in process startup might help, though
   the re-execs we do defeat that.  Queue-runners would be
   ok but most deliveries are probably foreground.

   Should I change the default to not-enabled, for the
   medium-term?
Well there are other BSDs to here from.

Anyone from NetBsd, OpenBSD, DragonFly et al
get the same error?

--
Cheers,
   jeremy

--
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

--
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to