diff --git a/tcp.go b/tcp.go
index 5335e0702d09eb8aa58e848904d2586eb4567119..e142fac6147b232276cdbed83a521c60c59244c0 100644
--- a/tcp.go
+++ b/tcp.go
@@ -55,7 +55,11 @@ func tcpHandleConnection(conn net.Conn, logger *zap.Logger) {
 		targetAddr = Opts.TargetAddr4
 	}
 
-	logger = logger.With(zap.String("clientAddr", saddr.String()), zap.String("targetAddr", targetAddr))
+	clientAddr := "UNKNOWN"
+	if saddr != nil {
+		clientAddr = saddr.String()
+	}
+	logger = logger.With(zap.String("clientAddr", clientAddr), zap.String("targetAddr", targetAddr))
 	if Opts.Verbose > 1 {
 		logger.Debug("successfully parsed PROXY header")
 	}