diff --git a/lib/cpp/src/server/TNonblockingServer.h b/lib/cpp/src/server/TNonblockingServer.h
index df3103f..e043b54 100644
--- a/lib/cpp/src/server/TNonblockingServer.h
+++ b/lib/cpp/src/server/TNonblockingServer.h
@@ -310,13 +310,13 @@
   void transition();
 
   // Handler wrapper
-  static void eventHandler(int fd, short which, void* v) {
+  static void eventHandler(int fd, short /* which */, void* v) {
     assert(fd == ((TConnection*)v)->socket_);
     ((TConnection*)v)->workSocket();
   }
 
   // Handler wrapper for task block
-  static void taskHandler(int fd, short which, void* v) {
+  static void taskHandler(int fd, short /* which */, void* v) {
     assert(fd == ((TConnection*)v)->taskHandle_);
     if (-1 == ::close(((TConnection*)v)->taskHandle_)) {
       GlobalOutput("TConnection::taskHandler close handle failed, resource leak");
diff --git a/lib/cpp/src/server/TServer.h b/lib/cpp/src/server/TServer.h
index b51d1d5..d7245c7 100644
--- a/lib/cpp/src/server/TServer.h
+++ b/lib/cpp/src/server/TServer.h
@@ -44,14 +44,14 @@
   /**
    * Called when a new client has connected and is about to being processing.
    */
-  virtual void clientBegin(boost::shared_ptr<TProtocol> input,
-                           boost::shared_ptr<TProtocol> output) {}
+  virtual void clientBegin(boost::shared_ptr<TProtocol> /* input */,
+                           boost::shared_ptr<TProtocol> /* output */) {}
 
   /**
    * Called when a client has finished making requests.
    */
-  virtual void clientEnd(boost::shared_ptr<TProtocol> input,
-                         boost::shared_ptr<TProtocol> output) {}
+  virtual void clientEnd(boost::shared_ptr<TProtocol> /* input */,
+                         boost::shared_ptr<TProtocol> /* output */) {}
 
  protected:
 
