diff --git a/CMakeLists.txt b/CMakeLists.txt
index e2db72d8c5f746ad0f7dec1ef70a17471081f24f..ac2bda1b96703298804bcb91acf6e51fe1144517 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -143,10 +143,17 @@ set (CMAKE_C_FLAGS
 if (${CMAKE_BUILD_TYPE} STREQUAL "None")
     set (core_cflags "-std=gnu99")
 else()
-    set (core_cflags "-std=gnu99 -Wall -Wextra -Werror")
+    set (core_cflags "-std=gnu99 -Wall -Wextra")
     set (core_cflags "${core_cflags} -Wno-sign-compare -Wno-strict-aliasing")
 endif()
 
+# Only add -Werror if it's a debug build, done by developers.
+# Community builds should not cause extra trouble.
+
+if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
+    set (core_cflags "${core_cflags} -Werror")
+endif()
+
 #
 # Specify where to look for include files.
 #
diff --git a/core/admin.m b/core/admin.m
index 6ffc97035e7caef54fd337bb2d44e6639f721751..412dc7b8868b918a84f51db2f8f62170c8c162a5 100644
--- a/core/admin.m
+++ b/core/admin.m
@@ -1477,7 +1477,7 @@ admin_handler(void *_data __attribute__((unused)))
 int
 admin_init(void)
 {
-	if (fiber_server(tcp_server, cfg.admin_port, admin_handler, NULL, NULL) == NULL) {
+	if (fiber_server(cfg.admin_port, admin_handler, NULL, NULL) == NULL) {
 		say_syserror("can't bind to %d", cfg.admin_port);
 		return -1;
 	}
diff --git a/core/admin.rl b/core/admin.rl
index 2e10c8968c904a1324d24e2755cf0b2a47364091..81265ecf7a57c87b87a9ca15ec80eb1d978d7141 100644
--- a/core/admin.rl
+++ b/core/admin.rl
@@ -223,7 +223,7 @@ admin_handler(void *_data __attribute__((unused)))
 int
 admin_init(void)
 {
-	if (fiber_server(tcp_server, cfg.admin_port, admin_handler, NULL, NULL) == NULL) {
+	if (fiber_server(cfg.admin_port, admin_handler, NULL, NULL) == NULL) {
 		say_syserror("can't bind to %d", cfg.admin_port);
 		return -1;
 	}
diff --git a/core/fiber.m b/core/fiber.m
index 74876d70dcad4bf6ac0b086a58aa9d6181993bb6..c0b83055f0f27b7a1e98b7523ff45540203f0dcb 100644
--- a/core/fiber.m
+++ b/core/fiber.m
@@ -286,7 +286,7 @@ fiber_io_yield()
 }
 
 static void
-fiber_io_stop(int events)
+fiber_io_stop(int events __attribute__((unused)))
 {
 	ev_io *io = &fiber->io;
 
@@ -1175,15 +1175,13 @@ tcp_server_handler(void *data)
 }
 
 struct fiber *
-fiber_server(fiber_server_type type, int port, void (*handler) (void *data), void *data,
+fiber_server(int port, void (*handler) (void *data), void *data,
 	     void (*on_bind) (void *data))
 {
 	char *server_name;
 	struct fiber_server *server;
 	struct fiber *s;
 
-	assert(type == tcp_server);
-
 	server_name = palloc(eter_pool, 64);
 	snprintf(server_name, 64, "%i/acceptor", port);
 	s = fiber_create(server_name, -1, -1, tcp_server_handler, data);
diff --git a/include/fiber.h b/include/fiber.h
index caa49da8b5972d46de70ea0cff82c60eb3dd090f..ab8cd7e679dc7e6265c270bae709fd22a8e827e1 100644
--- a/include/fiber.h
+++ b/include/fiber.h
@@ -191,13 +191,9 @@ void fiber_sleep(ev_tstamp s);
 void fiber_info(struct tbuf *out);
 int set_nonblock(int sock);
 
-typedef enum fiber_server_type {
-	tcp_server,
-} fiber_server_type;
-
 typedef void (*fiber_server_callback)(void *);
 
-struct fiber *fiber_server(fiber_server_type type, int port,
+struct fiber *fiber_server(int port,
 			   fiber_server_callback callback, void *,
 			   void (*on_bind) (void *));
 
diff --git a/mod/box/box.m b/mod/box/box.m
index 6e6084ed9432d3b10b0e474ee17772a4405c52a5..26721739199c0bb52a2b126044d679ee6dfe9389 100644
--- a/mod/box/box.m
+++ b/mod/box/box.m
@@ -1406,16 +1406,16 @@ mod_init(void)
 	}
 
 	if (cfg.memcached != 0) {
-		fiber_server(tcp_server, cfg.primary_port, memcached_handler, NULL,
+		fiber_server(cfg.primary_port, memcached_handler, NULL,
 			     box_leave_local_hot_standby_mode);
 	} else {
 		if (cfg.secondary_port != 0)
-			fiber_server(tcp_server, cfg.secondary_port,
+			fiber_server(cfg.secondary_port,
 				     (fiber_server_callback) iproto_interact,
 				     &ro_callback, NULL);
 
 		if (cfg.primary_port != 0)
-			fiber_server(tcp_server, cfg.primary_port,
+			fiber_server(cfg.primary_port,
 				     (fiber_server_callback) iproto_interact,
 				     &rw_callback, box_leave_local_hot_standby_mode);
 	}