aboutsummaryrefslogtreecommitdiffstats
path: root/libgemini.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgemini.go')
-rw-r--r--libgemini.go14
1 files changed, 8 insertions, 6 deletions
diff --git a/libgemini.go b/libgemini.go
index 56e1463..20fc137 100644
--- a/libgemini.go
+++ b/libgemini.go
@@ -5,6 +5,7 @@ import (
5 "crypto/tls" 5 "crypto/tls"
6 "errors" 6 "errors"
7 "io" 7 "io"
8 "mime"
8 "net/url" 9 "net/url"
9 "regexp" 10 "regexp"
10 "strconv" 11 "strconv"
@@ -134,13 +135,14 @@ func ParseGeminiHeader(line string) (header *GeminiHeader, err error) {
134 meta := matches[2] 135 meta := matches[2]
135 136
136 if int(status/10) == 2 { 137 if int(status/10) == 2 {
137 if meta == "" { 138 mediaType, params, err := mime.ParseMediaType(meta)
138 meta = DEFAULT_MIME + ";charset=" + DEFAULT_CHARSET
139 }
140 139
141 mimeType := MimeTypePattern.FindString(meta) 140 if err != nil {
142 if strings.HasPrefix(mimeType, "text/") && MimeCharsetPattern.FindString(meta) == "" { 141 meta = DEFAULT_MIME + ";charset=" + DEFAULT_CHARSET
143 meta += ";charset=" + DEFAULT_CHARSET 142 } else if strings.HasPrefix(mediaType, "text/") {
143 if _, ok := params["charset"]; !ok {
144 meta += ";charset=" + DEFAULT_CHARSET
145 }
144 } 146 }
145 } 147 }
146 148