Index: benchmark/io/http/socket.cfa
===================================================================
--- benchmark/io/http/socket.cfa	(revision 8419b763c831e59988552e542bb11dc1f8fc2ead)
+++ benchmark/io/http/socket.cfa	(revision a8b87d3db4fd7828fac5029e592eb07f8b87bcb6)
@@ -27,5 +27,5 @@
 int listener(struct sockaddr_in & address, int addrlen) {
 	int type = SOCK_STREAM;
-	if(options.socket.reuseport) type |= SOCK_NONBLOCK;
+	// if(options.socket.reuseport) type |= SOCK_NONBLOCK;
 	int sockfd = socket(AF_INET, type, 0);
 	if(sockfd < 0) {
Index: benchmark/io/http/worker.cfa
===================================================================
--- benchmark/io/http/worker.cfa	(revision 8419b763c831e59988552e542bb11dc1f8fc2ead)
+++ benchmark/io/http/worker.cfa	(revision a8b87d3db4fd7828fac5029e592eb07f8b87bcb6)
@@ -189,5 +189,28 @@
 }
 
-#define ACCEPT_SPIN
+static inline __s32 get_res( io_future_t & this ) {
+	if( this.result < 0 ) {{
+		errno = -this.result;
+		return -1;
+	}}
+	return this.result;
+}
+
+static inline void push_connection( Acceptor & this, int fd ) {
+	PendingRead * p = 0p;
+	for() {
+		if(this.done) return;
+		p = pop(*this.queue);
+		if(p) break;
+		yield();
+		this.stats.creates++;
+	};
+
+	p->out.fd = fd;
+	async_recv(p->f, p->out.fd, p->in.buf, p->in.len, 0, CFA_IO_LAZY);
+}
+
+// #define ACCEPT_SPIN
+#define ACCEPT_MANY
 
 void main( Acceptor & this ) {
@@ -215,17 +238,5 @@
 		if( options.log ) sout | "=== New connection" | fd | "" | ", waiting for requests ===";
 
-		if(fd) {
-			PendingRead * p = 0p;
-			for() {
-				if(this.done) return;
-				p = pop(*this.queue);
-				if(p) break;
-				yield();
-				this.stats.creates++;
-			};
-
-			p->out.fd = fd;
-			async_recv(p->f, p->out.fd, p->in.buf, p->in.len, 0, CFA_IO_LAZY);
-		}
+		if(fd) push_connection(this, fd);
 
 		if (stats_thrd) {
@@ -243,5 +254,5 @@
 	}
 
-#elif define(ACCEPT_MANY)
+#elif defined(ACCEPT_MANY)
 	const int nacc = 10;
 	io_future_t results[nacc];
