linagora / james-project

Mirror of Apache James Project
Apache License 2.0
70 stars 63 forks source link

java.lang.IllegalArgumentException: Validation failed for header 'Content-Disposition' #5118

Closed chibenwa closed 6 months ago

chibenwa commented 6 months ago
java.lang.IllegalArgumentException: Validation failed for header 'Content-Disposition'
    at io.netty.handler.codec.DefaultHeaders.validateValue(DefaultHeaders.java:1019)
    at io.netty.handler.codec.DefaultHeaders.set(DefaultHeaders.java:468)
    at io.netty.handler.codec.DefaultHeaders.setObject(DefaultHeaders.java:520)
    at io.netty.handler.codec.http.DefaultHttpHeaders.set(DefaultHttpHeaders.java:169)
    at reactor.netty.http.server.HttpServerOperations.header(HttpServerOperations.java:327)
    at org.apache.james.jmap.routes.DownloadRoutes.addContentDispositionHeaderRegardingEncoding(DownloadRoutes.scala:349)
    at org.apache.james.jmap.routes.DownloadRoutes.$anonfun$addContentDispositionHeader$2(DownloadRoutes.scala:332)
    at scala.Option.map(Option.scala:242)
    at org.apache.james.jmap.routes.DownloadRoutes.$anonfun$addContentDispositionHeader$1(DownloadRoutes.scala:332)
    at scala.Function1.$anonfun$compose$1(Function1.scala:79)
    at org.apache.james.jmap.routes.DownloadRoutes.$anonfun$downloadBlob$2(DownloadRoutes.scala:321)
    at reactor.core.publisher.MonoUsing.subscribe(MonoUsing.java:85)
    at reactor.core.publisher.Mono.subscribe(Mono.java:4512)
    at reactor.core.publisher.MonoIgnorePublisher.subscribe(MonoIgnorePublisher.java:57)
    at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76)
    at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165)
    at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74)
    at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
    at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:129)
    at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:129)
    at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82)
    at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129)
    at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.runAsync(FluxPublishOn.java:440)
    at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.run(FluxPublishOn.java:527)
    at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
    at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: a header value contains prohibited character 0xa at index 37.
    at io.netty.handler.codec.http.DefaultHttpHeaders$HeaderValueValidator.validate(DefaultHttpHeaders.java:395)
    at io.netty.handler.codec.http.DefaultHttpHeaders$HeaderValueValidator.validate(DefaultHttpHeaders.java:387)
    at io.netty.handler.codec.DefaultHeaders.validateValue(DefaultHeaders.java:1017)
    ... 30 common frames omitted
chibenwa commented 6 months ago

image

Likely an ascii char that is invalid in a header...

If this fails we can simply fallback to the encoded file name.

chibenwa commented 6 months ago

CF https://github.com/apache/james-project/pull/2097