[MEDIUM] implement option tcp-smart-accept at the frontend
This option disables TCP quick ack upon accept. It is also
automatically enabled in HTTP mode, unless the option is
explicitly disabled with "no option tcp-smart-accept".
This saves one packet per connection which can bring reasonable
amounts of bandwidth for servers processing small requests.
diff --git a/include/types/protocols.h b/include/types/protocols.h
index e91fdb3..8d0ac9f 100644
--- a/include/types/protocols.h
+++ b/include/types/protocols.h
@@ -68,6 +68,7 @@
#define LI_O_NONE 0x0000
#define LI_O_NOLINGER 0x0001 /* disable linger on this socket */
#define LI_O_FOREIGN 0x0002 /* permit listening on foreing addresses */
+#define LI_O_NOQUICKACK 0x0004 /* disable quick ack of immediate data (linux) */
/* The listener will be directly referenced by the fdtab[] which holds its
* socket. The listener provides the protocol-specific accept() function to
diff --git a/include/types/proxy.h b/include/types/proxy.h
index b1b90e8..7664618 100644
--- a/include/types/proxy.h
+++ b/include/types/proxy.h
@@ -117,6 +117,7 @@
#define PR_O2_RSPBUG_OK 0x00000010 /* let buggy responses pass through */
#define PR_O2_NOLOGNORM 0x00000020 /* don't log normal traffic, only errors and retries */
#define PR_O2_LOGERRORS 0x00000040 /* log errors and retries at level LOG_ERR */
+#define PR_O2_SMARTACC 0x00000080 /* don't immediately ACK request after accept */
/* This structure is used to apply fast weighted round robin on a server group */
struct fwrr_group {