]> Cypherpunks repositories - gostls13.git/commitdiff
mime/multipart: remove newline at top of the multipart.
authorYasuhiro Matsumoto <mattn.jp@gmail.com>
Thu, 23 Jun 2011 17:11:33 +0000 (10:11 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Thu, 23 Jun 2011 17:11:33 +0000 (10:11 -0700)
R=golang-dev, bradfitz, arctanofyourface
CC=golang-dev
https://golang.org/cl/4635063

src/pkg/mime/multipart/writer.go
src/pkg/mime/multipart/writer_test.go

index b436dd0124587728d42dda4300812f5568051d49..97a8897b299a455c14e06dc64505bf1abded3a8a 100644 (file)
@@ -61,7 +61,11 @@ func (w *Writer) CreatePart(header textproto.MIMEHeader) (io.Writer, os.Error) {
                }
        }
        var b bytes.Buffer
-       fmt.Fprintf(&b, "\r\n--%s\r\n", w.boundary)
+       if w.lastpart != nil {
+               fmt.Fprintf(&b, "\r\n--%s\r\n", w.boundary)
+       } else {
+               fmt.Fprintf(&b, "--%s\r\n", w.boundary)
+       }
        // TODO(bradfitz): move this to textproto.MimeHeader.Write(w), have it sort
        // and clean, like http.Header.Write(w) does.
        for k, vv := range header {
index e6a04c3887c34aadba8269c8ea01bfab4733ac57..494e936c4c6de686360378fd7772906d0ff78d46 100644 (file)
@@ -30,6 +30,13 @@ func TestWriter(t *testing.T) {
                if err != nil {
                        t.Fatalf("Close: %v", err)
                }
+               s := b.String()
+               if len(s) == 0 {
+                       t.Fatal("String: unexpected empty result")
+               }
+               if s[0] == '\r' || s[0] == '\n' {
+                       t.Fatal("String: unexpected newline")
+               }
        }
 
        r := NewReader(&b, w.Boundary())