@@ -168,7 +168,6 @@ AWS.S3.ManagedUpload = AWS.util.inherit({
168
168
} ) ;
169
169
}
170
170
}
171
-
172
171
if ( runFill ) self . fillQueue . call ( self ) ;
173
172
} ,
174
173
@@ -204,7 +203,9 @@ AWS.S3.ManagedUpload = AWS.util.inherit({
204
203
validateBody : function validateBody ( ) {
205
204
var self = this ;
206
205
self . body = self . service . config . params . Body ;
207
- if ( ! self . body ) throw new Error ( 'params.Body is required' ) ;
206
+ if ( self . body === null || self . body === undefined ) {
207
+ throw new Error ( 'params.Body is required' ) ;
208
+ }
208
209
if ( typeof self . body === 'string' ) {
209
210
self . body = new AWS . util . Buffer ( self . body ) ;
210
211
}
@@ -239,7 +240,7 @@ AWS.S3.ManagedUpload = AWS.util.inherit({
239
240
} catch ( e ) { }
240
241
241
242
// try to adjust partSize if we know payload length
242
- if ( self . totalBytes ) {
243
+ if ( typeof self . totalBytes === 'number' ) {
243
244
var newPartSize = Math . ceil ( self . totalBytes / self . maxTotalParts ) ;
244
245
if ( newPartSize > self . partSize ) self . partSize = newPartSize ;
245
246
} else {
@@ -323,7 +324,8 @@ AWS.S3.ManagedUpload = AWS.util.inherit({
323
324
fillBuffer : function fillBuffer ( ) {
324
325
var self = this ;
325
326
var bodyLen = byteLength ( self . body ) ;
326
- while ( self . activeParts < self . queueSize && self . partPos < bodyLen ) {
327
+ while ( ! self . isDoneChunking && self . activeParts < self . queueSize
328
+ && self . partPos <= bodyLen ) {
327
329
var endPos = Math . min ( self . partPos + self . partSize , bodyLen ) ;
328
330
var buf = self . sliceFn . call ( self . body , self . partPos , endPos ) ;
329
331
self . partPos += self . partSize ;
@@ -349,20 +351,19 @@ AWS.S3.ManagedUpload = AWS.util.inherit({
349
351
self . partBuffer = AWS . util . Buffer . concat ( [ self . partBuffer , buf ] ) ;
350
352
self . totalChunkedBytes += buf . length ;
351
353
}
352
-
353
354
if ( self . partBuffer . length >= self . partSize ) {
354
355
self . nextChunk ( self . partBuffer . slice ( 0 , self . partSize ) ) ;
355
356
self . partBuffer = self . partBuffer . slice ( self . partSize ) ;
356
357
} else if ( self . isDoneChunking ) {
357
358
self . totalBytes = self . totalChunkedBytes ;
358
- if ( self . partBuffer . length > 0 ) {
359
+ if ( self . partBuffer . length >= 0 ) {
359
360
self . numParts ++ ;
360
361
self . nextChunk ( self . partBuffer ) ;
361
362
}
362
363
self . partBuffer = new AWS . util . Buffer ( 0 ) ;
363
364
}
364
365
365
- self . body . read ( 0 ) ;
366
+ if ( ! self . isDoneChunking ) self . body . read ( 0 ) ;
366
367
} ,
367
368
368
369
/**
0 commit comments