diff --git a/lib/cpp/src/async/TEvhttpClientChannel.cpp b/lib/cpp/src/async/TEvhttpClientChannel.cpp
old mode 100644
new mode 100755
index 8b47173..b5265ce
--- a/lib/cpp/src/async/TEvhttpClientChannel.cpp
+++ b/lib/cpp/src/async/TEvhttpClientChannel.cpp
@@ -93,12 +93,16 @@
 
 bool TEvhttpClientChannel::sendMessage(
     const VoidCallback& cob, apache::thrift::transport::TMemoryBuffer* message) {
+  (void) cob;
+  (void) message;
   abort(); // XXX
 }
 
 
 bool TEvhttpClientChannel::recvMessage(
     const VoidCallback& cob, apache::thrift::transport::TMemoryBuffer* message) {
+  (void) cob;
+  (void) message;
   abort(); // XXX
 }
 
diff --git a/lib/cpp/src/async/TEvhttpServer.cpp b/lib/cpp/src/async/TEvhttpServer.cpp
old mode 100644
new mode 100755
index 30e33e5..701f8bd
--- a/lib/cpp/src/async/TEvhttpServer.cpp
+++ b/lib/cpp/src/async/TEvhttpServer.cpp
@@ -124,6 +124,7 @@
 
 
 void TEvhttpServer::complete(RequestContext* ctx, bool success) {
+  (void) success;
   std::auto_ptr<RequestContext> ptr(ctx);
 
   int code = 200;
diff --git a/lib/cpp/src/transport/TSSLSocket.cpp b/lib/cpp/src/transport/TSSLSocket.cpp
old mode 100644
new mode 100755
index 602a894..913c258
--- a/lib/cpp/src/transport/TSSLSocket.cpp
+++ b/lib/cpp/src/transport/TSSLSocket.cpp
@@ -258,7 +258,7 @@
   // both certificate and access manager are present
 
   string host;
-  sockaddr_storage sa = {};
+  sockaddr_storage sa;
   socklen_t saLength = sizeof(sa);
 
   if (getpeername(socket_, (sockaddr*)&sa, &saLength) != 0) {
@@ -591,7 +591,10 @@
  * Default implementation of AccessManager
  */
 Decision DefaultClientAccessManager::verify(const sockaddr_storage& sa)
-  throw() { return SKIP; }
+  throw() { 
+  (void) sa;
+  return SKIP;
+}
 
 Decision DefaultClientAccessManager::verify(const string& host,
                                             const char* name,
diff --git a/lib/cpp/src/transport/TSSLSocket.h b/lib/cpp/src/transport/TSSLSocket.h
old mode 100644
new mode 100755
index 6b241b2..a0a1502
--- a/lib/cpp/src/transport/TSSLSocket.h
+++ b/lib/cpp/src/transport/TSSLSocket.h
@@ -201,7 +201,7 @@
    * @param password Pass collected password to OpenSSL
    * @param size     Maximum length of password including NULL character
    */
-  virtual void getPassword(std::string& password, int size) { }
+  virtual void getPassword(std::string& /* password */, int /* size */) {}
  private:
   bool server_;
   boost::shared_ptr<AccessManager> access_;
@@ -253,7 +253,7 @@
   enum Decision {
     DENY   = -1,    // deny access
     SKIP   =  0,    // cannot make decision, move on to next (if any)
-    ALLOW  =  1,    // allow access
+    ALLOW  =  1     // allow access
   };
  /**
   * Destructor
@@ -270,7 +270,7 @@
   * @param  sa Peer IP address
   * @return True if the peer is trusted, false otherwise
   */
- virtual Decision verify(const sockaddr_storage& sa) throw() { return DENY; }
+ virtual Decision verify(const sockaddr_storage& /* sa */ ) throw() { return DENY; }
  /**
   * Determine whether the peer should be granted access or not. It's called
   * every time a DNS subjectAltName/common name is extracted from peer's
@@ -284,7 +284,7 @@
   *
   * Note: The "name" parameter may be UTF8 encoded.
   */
- virtual Decision verify(const std::string& host, const char* name, int size)
+ virtual Decision verify(const std::string& /* host */, const char* /* name */, int /* size */)
    throw() { return DENY; }
  /**
   * Determine whether the peer should be granted access or not. It's called
@@ -295,7 +295,7 @@
   * @param  size Length of the IP address
   * @return True if the peer is trusted, false otherwise
   */
- virtual Decision verify(const sockaddr_storage& sa, const char* data, int size)
+ virtual Decision verify(const sockaddr_storage& /* sa */, const char* /* data */, int /* size */)
    throw() { return DENY; }
 };
 
