@@ -285,8 +285,10 @@ func (r *Reader) ReadCodeLine(expectCode int) (code int, message string, err err
285
285
//
286
286
// An expectCode <= 0 disables the check of the status code.
287
287
func (r * Reader ) ReadResponse (expectCode int ) (code int , message string , err error ) {
288
- code , continued , message , err := r .readCodeLine (expectCode )
288
+ code , continued , first , err := r .readCodeLine (expectCode )
289
289
multi := continued
290
+ var messageBuilder strings.Builder
291
+ messageBuilder .WriteString (first )
290
292
for continued {
291
293
line , err := r .ReadLine ()
292
294
if err != nil {
@@ -297,12 +299,15 @@ func (r *Reader) ReadResponse(expectCode int) (code int, message string, err err
297
299
var moreMessage string
298
300
code2 , continued , moreMessage , err = parseCodeLine (line , 0 )
299
301
if err != nil || code2 != code {
300
- message += "\n " + strings .TrimRight (line , "\r \n " )
302
+ messageBuilder .WriteByte ('\n' )
303
+ messageBuilder .WriteString (strings .TrimRight (line , "\r \n " ))
301
304
continued = true
302
305
continue
303
306
}
304
- message += "\n " + moreMessage
307
+ messageBuilder .WriteByte ('\n' )
308
+ messageBuilder .WriteString (moreMessage )
305
309
}
310
+ message = messageBuilder .String ()
306
311
if err != nil && multi && message != "" {
307
312
// replace one line error message with all lines (full message)
308
313
err = & Error {code , message }
0 commit comments