Overview
Comment: | OFHTTPClient: Reset client on any exception |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
2c415002da010bc35e5669a699ef8378 |
User & Date: | js on 2018-02-25 20:19:48 |
Other Links: | manifest | tags |
Context
2018-02-27
| ||
20:36 | OFHTTP{Client,Server}: Rename body to requestBody check-in: d375061886 user: js tags: trunk | |
2018-02-25
| ||
20:19 | OFHTTPClient: Reset client on any exception check-in: 2c415002da user: js tags: trunk | |
18:10 | OFURLHandler_HTTP: Require sockets and threads check-in: f4b11d1e1b user: js tags: trunk | |
Changes
Modified src/OFHTTPClient.m from [0d10bb98e9] to [b418796944].
︙ | ︙ | |||
280 281 282 283 284 285 286 287 288 289 290 291 292 293 | [_request release]; [_context release]; [_version release]; [_serverHeaders release]; [super dealloc]; } - (void)createResponseWithSocketOrThrow: (OFTCPSocket *)sock { OFURL *URL = [_request URL]; OFHTTPClientResponse *response; OFString *connectionHeader; bool keepAlive; | > > > > > > > > > > > | 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 | [_request release]; [_context release]; [_version release]; [_serverHeaders release]; [super dealloc]; } - (void)raiseException: (id)exception { [_client close]; _client->_inProgress = false; [_client->_delegate client: _client didEncounterException: exception request: _request context: _context]; } - (void)createResponseWithSocketOrThrow: (OFTCPSocket *)sock { OFURL *URL = [_request URL]; OFHTTPClientResponse *response; OFString *connectionHeader; bool keepAlive; |
︙ | ︙ | |||
413 414 415 416 417 418 419 | } - (void)createResponseWithSocket: (OFTCPSocket *)sock { @try { [self createResponseWithSocketOrThrow: sock]; } @catch (id e) { | < | < < | 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 | } - (void)createResponseWithSocket: (OFTCPSocket *)sock { @try { [self createResponseWithSocketOrThrow: sock]; } @catch (id e) { [self raiseException: e]; } } - (bool)handleFirstLine: (OFString *)line { /* * It's possible that the write succeeds on a connection that is |
︙ | ︙ | |||
523 524 525 526 527 528 529 | bool ret; if (exception != nil) { if ([exception isKindOfClass: [OFInvalidEncodingException class]]) exception = [OFInvalidServerReplyException exception]; | < | < < < | < < | 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 | bool ret; if (exception != nil) { if ([exception isKindOfClass: [OFInvalidEncodingException class]]) exception = [OFInvalidServerReplyException exception]; [self raiseException: exception]; return false; } @try { if (_firstLine) { _firstLine = false; ret = [self handleFirstLine: line]; } else ret = [self handleServerHeader: line socket: sock]; } @catch (id e) { [self raiseException: e]; ret = false; } return ret; } - (size_t)socket: (OFTCPSocket *)sock |
︙ | ︙ | |||
563 564 565 566 567 568 569 | ([exception errNo] == ECONNRESET || [exception errNo] == EPIPE)) { /* In case a keep-alive connection timed out */ [self closeAndReconnect]; return 0; } | < | < < | 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 | ([exception errNo] == ECONNRESET || [exception errNo] == EPIPE)) { /* In case a keep-alive connection timed out */ [self closeAndReconnect]; return 0; } [self raiseException: exception]; return 0; } _firstLine = true; if ([[_request headers] objectForKey: @"Content-Length"] != nil) { OFStream *stream = [[[OFHTTPClientRequestBodyStream alloc] |
︙ | ︙ | |||
620 621 622 623 624 625 626 | [sock asyncWriteBuffer: UTF8String length: UTF8StringLength target: self selector: @selector(socket:didWriteRequest: length:context:exception:) context: requestString]; } @catch (id e) { | < | < < < | < < | 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 | [sock asyncWriteBuffer: UTF8String length: UTF8StringLength target: self selector: @selector(socket:didWriteRequest: length:context:exception:) context: requestString]; } @catch (id e) { [self raiseException: e]; return; } } - (void)socketDidConnect: (OFTCPSocket *)sock context: (id)context exception: (id)exception { if (exception != nil) { [self raiseException: exception]; return; } if ([_client->_delegate respondsToSelector: @selector(client:didCreateSocket:request:context:)]) [_client->_delegate client: _client didCreateSocket: sock |
︙ | ︙ | |||
659 660 661 662 663 664 665 | - (bool)throwAwayContent: (OFHTTPClientResponse *)response buffer: (char *)buffer length: (size_t)length context: (OFTCPSocket *)sock exception: (id)exception { if (exception != nil) { | < | < < | 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 | - (bool)throwAwayContent: (OFHTTPClientResponse *)response buffer: (char *)buffer length: (size_t)length context: (OFTCPSocket *)sock exception: (id)exception { if (exception != nil) { [self raiseException: exception]; return false; } if ([response isAtEndOfStream]) { [self freeMemory: buffer]; [_client->_lastResponse release]; |
︙ | ︙ | |||
759 760 761 762 763 764 765 | [sock asyncConnectToHost: [URL host] port: port target: self selector: @selector(socketDidConnect:context: exception:) context: nil]; } @catch (id e) { | < | < < | 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 | [sock asyncConnectToHost: [URL host] port: port target: self selector: @selector(socketDidConnect:context: exception:) context: nil]; } @catch (id e) { [self raiseException: e]; } } @end @implementation OFHTTPClientRequestBodyStream - (instancetype)initWithHandler: (OFHTTPClientRequestHandler *)handler socket: (OFTCPSocket *)sock |
︙ | ︙ |