@@ -186,11 +186,11 @@ const api = {
186
186
}
187
187
return { returnTagCount, isImplicitDeny } ;
188
188
}
189
- let bb ;
189
+ let formDataParser ;
190
190
let fileEventData = null ;
191
191
192
192
if ( apiMethod === 'objectPost' ) {
193
- bb = busboy ( { headers : request . headers } ) ;
193
+ formDataParser = busboy ( { headers : request . headers } ) ;
194
194
}
195
195
196
196
return async . waterfall ( [
@@ -204,39 +204,41 @@ const api = {
204
204
request . formData = { } ;
205
205
let totalFieldSize = 0 ;
206
206
const MAX_FIELD_SIZE = 20 * 1024 ; // 20KB
207
- bb . on ( 'field' , ( fieldname , val ) => {
207
+ formDataParser . on ( 'field' , ( fieldname , val ) => {
208
208
totalFieldSize += Buffer . byteLength ( val , 'utf8' ) ;
209
209
if ( totalFieldSize > MAX_FIELD_SIZE ) {
210
210
const err = errors . MaxPostPreDataLengthExceeded ;
211
- bb . emit ( 'error' , err ) ;
211
+ formDataParser . emit ( 'error' , err ) ;
212
212
}
213
213
// Convert fieldname to lowercase for case-insensitive comparison
214
214
const lowerFieldname = fieldname . toLowerCase ( ) ;
215
215
request . formData [ lowerFieldname ] = val ;
216
216
} ) ;
217
217
218
- bb . on ( 'file' , ( fieldname , file , filename , encoding , mimetype ) => {
218
+ formDataParser . on ( 'file' , ( fieldname , file , filename , encoding , mimetype ) => {
219
219
fileEventData = { fieldname, file, filename, encoding, mimetype } ;
220
220
return next ( null ) ;
221
221
} ) ;
222
222
223
- bb . on ( 'finish' , ( ) => {
224
- // if fields are found but no file, continue
223
+ formDataParser . on ( 'finish' , ( ) => {
224
+ // No file field == error
225
225
if ( ! fileEventData ) {
226
- return next ( null ) ;
226
+ const err = errors . InvalidArgument
227
+ . customizeDescription ( 'POST requires exactly one file upload per request.' ) ;
228
+ formDataParser . emit ( 'error' , err ) ;
227
229
}
228
230
return undefined ;
229
231
} ) ;
230
232
231
- bb . on ( 'error' , ( err ) => {
233
+ formDataParser . on ( 'error' , ( err ) => {
232
234
log . trace ( 'Error processing form data:' , {
233
235
error : err ,
234
236
} ) ;
235
- request . unpipe ( bb ) ;
237
+ request . unpipe ( formDataParser ) ;
236
238
return next ( err ) ;
237
239
} ) ;
238
240
239
- request . pipe ( bb ) ;
241
+ request . pipe ( formDataParser ) ;
240
242
} else {
241
243
// issue 100 Continue to the client
242
244
writeContinue ( request , response ) ;
0 commit comments