diff --git a/mollom.module b/mollom.module
index d770feb..61ee1f9 100644
--- a/mollom.module
+++ b/mollom.module
@@ -300,7 +300,7 @@ function mollom_form_alter(&$form, FormStateInterface $form_state, $form_id) {
   $base_form_id = isset($build_info['base_form_id']) ? $build_info['base_form_id'] : $form_id;
   $protected_form_id = '';
   if (isset($forms['protected'][$form_id])) {
-    $protected_form_id = [$form_id];
+    $protected_form_id = $form_id;
   }
   else if (isset($forms['protected'][$base_form_id])) {
     $protected_form_id = $base_form_id;
diff --git a/src/Controller/FormController.php b/src/Controller/FormController.php
index dd24892..3260f9a 100644
--- a/src/Controller/FormController.php
+++ b/src/Controller/FormController.php
@@ -591,7 +591,6 @@ class FormController extends ControllerBase {
     if (!static::shouldValidate($form, $form_state)) {
       return;
     }
-    /** @var \Drupal\mollom\Entity\Form $mollom_form */
     $mollom = $form_state->getValue('mollom');
 
     if ($mollom['mode'] != \Drupal\mollom\Entity\FormInterface::MOLLOM_MODE_ANALYSIS) {
diff --git a/src/Storage/ResponseDataStorage.php b/src/Storage/ResponseDataStorage.php
index be05b11..ae234bb 100644
--- a/src/Storage/ResponseDataStorage.php
+++ b/src/Storage/ResponseDataStorage.php
@@ -79,6 +79,19 @@ class ResponseDataStorage {
 
     $fields = array_intersect_key($save_data + $defaults, $defaults);
 
+    // remove non-nullable fields that are set null, thus allowing the storage
+    // to write its default value.
+    $schema = drupal_get_module_schema('mollom', 'mollom');
+    $not_null_fields = array_filter($schema['fields'], function($col) {
+      return !empty($col['not null']);
+    });
+
+    foreach($not_null_fields as $not_null_field => $properties) {
+      if(array_key_exists($not_null_field, $fields) && $fields[$not_null_field] === null) {
+        unset ($fields[$not_null_field]);
+      }
+    }
+
     $result = \Drupal::database()->merge('mollom')
       ->key(array('id' => $data->id))
       ->fields($fields)
@@ -222,4 +235,4 @@ class ResponseDataStorage {
     }
     return (object) $clone;
   }
-} 
+}
diff --git a/vendor/mollom/client/src/Client/Client.php b/vendor/mollom/client/src/Client/Client.php
index 9b6e0c1..0ab00e7 100644
--- a/vendor/mollom/client/src/Client/Client.php
+++ b/vendor/mollom/client/src/Client/Client.php
@@ -669,7 +669,7 @@ abstract class Client {
     //   (if any)
     // delimited by "&". (3.4.1.1)
     $base_string = implode('&', array(
-      $method,
+      strtoupper($method),
       self::rawurlencode($server . '/' . $path),
       self::rawurlencode($oauth_query),
     ));
@@ -682,7 +682,7 @@ abstract class Client {
     // to query parameters.
     if ($this->oAuthStrategy == 'header') {
       foreach ($oauth as $key => $value) {
-        $oauth[$key] = $key . '="' . self::rawurlencode($value) . '"';
+        $oauth[$key] = self::rawurlencode($key) . '="' . self::rawurlencode($value) . '"';
       }
       // Header parameters are joined and delimited by comma. (3.5.1)
       $headers['Authorization'] = 'OAuth ' . implode(', ', $oauth);
@@ -834,7 +834,7 @@ abstract class Client {
         $key = rawurlencode($parent);
       }
       else {
-        $key = ($parent ? $parent . '[' . rawurlencode($key) . ']' : rawurlencode($key));
+        $key = ($parent ? $parent . rawurlencode('[' . $key . ']') : rawurlencode($key));
       }
 
       // Recurse into children.
