From eb42a16da9cd3aeb5e04df8ee7574a68c600d725 Mon Sep 17 00:00:00 2001 From: Percy Wegmann Date: Tue, 26 Mar 2024 15:53:17 -0500 Subject: [PATCH] ipn/ipnlocal: report Taildrive access message on failed responses For example, if we get a 404 when downloading a file, we'll report access. Also, to reduce verbosty of logs, this elides 0 length files. Updates tailscale/corp#17818 Signed-off-by: Percy Wegmann --- ipn/ipnlocal/local.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ipn/ipnlocal/local.go b/ipn/ipnlocal/local.go index b2c5a8be1..2229a0e86 100644 --- a/ipn/ipnlocal/local.go +++ b/ipn/ipnlocal/local.go @@ -4776,7 +4776,11 @@ func (rbw *responseBodyWrapper) logAccess(err string) { return } - rbw.log("tailfs: access: %s from %s to %s: status-code=%d ext=%q content-type=%q content-length=%.f tx=%.f rx=%.f err=%q", rbw.method, rbw.selfNodeKey, rbw.shareNodeKey, rbw.statusCode, rbw.fileExtension, rbw.contentType, roundTraffic(rbw.contentLength), roundTraffic(rbw.bytesTx), roundTraffic(rbw.bytesRx), err) + // Some operating systems create and copy lots of 0 length hidden files for + // tracking various states. Omit these to keep logs from being too verbose. + if rbw.contentLength > 0 { + rbw.log("tailfs: access: %s from %s to %s: status-code=%d ext=%q content-type=%q content-length=%.f tx=%.f rx=%.f err=%q", rbw.method, rbw.selfNodeKey, rbw.shareNodeKey, rbw.statusCode, rbw.fileExtension, rbw.contentType, roundTraffic(rbw.contentLength), roundTraffic(rbw.bytesTx), roundTraffic(rbw.bytesRx), err) + } } // Read implements the io.Reader interface. @@ -4846,7 +4850,12 @@ func (t *tailFSTransport) RoundTrip(req *http.Request) (resp *http.Response, err ReadCloser: resp.Body, } - resp.Body = &rbw + if resp.StatusCode >= 400 { + // in case of error response, just log immediately + rbw.logAccess("") + } else { + resp.Body = &rbw + } }() // dialTimeout is fairly aggressive to avoid hangs on contacting offline or