Prechádzať zdrojové kódy

*: handle non-syscall errors

Jonathan Boulle 9 rokov pred
rodič
commit
fec6e61ebf
1 zmenil súbory, kde vykonal 4 pridanie a 2 odobranie
  1. 4 2
      iptables/iptables.go

+ 4 - 2
iptables/iptables.go

@@ -81,10 +81,11 @@ func (ipt *IPTables) Exists(table, chain string, rulespec ...string) (bool, erro
 	}
 	cmd := append([]string{"-t", table, "-C", chain}, rulespec...)
 	err := ipt.run(cmd...)
+	eerr, eok := err.(*Error)
 	switch {
 	case err == nil:
 		return true, nil
-	case err.(*Error).ExitStatus() == 1:
+	case eok && eerr.ExitStatus() == 1:
 		return false, nil
 	default:
 		return false, err
@@ -148,10 +149,11 @@ func (ipt *IPTables) NewChain(table, chain string) error {
 func (ipt *IPTables) ClearChain(table, chain string) error {
 	err := ipt.NewChain(table, chain)
 
+	eerr, eok := err.(*Error)
 	switch {
 	case err == nil:
 		return nil
-	case err.(*Error).ExitStatus() == 1:
+	case eok && eerr.ExitStatus() == 1:
 		// chain already exists. Flush (clear) it.
 		return ipt.run("-t", table, "-F", chain)
 	default: