Close body.
()
| 97 | |
| 98 | // Close body. |
| 99 | func (bw *bodyWrapper) Close() error { |
| 100 | bw.mu.Lock() |
| 101 | defer bw.mu.Unlock() |
| 102 | |
| 103 | // Preserve original reader error. |
| 104 | err := bw.closeErr |
| 105 | |
| 106 | // Rewind or GetBody may be called later, so be sure to |
| 107 | // read body into memory before closing. |
| 108 | if !bw.isRewindDisabled && !bw.isFullyRead { |
| 109 | bw.isReadBefore = true |
| 110 | |
| 111 | if readErr := bw.httpReadFull(); readErr != nil { |
| 112 | err = readErr |
| 113 | } |
| 114 | } |
| 115 | |
| 116 | // Close original reader. |
| 117 | closeErr := bw.closeAndCancel() |
| 118 | if closeErr != nil { |
| 119 | err = closeErr |
| 120 | } |
| 121 | |
| 122 | // Reset memory reader. |
| 123 | bw.memReader = bytes.NewReader(nil) |
| 124 | |
| 125 | // Free memory when rewind is disabled. |
| 126 | if bw.isRewindDisabled { |
| 127 | bw.memBytes = nil |
| 128 | } |
| 129 | |
| 130 | return err |
| 131 | } |
| 132 | |
| 133 | // Rewind reading to the beginning. |
| 134 | func (bw *bodyWrapper) Rewind() { |
nothing calls this directly
no test coverage detected