Skip to content

Commit

Permalink
mime/multipart: unified Part and Reader receiver name
Browse files Browse the repository at this point in the history
Change-Id: Ic36dd232f3ea049403715fadec00a74efbf7dc9e
Reviewed-on: https://go-review.googlesource.com/c/go/+/394075
Run-TryBot: Ian Lance Taylor <[email protected]>
TryBot-Result: Gopher Robot <[email protected]>
Reviewed-by: Ian Lance Taylor <[email protected]>
Reviewed-by: Damien Neil <[email protected]>
Trust: Damien Neil <[email protected]>
  • Loading branch information
wdvxdr1123 authored and neild committed Mar 31, 2022
1 parent 9a53b47 commit fb2a9d2
Showing 1 changed file with 14 additions and 14 deletions.
28 changes: 14 additions & 14 deletions src/mime/multipart/multipart.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit fb2a9d2

Please sign in to comment.