diff --git a/src/ruby/ext/grpc/extconf.rb b/src/ruby/ext/grpc/extconf.rb
index 105689627bf2fb674b95ae47cdb7b342026a017d..de5b0ea3362a13a718e310756188d652c8adf225 100644
--- a/src/ruby/ext/grpc/extconf.rb
+++ b/src/ruby/ext/grpc/extconf.rb
@@ -54,12 +54,6 @@ LIB_DIRS = [
   LIBDIR
 ]
 
-$CFLAGS << ' -Wno-implicit-function-declaration '
-$CFLAGS << ' -Wno-pointer-sign '
-$CFLAGS << ' -Wno-return-type '
-$CFLAGS << ' -Wall '
-$CFLAGS << ' -pedantic '
-
 grpc_pkg_config = system('pkg-config --exists grpc')
 
 if grpc_pkg_config
@@ -100,5 +94,10 @@ else
   end
 end
 
+$CFLAGS << ' -std=c99 '
+$CFLAGS << ' -Wall '
+$CFLAGS << ' -Wextra '
+$CFLAGS << ' -pedantic '
+$CFLAGS << ' -Werror '
 
 create_makefile('grpc/grpc')
diff --git a/src/ruby/ext/grpc/rb_server.c b/src/ruby/ext/grpc/rb_server.c
index 9c0d24bf8fd47ce1fafe9d885a4fd4be308f7e8f..bed3b268505598c0bbb199f12162710acb1702bd 100644
--- a/src/ruby/ext/grpc/rb_server.c
+++ b/src/ruby/ext/grpc/rb_server.c
@@ -68,8 +68,12 @@ static void grpc_rb_server_free(void *p) {
 
   /* Deletes the wrapped object if the mark object is Qnil, which indicates
      that no other object is the actual owner. */
+  /* grpc_server_shutdown does not exist. Change this to something that does
+     or delete it */
   if (svr->wrapped != NULL && svr->mark == Qnil) {
-    grpc_server_shutdown(svr->wrapped);
+    // grpc_server_shutdown(svr->wrapped);
+    // Aborting to indicate a bug
+    abort();
     grpc_server_destroy(svr->wrapped);
   }