Index: src/main/java/org/ow2/petals/jbi/messaging/routing/util/SourcesForkerUtil.java
===================================================================
--- src/main/java/org/ow2/petals/jbi/messaging/routing/util/SourcesForkerUtil.java	(revision 16370)
+++ src/main/java/org/ow2/petals/jbi/messaging/routing/util/SourcesForkerUtil.java	(working copy)
@@ -81,14 +81,16 @@
         }
 
         final Map<String, NormalizedMessage> messages = exchangeDecorator.getMessages();
-        for (final String messageName : messages.keySet()) {
+        for (final Map.Entry<String, NormalizedMessage> messageEntry : messages.entrySet()) {
             // TODO Handle the Streaming issue for the Attachments??
-            final Source content = messages.get(messageName).getContent();
+            final String messageName = messageEntry.getKey();
+            final Source content = messageEntry.getValue().getContent();
             if (content instanceof StreamSource) {
                 InputStreamForker streamForker = exchangeStreamForked.get(messageName);
                 if (streamForker != null) {
                     streamForker = new InputStreamForker(streamForker.getInputStreamTwo());
                 } else {
+                    // As a StreamSource can be created from an InputStream or a Reader, we must manage both
                     final StreamSource streamContent = (StreamSource) content;
                     final InputStream isContent = streamContent.getInputStream();
                     if (isContent != null) {
@@ -103,7 +105,7 @@
                 }
                 exchangeStreamForked.put(messageName, streamForker);
                 final Source source = new StreamSource(streamForker.getInputStreamOne());
-                messages.get(messageName).setContent(source);
+                messageEntry.getValue().setContent(source);
             }
         }
     }
