Skip to content

Commit 31936cb

Browse files
committed
dialers/retrier: rmv deadlines when using io.ReaderFrom
deadlines are extended on io.Reader and io.Writer semantics and thus are incompatible with io.ReaderFrom APIs. Ideally, a context would carry the deadlines, but the code isn't setup for it just yet.
1 parent ebb8885 commit 31936cb

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

intra/dialers/retrier.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,13 @@ func (r *retrier) ReadFrom(reader io.Reader) (bytes int64, err error) {
623623
bytes += b
624624
}
625625

626+
if optimizedReadFrom {
627+
// disable read and write deadlines as io.ReaderFrom does not
628+
// rely on io.Read and io.Write semantics from which deadlines
629+
// are usually extended to avoid timeouts (see also: rwconn.go)
630+
r.SetDeadline(time.Time{})
631+
}
632+
626633
logeif(err)("retrier: readfrom: (optimized? %t) done (id: %s, pinned? %t); sz: %d; err: %v",
627634
optimizedReadFrom, pinnedID, pinned, bytes, err)
628635
return

0 commit comments

Comments
 (0)