Differences From Artifact [0971f78b90]:
- File
src/OFHTTPServer.m
— part of check-in
[3d16a30f41]
at
2013-06-22 12:12:36
on branch trunk
— Rework exceptions.
This mostly removes the argument for the class in which the exception
occurred. As backtraces were recently added for all platforms, the
passed class does not give any extra information on where the exception
occurred anymore.This also removes a few other arguments which were not too helpful. In
the past, the idea was to pass as many arguments as possible so that it
is easier to find the origin of the exception. However, as backtraces
are a much better way to find the origin, those are not useful anymore
and just make the exception more cumbersome to use. The rule is now to
only pass arguments that might help in recovering from the exception or
provide information that is otherwise not easily accessible. (user: js, size: 15499) [annotate] [blame] [check-ins using]
To Artifact [ce19d575cc]:
- File src/OFHTTPServer.m — part of check-in [36d0b1e2d8] at 2013-07-29 19:43:06 on branch trunk — Rename OFHTTPRequestReply to OFHTTPResponse. (user: js, size: 15533) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
22 23 24 25 26 27 28 | #import "OFHTTPServer.h" #import "OFDataArray.h" #import "OFDate.h" #import "OFDictionary.h" #import "OFURL.h" #import "OFHTTPRequest.h" | | | 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #import "OFHTTPServer.h" #import "OFDataArray.h" #import "OFDate.h" #import "OFDictionary.h" #import "OFURL.h" #import "OFHTTPRequest.h" #import "OFHTTPResponse.h" #import "OFTCPSocket.h" #import "OFTimer.h" #import "OFAlreadyConnectedException.h" #import "OFInvalidArgumentException.h" #import "OFInvalidFormatException.h" #import "OFOutOfMemoryException.h" |
︙ | ︙ | |||
160 161 162 163 164 165 166 | tmp++; } return [OFString stringWithUTF8StringNoCopy: cString freeWhenDone: true]; } | | | | 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | tmp++; } return [OFString stringWithUTF8StringNoCopy: cString freeWhenDone: true]; } @interface OFHTTPServerResponse: OFHTTPResponse { OFTCPSocket *_socket; OFHTTPServer *_server; bool _chunked, _headersSent, _closed; } - initWithSocket: (OFTCPSocket*)socket server: (OFHTTPServer*)server; @end @implementation OFHTTPServerResponse - initWithSocket: (OFTCPSocket*)socket server: (OFHTTPServer*)server { self = [super init]; _statusCode = 500; _socket = [socket retain]; |
︙ | ︙ | |||
278 279 280 281 282 283 284 | { OFTCPSocket *_socket; OFHTTPServer *_server; OFTimer *_timer; enum { AWAITING_PROLOG, PARSING_HEADERS, | | | 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 | { OFTCPSocket *_socket; OFHTTPServer *_server; OFTimer *_timer; enum { AWAITING_PROLOG, PARSING_HEADERS, SEND_RESPONSE } _state; uint8_t _HTTPMinorVersion; of_http_request_type_t _requestType; OFString *_host, *_path; uint16_t _port; OFMutableDictionary *_headers; size_t _contentLength; |
︙ | ︙ | |||
301 302 303 304 305 306 307 | - (bool)parseProlog: (OFString*)line; - (bool)parseHeaders: (OFString*)line; - (bool)socket: (OFTCPSocket*)socket didReadIntoBuffer: (const char*)buffer length: (size_t)length exception: (OFException*)exception; - (bool)sendErrorAndClose: (short)statusCode; | | | 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 | - (bool)parseProlog: (OFString*)line; - (bool)parseHeaders: (OFString*)line; - (bool)socket: (OFTCPSocket*)socket didReadIntoBuffer: (const char*)buffer length: (size_t)length exception: (OFException*)exception; - (bool)sendErrorAndClose: (short)statusCode; - (void)createResponse; @end @implementation OFHTTPServer_Connection - initWithSocket: (OFTCPSocket*)socket server: (OFHTTPServer*)server { self = [super init]; |
︙ | ︙ | |||
359 360 361 362 363 364 365 | switch (_state) { case AWAITING_PROLOG: return [self parseProlog: line]; case PARSING_HEADERS: if (![self parseHeaders: line]) return false; | | | | 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 | switch (_state) { case AWAITING_PROLOG: return [self parseProlog: line]; case PARSING_HEADERS: if (![self parseHeaders: line]) return false; if (_state == SEND_RESPONSE) { [self createResponse]; return false; } return true; default: return false; } |
︙ | ︙ | |||
437 438 439 440 441 442 443 | OFString *key, *value; size_t pos; if ([line length] == 0) { switch (_requestType) { case OF_HTTP_REQUEST_TYPE_GET: case OF_HTTP_REQUEST_TYPE_HEAD: | | | 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 | OFString *key, *value; size_t pos; if ([line length] == 0) { switch (_requestType) { case OF_HTTP_REQUEST_TYPE_GET: case OF_HTTP_REQUEST_TYPE_HEAD: _state = SEND_RESPONSE; break; case OF_HTTP_REQUEST_TYPE_POST:; OFString *tmp; char *buffer; tmp = [_headers objectForKey: @"Content-Length"]; if (tmp == nil) |
︙ | ︙ | |||
531 532 533 534 535 536 537 | return false; [_POSTData addItems: buffer count: length]; if ([_POSTData count] >= _contentLength) { @try { | | | 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 | return false; [_POSTData addItems: buffer count: length]; if ([_POSTData count] >= _contentLength) { @try { [self createResponse]; } @catch (OFWriteFailedException *e) { return false; } return false; } |
︙ | ︙ | |||
560 561 562 563 564 565 566 | statusCode, status_code_to_string(statusCode), date, [_server name]]; [_socket close]; return false; } | | | | 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 | statusCode, status_code_to_string(statusCode), date, [_server name]]; [_socket close]; return false; } - (void)createResponse { OFURL *URL; OFHTTPRequest *request; OFHTTPServerResponse *response; size_t pos; [_timer invalidate]; [_timer release]; _timer = nil; if (_host == nil || _port == 0) { |
︙ | ︙ | |||
607 608 609 610 611 612 613 | [request setRequestType: _requestType]; [request setProtocolVersion: (of_http_request_protocol_version_t){ 1, _HTTPMinorVersion }]; [request setHeaders: _headers]; [request setPOSTData: _POSTData]; [request setRemoteAddress: [_socket remoteAddress]]; | | | | 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 | [request setRequestType: _requestType]; [request setProtocolVersion: (of_http_request_protocol_version_t){ 1, _HTTPMinorVersion }]; [request setHeaders: _headers]; [request setPOSTData: _POSTData]; [request setRemoteAddress: [_socket remoteAddress]]; response = [[[OFHTTPServerResponse alloc] initWithSocket: _socket server: _server] autorelease]; [[_server delegate] server: _server didReceiveRequest: request response: response]; } @end @implementation OFHTTPServer + (instancetype)server { return [[[self alloc] init] autorelease]; |
︙ | ︙ |