diff --git a/pkg/helper/darwin.go b/pkg/helper/darwin.go
index f2913224b3025fd34907dce2a932ff17325066b6..0cee714adf6da119607cbe0e10a90491074829e5 100644
--- a/pkg/helper/darwin.go
+++ b/pkg/helper/darwin.go
@@ -27,7 +27,6 @@ To inspect the rules in the firewall manually, use the bitmask anchor:
 package helper
 
 import (
-	"bytes"
 	"errors"
 	"fmt"
 	"log"
@@ -124,7 +123,7 @@ func firewallIsUp() bool {
 		log.Printf(string(out))
 		return false
 	}
-	return bytes.Contains(out, []byte("block out proto udp to any port 53"))
+	return strings.Contains(string(out), "block drop out proto udp from any to any port = 53")
 }
 
 func enablePf() {
diff --git a/pkg/standalone/launcher.go b/pkg/standalone/launcher.go
index 36d7ab0555847177f5df013c14214437b4248693..ed9ea5dc4f76298904c6176ed90dcde98470bfe6 100644
--- a/pkg/standalone/launcher.go
+++ b/pkg/standalone/launcher.go
@@ -23,6 +23,7 @@ import (
 	"io"
 	"io/ioutil"
 	"net/http"
+	"strconv"
 
 	"0xacab.org/leap/bitmask-vpn/pkg/standalone/bonafide"
 )
@@ -75,13 +76,29 @@ func (l *launcher) firewallStop() error {
 }
 
 func (l *launcher) firewallIsUp() bool {
+	var isup bool = false
 	res, err := http.Post(helperAddr+"/firewall/isup", "", nil)
 	if err != nil {
 		return false
 	}
 	defer res.Body.Close()
 
-	return res.StatusCode == http.StatusOK
+	if res.StatusCode != http.StatusOK {
+		fmt.Printf("Got an error status code for firewall/isup: %v\n", res.StatusCode)
+		isup = false
+	} else {
+		upStr, err := ioutil.ReadAll(res.Body)
+		if err != nil {
+			fmt.Errorf("Error getting body for firewall/isup: %q", err)
+			return false
+		}
+		isup, err = strconv.ParseBool(string(upStr))
+		if err != nil {
+			fmt.Errorf("Error parsing body for firewall/isup: %q", err)
+			return false
+		}
+	}
+	return isup
 }
 
 func (l *launcher) send(path string, body []byte) error {