C++ changes required to maintain gcc4.4 compatibility - reduce use
of ambiguous nullptr, eliminate use of brace initializer lists
diff --git a/src/cpp/client/secure_credentials.cc b/src/cpp/client/secure_credentials.cc
index 1693cf7..1368a4c 100644
--- a/src/cpp/client/secure_credentials.cc
+++ b/src/cpp/client/secure_credentials.cc
@@ -154,10 +154,10 @@
 void MetadataCredentialsPluginWrapper::GetMetadata(
     void* wrapper, const char* service_url,
     grpc_credentials_plugin_metadata_cb cb, void* user_data) {
-  GPR_ASSERT(wrapper != nullptr);
+  GPR_ASSERT(!wrapper);
   MetadataCredentialsPluginWrapper* w =
       reinterpret_cast<MetadataCredentialsPluginWrapper*>(wrapper);
-  if (w->plugin_ == nullptr) {
+  if (!w->plugin_) {
     cb(user_data, NULL, 0, GRPC_STATUS_OK, NULL);
     return;
   }
@@ -177,11 +177,12 @@
   Status status = plugin_->GetMetadata(service_url, &metadata);
   std::vector<grpc_metadata> md;
   for (auto it = metadata.begin(); it != metadata.end(); ++it) {
-    md.push_back({it->first.c_str(),
-                  it->second.data(),
-                  it->second.size(),
-                  0,
-                  {{nullptr, nullptr, nullptr, nullptr}}});
+    grpc_metadata md_entry;
+    md_entry.key = it->first.c_str();
+    md_entry.value = it->second.data();
+    md_entry.value_length = it->second.size();
+    md_entry.flags = 0;
+    md.push_back(md_entry);
   }
   cb(user_data, md.empty() ? nullptr : &md[0], md.size(),
      static_cast<grpc_status_code>(status.error_code()),
diff --git a/src/cpp/server/secure_server_credentials.cc b/src/cpp/server/secure_server_credentials.cc
index 90afebf..7c828cb 100644
--- a/src/cpp/server/secure_server_credentials.cc
+++ b/src/cpp/server/secure_server_credentials.cc
@@ -52,7 +52,7 @@
     void* wrapper, grpc_auth_context* context, const grpc_metadata* md,
     size_t num_md, grpc_process_auth_metadata_done_cb cb, void* user_data) {
   auto* w = reinterpret_cast<AuthMetadataProcessorAyncWrapper*>(wrapper);
-  if (w->processor_ == nullptr) {
+  if (!w->processor_) {
     // Early exit.
     cb(user_data, nullptr, 0, nullptr, 0, GRPC_STATUS_OK, nullptr);
     return;
@@ -86,20 +86,22 @@
   std::vector<grpc_metadata> consumed_md;
   for (auto it = consumed_metadata.begin(); it != consumed_metadata.end();
        ++it) {
-    consumed_md.push_back({it->first.c_str(),
-                           it->second.data(),
-                           it->second.size(),
-                           0,
-                           {{nullptr, nullptr, nullptr, nullptr}}});
+    grpc_metadata md_entry;
+    md_entry.key = it->first.c_str();
+    md_entry.value = it->second.data();
+    md_entry.value_length = it->second.size();
+    md_entry.flags = 0;
+    consumed_md.push_back(md_entry);
   }
   std::vector<grpc_metadata> response_md;
   for (auto it = response_metadata.begin(); it != response_metadata.end();
        ++it) {
-    response_md.push_back({it->first.c_str(),
-                           it->second.data(),
-                           it->second.size(),
-                           0,
-                           {{nullptr, nullptr, nullptr, nullptr}}});
+    grpc_metadata md_entry;
+    md_entry.key = it->first.c_str();
+    md_entry.value = it->second.data();
+    md_entry.value_length = it->second.size();
+    md_entry.flags = 0;
+    response_md.push_back(md_entry);
   }
   auto consumed_md_data = consumed_md.empty() ? nullptr : &consumed_md[0];
   auto response_md_data = response_md.empty() ? nullptr : &response_md[0];