Просмотр исходного кода

Trim excessively long error messages

Rod Hynes 11 лет назад
Родитель
Сommit
e2eee074d9
2 измененных файлов с 12 добавлено и 1 удалено
  1. 2 1
      psiphon/serverApi.go
  2. 10 0
      psiphon/utils.go

+ 2 - 1
psiphon/serverApi.go

@@ -237,7 +237,8 @@ func (session *Session) buildRequestUrl(path string, extraParams ...*ExtraParam)
 func (session *Session) doGetRequest(requestUrl string) (responseBody []byte, err error) {
 	response, err := session.psiphonHttpsClient.Get(requestUrl)
 	if err != nil {
-		return nil, ContextError(err)
+		// Trim this error since it may include long URLs
+		return nil, ContextError(TrimError(err))
 	}
 	defer response.Body.Close()
 	body, err := ioutil.ReadAll(response.Body)

+ 10 - 0
psiphon/utils.go

@@ -65,6 +65,16 @@ func MakeSecureRandomBytes(length int) ([]byte, error) {
 	return randomBytes, nil
 }
 
+// TrimError removes the middle of over-long error message strings
+func TrimError(err error) error {
+	const MAX_LEN = 100
+	message := fmt.Sprintf("%s", err)
+	if len(message) > MAX_LEN {
+		return errors.New(message[:MAX_LEN/2] + "..." + message[len(message)-MAX_LEN/2:])
+	}
+	return err
+}
+
 // ContextError prefixes an error message with the current function name
 func ContextError(err error) error {
 	pc, _, _, _ := runtime.Caller(1)