24
24
import io .undertow .server .Connectors ;
25
25
import io .undertow .server .HttpHandler ;
26
26
import io .undertow .server .HttpServerExchange ;
27
+ import io .undertow .util .HeaderMap ;
27
28
import io .undertow .util .Headers ;
28
29
import io .undertow .util .StatusCodes ;
29
30
import org .xnio .ChannelListener ;
@@ -108,6 +109,9 @@ public void receiveFullString(final FullStringCallback callback, final ErrorCall
108
109
return ;
109
110
}
110
111
String contentLengthString = exchange .getRequestHeaders ().getFirst (Headers .CONTENT_LENGTH );
112
+ if (contentLengthString == null ) {
113
+ contentLengthString = exchange .getRequestHeaders ().getFirst (Headers .X_CONTENT_LENGTH );
114
+ }
111
115
long contentLength ;
112
116
final ByteArrayOutputStream sb ;
113
117
if (contentLengthString != null ) {
@@ -137,7 +141,12 @@ public void receiveFullString(final FullStringCallback callback, final ErrorCall
137
141
res = channel .read (buffer );
138
142
if (res == -1 ) {
139
143
done = true ;
140
- callback .handle (exchange , sb .toString (charset .name ()));
144
+ final String message = sb .toString (charset .name ());
145
+ final HeaderMap requestHeaders = exchange .getRequestHeaders ();
146
+ if (requestHeaders .contains (Headers .X_CONTENT_LENGTH ) && !requestHeaders .contains (Headers .CONTENT_LENGTH )) {
147
+ requestHeaders .put (Headers .CONTENT_LENGTH , message .length ());
148
+ }
149
+ callback .handle (exchange , message );
141
150
return ;
142
151
} else if (res == 0 ) {
143
152
channel .getReadSetter ().set (new ChannelListener <StreamSourceChannel >() {
@@ -159,7 +168,12 @@ public void handleEvent(StreamSourceChannel channel) {
159
168
Connectors .executeRootHandler (new HttpHandler () {
160
169
@ Override
161
170
public void handleRequest (HttpServerExchange exchange ) throws Exception {
162
- callback .handle (exchange , sb .toString (charset .name ()));
171
+ final String message = sb .toString (charset .name ());
172
+ final HeaderMap requestHeaders = exchange .getRequestHeaders ();
173
+ if (requestHeaders .contains (Headers .X_CONTENT_LENGTH ) && !requestHeaders .contains (Headers .CONTENT_LENGTH )) {
174
+ requestHeaders .put (Headers .CONTENT_LENGTH , message .length ());
175
+ }
176
+ callback .handle (exchange , message );
163
177
}
164
178
}, exchange );
165
179
return ;
@@ -238,6 +252,9 @@ public void receivePartialString(final PartialStringCallback callback, final Err
238
252
return ;
239
253
}
240
254
String contentLengthString = exchange .getRequestHeaders ().getFirst (Headers .CONTENT_LENGTH );
255
+ if (contentLengthString == null ) {
256
+ contentLengthString = exchange .getRequestHeaders ().getFirst (Headers .X_CONTENT_LENGTH );
257
+ }
241
258
long contentLength ;
242
259
if (contentLengthString != null ) {
243
260
contentLength = Long .parseLong (contentLengthString );
@@ -396,7 +413,12 @@ public void receiveFullBytes(final FullBytesCallback callback, final ErrorCallba
396
413
res = channel .read (buffer );
397
414
if (res == -1 ) {
398
415
done = true ;
399
- callback .handle (exchange , sb .toByteArray ());
416
+ final byte [] message = sb .toByteArray ();
417
+ final HeaderMap requestHeaders = exchange .getRequestHeaders ();
418
+ if (requestHeaders .contains (Headers .X_CONTENT_LENGTH ) && !requestHeaders .contains (Headers .CONTENT_LENGTH )) {
419
+ requestHeaders .put (Headers .CONTENT_LENGTH , message .length );
420
+ }
421
+ callback .handle (exchange , message );
400
422
return ;
401
423
} else if (res == 0 ) {
402
424
channel .getReadSetter ().set (new ChannelListener <StreamSourceChannel >() {
@@ -418,7 +440,12 @@ public void handleEvent(StreamSourceChannel channel) {
418
440
Connectors .executeRootHandler (new HttpHandler () {
419
441
@ Override
420
442
public void handleRequest (HttpServerExchange exchange ) throws Exception {
421
- callback .handle (exchange , sb .toByteArray ());
443
+ final byte [] message = sb .toByteArray ();
444
+ final HeaderMap requestHeaders = exchange .getRequestHeaders ();
445
+ if (requestHeaders .contains (Headers .X_CONTENT_LENGTH ) && !requestHeaders .contains (Headers .CONTENT_LENGTH )) {
446
+ requestHeaders .put (Headers .CONTENT_LENGTH , message .length );
447
+ }
448
+ callback .handle (exchange , message );
422
449
}
423
450
}, exchange );
424
451
return ;
@@ -495,6 +522,9 @@ public void receivePartialBytes(final PartialBytesCallback callback, final Error
495
522
return ;
496
523
}
497
524
String contentLengthString = exchange .getRequestHeaders ().getFirst (Headers .CONTENT_LENGTH );
525
+ if (contentLengthString == null ) {
526
+ contentLengthString = exchange .getRequestHeaders ().getFirst (Headers .X_CONTENT_LENGTH );
527
+ }
498
528
long contentLength ;
499
529
if (contentLengthString != null ) {
500
530
contentLength = Long .parseLong (contentLengthString );
0 commit comments