From: Wayne Zuo Date: Sun, 20 Mar 2022 14:04:43 +0000 (+0800) Subject: mime/multipart: unified Part and Reader receiver name X-Git-Tag: go1.19beta1~821 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=fb2a9d27e395af5bb0c88d0fa453bba868275800;p=gostls13.git mime/multipart: unified Part and Reader receiver name Change-Id: Ic36dd232f3ea049403715fadec00a74efbf7dc9e Reviewed-on: https://go-review.googlesource.com/c/go/+/394075 Run-TryBot: Ian Lance Taylor TryBot-Result: Gopher Robot Reviewed-by: Ian Lance Taylor Reviewed-by: Damien Neil Trust: Damien Neil --- diff --git a/src/mime/multipart/multipart.go b/src/mime/multipart/multipart.go index 81bf722d4e..1054e7a4ce 100644 --- a/src/mime/multipart/multipart.go +++ b/src/mime/multipart/multipart.go @@ -149,11 +149,11 @@ func newPart(mr *Reader, rawPart bool) (*Part, error) { return bp, nil } -func (bp *Part) populateHeaders() error { - r := textproto.NewReader(bp.mr.bufReader) +func (p *Part) populateHeaders() error { + r := textproto.NewReader(p.mr.bufReader) header, err := r.ReadMIMEHeader() if err == nil { - bp.Header = header + p.Header = header } return err } @@ -386,36 +386,36 @@ func (r *Reader) nextPart(rawPart bool) (*Part, error) { // isFinalBoundary reports whether line is the final boundary line // indicating that all parts are over. // It matches `^--boundary--[ \t]*(\r\n)?$` -func (mr *Reader) isFinalBoundary(line []byte) bool { - if !bytes.HasPrefix(line, mr.dashBoundaryDash) { +func (r *Reader) isFinalBoundary(line []byte) bool { + if !bytes.HasPrefix(line, r.dashBoundaryDash) { return false } - rest := line[len(mr.dashBoundaryDash):] + rest := line[len(r.dashBoundaryDash):] rest = skipLWSPChar(rest) - return len(rest) == 0 || bytes.Equal(rest, mr.nl) + return len(rest) == 0 || bytes.Equal(rest, r.nl) } -func (mr *Reader) isBoundaryDelimiterLine(line []byte) (ret bool) { +func (r *Reader) isBoundaryDelimiterLine(line []byte) (ret bool) { // https://tools.ietf.org/html/rfc2046#section-5.1 // The boundary delimiter line is then defined as a line // consisting entirely of two hyphen characters ("-", // decimal value 45) followed by the boundary parameter // value from the Content-Type header field, optional linear // whitespace, and a terminating CRLF. - if !bytes.HasPrefix(line, mr.dashBoundary) { + if !bytes.HasPrefix(line, r.dashBoundary) { return false } - rest := line[len(mr.dashBoundary):] + rest := line[len(r.dashBoundary):] rest = skipLWSPChar(rest) // On the first part, see our lines are ending in \n instead of \r\n // and switch into that mode if so. This is a violation of the spec, // but occurs in practice. - if mr.partsRead == 0 && len(rest) == 1 && rest[0] == '\n' { - mr.nl = mr.nl[1:] - mr.nlDashBoundary = mr.nlDashBoundary[1:] + if r.partsRead == 0 && len(rest) == 1 && rest[0] == '\n' { + r.nl = r.nl[1:] + r.nlDashBoundary = r.nlDashBoundary[1:] } - return bytes.Equal(rest, mr.nl) + return bytes.Equal(rest, r.nl) } // skipLWSPChar returns b with leading spaces and tabs removed.