374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
|
/*
* 303 means the request should be converted to a GET
* request before redirection. This also means stripping
* the entity of the request.
*/
if (_status == 303) {
OFEnumerator *keyEnumerator, *objectEnumerator;
id key, object;
keyEnumerator = [headers keyEnumerator];
objectEnumerator = [headers objectEnumerator];
while ((key = [keyEnumerator nextObject]) !=
nil &&
(object = [objectEnumerator nextObject]) !=
nil)
|
|
|
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
|
/*
* 303 means the request should be converted to a GET
* request before redirection. This also means stripping
* the entity of the request.
*/
if (_status == 303) {
OFEnumerator *keyEnumerator, *objectEnumerator;
OFString *key, *object;
keyEnumerator = [headers keyEnumerator];
objectEnumerator = [headers objectEnumerator];
while ((key = [keyEnumerator nextObject]) !=
nil &&
(object = [objectEnumerator nextObject]) !=
nil)
|
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
|
*
* We do not use the socket's write buffer in case we need to resend
* the entire request (e.g. in case a keep-alive connection timed out).
*/
@try {
OFString *requestString = constructRequestString(_request);
const char *UTF8String = [requestString UTF8String];
size_t UTF8StringLength = [requestString UTF8StringLength];
/*
* Pass requestString as context to retain it so that the
* underlying buffer lives long enough.
*/
[sock asyncWriteBuffer: UTF8String
length: UTF8StringLength
target: self
selector: @selector(socket:didWriteRequest:
length:context:exception:)
context: requestString];
} @catch (id e) {
[self raiseException: e];
return;
|
<
<
|
|
|
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
|
*
* We do not use the socket's write buffer in case we need to resend
* the entire request (e.g. in case a keep-alive connection timed out).
*/
@try {
OFString *requestString = constructRequestString(_request);
/*
* Pass requestString as context to retain it so that the
* underlying buffer lives long enough.
*/
[sock asyncWriteBuffer: [requestString UTF8String]
length: [requestString UTF8StringLength]
target: self
selector: @selector(socket:didWriteRequest:
length:context:exception:)
context: requestString];
} @catch (id e) {
[self raiseException: e];
return;
|