mirror of
https://github.com/androidx/media.git
synced 2025-05-06 23:20:42 +08:00
Set interrupted flag when throwing InterruptedIOE
This avoids the interrupted flag being lost if the exception is handled as an IOException. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=195366244
This commit is contained in:
parent
d4d1fd64b3
commit
d5034ca889
@ -280,6 +280,7 @@ public class CronetDataSource extends UrlRequest.Callback implements HttpDataSou
|
||||
new SocketTimeoutException(), dataSpec, getStatus(currentUrlRequest));
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
throw new OpenException(new InterruptedIOException(e), dataSpec, Status.INVALID);
|
||||
}
|
||||
|
||||
@ -352,17 +353,18 @@ public class CronetDataSource extends UrlRequest.Callback implements HttpDataSou
|
||||
if (!operation.block(readTimeoutMs)) {
|
||||
throw new SocketTimeoutException();
|
||||
}
|
||||
} catch (InterruptedException | SocketTimeoutException e) {
|
||||
// If we're timing out or getting interrupted, the operation is still ongoing.
|
||||
// So we'll need to replace readBuffer to avoid the possibility of it being written to by
|
||||
// this operation during a subsequent request.
|
||||
} catch (InterruptedException e) {
|
||||
// The operation is ongoing so replace readBuffer to avoid it being written to by this
|
||||
// operation during a subsequent request.
|
||||
readBuffer = null;
|
||||
Thread.currentThread().interrupt();
|
||||
throw new HttpDataSourceException(
|
||||
e instanceof InterruptedException
|
||||
? new InterruptedIOException((InterruptedException) e)
|
||||
: (SocketTimeoutException) e,
|
||||
currentDataSpec,
|
||||
HttpDataSourceException.TYPE_READ);
|
||||
new InterruptedIOException(e), currentDataSpec, HttpDataSourceException.TYPE_READ);
|
||||
} catch (SocketTimeoutException e) {
|
||||
// The operation is ongoing so replace readBuffer to avoid it being written to by this
|
||||
// operation during a subsequent request.
|
||||
readBuffer = null;
|
||||
throw new HttpDataSourceException(e, currentDataSpec, HttpDataSourceException.TYPE_READ);
|
||||
}
|
||||
|
||||
if (exception != null) {
|
||||
|
@ -325,7 +325,7 @@ public class OkHttpDataSource implements HttpDataSource {
|
||||
while (bytesSkipped != bytesToSkip) {
|
||||
int readLength = (int) Math.min(bytesToSkip - bytesSkipped, skipBuffer.length);
|
||||
int read = responseByteStream.read(skipBuffer, 0, readLength);
|
||||
if (Thread.interrupted()) {
|
||||
if (Thread.currentThread().isInterrupted()) {
|
||||
throw new InterruptedIOException();
|
||||
}
|
||||
if (read == -1) {
|
||||
|
@ -526,7 +526,7 @@ public class DefaultHttpDataSource implements HttpDataSource {
|
||||
while (bytesSkipped != bytesToSkip) {
|
||||
int readLength = (int) Math.min(bytesToSkip - bytesSkipped, skipBuffer.length);
|
||||
int read = inputStream.read(skipBuffer, 0, readLength);
|
||||
if (Thread.interrupted()) {
|
||||
if (Thread.currentThread().isInterrupted()) {
|
||||
throw new InterruptedIOException();
|
||||
}
|
||||
if (read == -1) {
|
||||
|
@ -326,6 +326,7 @@ public final class CacheDataSource implements DataSource {
|
||||
try {
|
||||
nextSpan = cache.startReadWrite(key, readPosition);
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
throw new InterruptedIOException();
|
||||
}
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user