File tree 2 files changed +25
-1
lines changed
2 files changed +25
-1
lines changed Original file line number Diff line number Diff line change @@ -726,7 +726,9 @@ func (u *URL) String() string {
726
726
buf .WriteString (u .Opaque )
727
727
} else {
728
728
if u .Scheme != "" || u .Host != "" || u .User != nil {
729
- buf .WriteString ("//" )
729
+ if u .Host != "" || u .Path != "" || u .User != nil {
730
+ buf .WriteString ("//" )
731
+ }
730
732
if ui := u .User ; ui != nil {
731
733
buf .WriteString (ui .String ())
732
734
buf .WriteByte ('@' )
Original file line number Diff line number Diff line change @@ -568,6 +568,28 @@ var urltests = []URLTest{
568
568
},
569
569
"" ,
570
570
},
571
+ // test we can roundtrip magnet url
572
+ // fix issue https://golang.org/issue/20054
573
+ {
574
+ "magnet:?xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a&dn" ,
575
+ & URL {
576
+ Scheme : "magnet" ,
577
+ Host : "" ,
578
+ Path : "" ,
579
+ RawQuery : "xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a&dn" ,
580
+ },
581
+ "magnet:?xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a&dn" ,
582
+ },
583
+ {
584
+ "mailto:?subject=hi" ,
585
+ & URL {
586
+ Scheme : "mailto" ,
587
+ Host : "" ,
588
+ Path : "" ,
589
+ RawQuery : "subject=hi" ,
590
+ },
591
+ "mailto:?subject=hi" ,
592
+ },
571
593
}
572
594
573
595
// more useful string for debugging than fmt's struct printer
You can’t perform that action at this time.
0 commit comments