diff --git a/mpod.cpp b/mpod.cpp
index 08e79eab70fe49d84b272baf20dab534cef4f19d..4ceb264867b8642de2ca540992e7a299ca29412f 100644
--- a/mpod.cpp
+++ b/mpod.cpp
@@ -142,6 +142,11 @@ bool MPOD::message(const SNMP::Message *message) {
         // that far.
         const char *channel = strrchr(varbind->getName(), '.') + 1;
         _channel = atoi(channel);
+
+        // MPOD SNMP channel 0 does not exist (starts from 1; U0 is 1).
+        // Mark the channel as 0 if invalid data was received.
+        // This can be used later to validate a sent request.
+        _channel = found ? _channel : 0;
     }
     // Return true if nodes found, that means this is a valid response from MPOD
     return found;
diff --git a/rest.cpp b/rest.cpp
index 2f1b0aef913d5460618ed72a54d48bf336c2c6bc..e4bbea1f025e0beae09f5fd353127b3718a6f917 100644
--- a/rest.cpp
+++ b/rest.cpp
@@ -161,7 +161,7 @@ void sendSNMP() {
 
     if (output != NONE && channel != 0) {
         setChannelStateAndWait(&ipAddr, channel, output);
-        success = true;  // validates input parameters, not MPOD status, reported separately
+        success = mpod.getChannel() ? true : false;
     }
 
     String http_msg = "{\n";
@@ -285,7 +285,12 @@ void pollMPODChannel() {
         delay(MPOD_UPDATE_LATENCY);
         snmp.loop();  // Force loop to update now
 
-        ret = mpod.toJSON();
+        if (mpod.getChannel()) {
+            ret = mpod.toJSON();
+        } else {
+            ret = "\"reason\": \"Invalid channel\"";
+            channel = 0;
+        }
     }
 
     String http_msg = "{\n";