Fixes fetch and node behavior when disableAutoFetch adn disableStream is used.

This commit is contained in:
Yury Delendik 2017-08-30 10:53:38 -05:00
parent 3516a59384
commit 3cff7da0e7
2 changed files with 21 additions and 5 deletions

View File

@ -13,7 +13,9 @@
* limitations under the License.
*/
import { assert, createPromiseCapability } from '../shared/util';
import {
AbortException, assert, createPromiseCapability
} from '../shared/util';
import {
createResponseStatusError, validateRangeRequestCapabilities,
validateResponseStatus
@ -95,8 +97,8 @@ class PDFFetchStreamReader {
if (!validateResponseStatus(response.status, this._stream.isHttp)) {
throw createResponseStatusError(response.status, url);
}
this._headersCapability.resolve();
this._reader = response.body.getReader();
this._headersCapability.resolve();
let { allowRangeRequests, suggestedLength, } =
validateRangeRequestCapabilities({
@ -110,6 +112,12 @@ class PDFFetchStreamReader {
this._contentLength = suggestedLength;
this._isRangeSupported = allowRangeRequests;
// We need to stop reading when range is supported and streaming is
// disabled.
if (!this._isStreamingSupported && this._isRangeSupported) {
this.cancel(new AbortException('streaming is disabled'));
}
}).catch(this._headersCapability.reject);
this.onProgress = null;

View File

@ -19,7 +19,9 @@ let http = __non_webpack_require__('http');
let https = __non_webpack_require__('https');
let url = __non_webpack_require__('url');
import { assert, createPromiseCapability } from '../shared/util';
import {
AbortException, assert, createPromiseCapability
} from '../shared/util';
import { validateRangeRequestCapabilities } from './network_utils';
class PDFNodeStream {
@ -165,6 +167,12 @@ class BaseFullReader {
this._error(reason);
});
// We need to stop reading when range is supported and streaming is
// disabled.
if (!this._isStreamingSupported && this._isRangeSupported) {
this._error(new AbortException('streaming is disabled'));
}
// Destroy ReadableStream if already in errored state.
if (this._errored) {
this._readableStream.destroy(this._reason);
@ -353,8 +361,6 @@ class PDFNodeStreamFsFullReader extends BaseFullReader {
constructor(stream) {
super(stream);
this._setReadableStream(fs.createReadStream(this._url.path));
fs.lstat(this._url.path, (error, stat) => {
if (error) {
this._errored = true;
@ -364,6 +370,8 @@ class PDFNodeStreamFsFullReader extends BaseFullReader {
}
// Setting right content length.
this._contentLength = stat.size;
this._setReadableStream(fs.createReadStream(this._url.path));
this._headersCapability.resolve();
});
}