@@ -55,25 +55,25 @@ @interface OFHTTPServer () @end @interface OFHTTPServerResponse: OFHTTPResponse { - OF_KINDOF(OFTCPSocket *) _socket; + OFTCPSocket *_socket; OFHTTPServer *_server; OFHTTPRequest *_request; bool _chunked, _headersSent; } -- (instancetype)initWithSocket: (OF_KINDOF(OFTCPSocket *))sock +- (instancetype)initWithSocket: (OFTCPSocket *)sock server: (OFHTTPServer *)server request: (OFHTTPRequest *)request; @end @interface OFHTTPServer_Connection: OFObject { @public - OF_KINDOF(OFTCPSocket *) _socket; + OFTCPSocket *_socket; OFHTTPServer *_server; OFTimer *_timer; enum { AWAITING_PROLOG, PARSING_HEADERS, @@ -86,26 +86,26 @@ OFMutableDictionary *_headers; size_t _contentLength; OFStream *_requestBody; } -- (instancetype)initWithSocket: (OF_KINDOF(OFTCPSocket *))sock +- (instancetype)initWithSocket: (OFTCPSocket *)sock server: (OFHTTPServer *)server; - (bool)parseProlog: (OFString *)line; - (bool)parseHeaders: (OFString *)line; - (bool)sendErrorAndClose: (short)statusCode; - (void)createResponse; @end @interface OFHTTPServerRequestBodyStream: OFStream { - OF_KINDOF(OFTCPSocket *) _socket; + OFTCPSocket *_socket; uintmax_t _toRead; bool _atEndOfStream; } -- (instancetype)initWithSocket: (OF_KINDOF(OFTCPSocket *))sock +- (instancetype)initWithSocket: (OFTCPSocket *)sock contentLength: (uintmax_t)contentLength; @end #ifdef OF_HAVE_THREADS @interface OFHTTPServerThread: OFThread @@ -203,17 +203,17 @@ } static OF_INLINE OFString * normalizedKey(OFString *key) { - char *cString = of_strdup([key UTF8String]); + char *cString = of_strdup(key.UTF8String); unsigned char *tmp = (unsigned char *)cString; bool firstLetter = true; if (cString == NULL) @throw [OFOutOfMemoryException - exceptionWithRequestedSize: strlen([key UTF8String])]; + exceptionWithRequestedSize: strlen(key.UTF8String)]; while (*tmp != '\0') { if (!of_ascii_isalpha(*tmp)) { firstLetter = true; tmp++; @@ -231,11 +231,11 @@ return [OFString stringWithUTF8StringNoCopy: cString freeWhenDone: true]; } @implementation OFHTTPServerResponse -- (instancetype)initWithSocket: (OF_KINDOF(OFTCPSocket *))sock +- (instancetype)initWithSocket: (OFTCPSocket *)sock server: (OFHTTPServer *)server request: (OFHTTPRequest *)request { self = [super init]; @@ -264,11 +264,11 @@ OFMutableDictionary OF_GENERIC(OFString *, OFString *) *headers; OFEnumerator *keyEnumerator, *valueEnumerator; OFString *key, *value; [_socket writeFormat: @"HTTP/%@ %d %s\r\n", - [self protocolVersionString], _statusCode, + self.protocolVersionString, _statusCode, statusCodeToString(_statusCode)]; headers = [[_headers mutableCopy] autorelease]; if ([headers objectForKey: @"Date"] == nil) { @@ -278,11 +278,11 @@ [headers setObject: date forKey: @"Date"]; } if ([headers objectForKey: @"Server"] == nil) { - OFString *name = [_server name]; + OFString *name = _server.name; if (name != nil) [headers setObject: name forKey: @"Server"]; } @@ -342,11 +342,11 @@ if (_chunked) [_socket writeBuffer: "0\r\n\r\n" length: 5]; } @catch (OFWriteFailedException *e) { - id delegate = [_server delegate]; + id delegate = _server.delegate; if ([delegate respondsToSelector: @selector(server: didReceiveExceptionForResponse:request:exception:)]) [delegate server: _server didReceiveExceptionForResponse: self @@ -363,16 +363,16 @@ - (int)fileDescriptorForWriting { if (_socket == nil) return -1; - return [_socket fileDescriptorForWriting]; + return _socket.fileDescriptorForWriting; } @end @implementation OFHTTPServer_Connection -- (instancetype)initWithSocket: (OF_KINDOF(OFTCPSocket *))sock +- (instancetype)initWithSocket: (OFTCPSocket *)sock server: (OFHTTPServer *)server { self = [super init]; @try { @@ -407,11 +407,11 @@ [_requestBody release]; [super dealloc]; } -- (bool)stream: (OF_KINDOF(OFStream *))sock +- (bool)stream: (OFStream *)sock didReadLine: (OFString *)line exception: (id)exception { if (line == nil || exception != nil) return false; @@ -438,11 +438,11 @@ OFMutableString *path; size_t pos; @try { OFString *version = [line - substringWithRange: of_range([line length] - 9, 9)]; + substringWithRange: of_range(line.length - 9, 9)]; of_unichar_t tmp; if (![version hasPrefix: @" HTTP/1."]) return [self sendErrorAndClose: 505]; @@ -459,18 +459,17 @@ if (pos == OF_NOT_FOUND) return [self sendErrorAndClose: 400]; method = [line substringWithRange: of_range(0, pos)]; @try { - _method = of_http_request_method_from_string( - [method UTF8String]); + _method = of_http_request_method_from_string(method.UTF8String); } @catch (OFInvalidFormatException *e) { return [self sendErrorAndClose: 405]; } @try { - of_range_t range = of_range(pos + 1, [line length] - pos - 10); + of_range_t range = of_range(pos + 1, line.length - pos - 10); path = [[[line substringWithRange: range] mutableCopy] autorelease]; } @catch (OFOutOfRangeException *e) { return [self sendErrorAndClose: 400]; @@ -492,20 +491,20 @@ - (bool)parseHeaders: (OFString *)line { OFString *key, *value, *old; size_t pos; - if ([line length] == 0) { + if (line.length == 0) { OFString *contentLengthString; if ((contentLengthString = [_headers objectForKey: @"Content-Length"]) != nil) { intmax_t contentLength; @try { contentLength = - [contentLengthString decimalValue]; + contentLengthString.decimalValue; } @catch (OFInvalidFormatException *e) { return [self sendErrorAndClose: 400]; } @@ -533,14 +532,14 @@ if (pos == OF_NOT_FOUND) return [self sendErrorAndClose: 400]; key = [line substringWithRange: of_range(0, pos)]; value = [line substringWithRange: - of_range(pos + 1, [line length] - pos - 1)]; + of_range(pos + 1, line.length - pos - 1)]; - key = normalizedKey([key stringByDeletingTrailingWhitespaces]); - value = [value stringByDeletingLeadingWhitespaces]; + key = normalizedKey(key.stringByDeletingTrailingWhitespaces); + value = value.stringByDeletingLeadingWhitespaces; old = [_headers objectForKey: key]; if (old != nil) value = [old stringByAppendingFormat: @",%@", value]; @@ -557,13 +556,13 @@ _host = [[value substringWithRange: of_range(0, pos)] retain]; @try { of_range_t range = - of_range(pos + 1, [value length] - pos - 1); - intmax_t portTmp = [[value - substringWithRange: range] decimalValue]; + of_range(pos + 1, value.length - pos - 1); + intmax_t portTmp = [value + substringWithRange: range].decimalValue; if (portTmp < 1 || portTmp > UINT16_MAX) return [self sendErrorAndClose: 400]; _port = (uint16_t)portTmp; @@ -588,11 +587,11 @@ [_socket writeFormat: @"HTTP/1.1 %d %s\r\n" @"Date: %@\r\n" @"Server: %@\r\n" @"\r\n", statusCode, statusCodeToString(statusCode), - date, [_server name]]; + date, _server.name]; return false; } - (void)createResponse @@ -612,57 +611,57 @@ [self sendErrorAndClose: 400]; return; } [_host release]; - _host = [[_server host] retain]; + _host = [_server.host copy]; _port = [_server port]; } URL = [OFMutableURL URL]; - [URL setScheme: @"http"]; - [URL setHost: _host]; + URL.scheme = @"http"; + URL.host = _host; if (_port != 80) - [URL setPort: [OFNumber numberWithUInt16: _port]]; + URL.port = [OFNumber numberWithUInt16: _port]; if ((pos = [_path rangeOfString: @"?"].location) != OF_NOT_FOUND) { OFString *path, *query; path = [_path substringWithRange: of_range(0, pos)]; query = [_path substringWithRange: - of_range(pos + 1, [_path length] - pos - 1)]; + of_range(pos + 1, _path.length - pos - 1)]; - [URL setURLEncodedPath: path]; - [URL setURLEncodedQuery: query]; + URL.URLEncodedPath = path; + URL.URLEncodedQuery = query; } else - [URL setURLEncodedPath: _path]; + URL.URLEncodedPath = _path; [URL makeImmutable]; request = [OFHTTPRequest requestWithURL: URL]; - [request setMethod: _method]; - [request setProtocolVersion: - (of_http_request_protocol_version_t){ 1, _HTTPMinorVersion }]; - [request setHeaders: _headers]; - [request setRemoteAddress: [_socket remoteAddress]]; + request.method = _method; + request.protocolVersion = + (of_http_request_protocol_version_t){ 1, _HTTPMinorVersion }; + request.headers = _headers; + request.remoteAddress = _socket.remoteAddress; response = [[[OFHTTPServerResponse alloc] initWithSocket: _socket server: _server request: request] autorelease]; - [[_server delegate] server: _server - didReceiveRequest: request - requestBody: _requestBody - response: response]; + [_server.delegate server: _server + didReceiveRequest: request + requestBody: _requestBody + response: response]; objc_autoreleasePoolPop(pool); } @end @implementation OFHTTPServerRequestBodyStream -- (instancetype)initWithSocket: (OF_KINDOF(OFTCPSocket *))sock +- (instancetype)initWithSocket: (OFTCPSocket *)sock contentLength: (uintmax_t)contentLength { self = [super init]; @try { @@ -709,16 +708,16 @@ return ret; } - (bool)hasDataInReadBuffer { - return ([super hasDataInReadBuffer] || [_socket hasDataInReadBuffer]); + return (super.hasDataInReadBuffer || _socket.hasDataInReadBuffer); } - (int)fileDescriptorForReading { - return [_socket fileDescriptorForReading]; + return _socket.fileDescriptorForReading; } - (void)close { [_socket release]; @@ -857,19 +856,19 @@ { return _privateKeyPassphrase; } #ifdef OF_HAVE_THREADS -- (void)setNumberOfThreads: (size_t)numberOfThreadas +- (void)setNumberOfThreads: (size_t)numberOfThreads { - if (numberOfThreadas == 0) + if (numberOfThreads == 0) @throw [OFInvalidArgumentException exception]; if (_listeningSocket != nil) @throw [OFAlreadyConnectedException exception]; - _numberOfThreads = numberOfThreadas; + _numberOfThreads = numberOfThreads; } - (size_t)numberOfThreads { return _numberOfThreads; @@ -885,22 +884,21 @@ if (_listeningSocket != nil) @throw [OFAlreadyConnectedException exception]; if (_usesTLS) { - id listeningSocket; + OFTCPSocket *TLSSocket; if (of_tls_socket_class == Nil) @throw [OFUnsupportedProtocolException exception]; - _listeningSocket = [[of_tls_socket_class alloc] init]; + TLSSocket = [[of_tls_socket_class alloc] init]; + _listeningSocket = TLSSocket; - listeningSocket = _listeningSocket; - [listeningSocket setCertificateFile: _certificateFile]; - [listeningSocket setPrivateKeyFile: _privateKeyFile]; - [listeningSocket - setPrivateKeyPassphrase: _privateKeyPassphrase]; + TLSSocket.certificateFile = _certificateFile; + TLSSocket.privateKeyFile = _privateKeyFile; + TLSSocket.privateKeyPassphrase = _privateKeyPassphrase; } else _listeningSocket = [[OFTCPSocket alloc] init]; _port = [_listeningSocket bindToHost: _host port: _port]; @@ -922,11 +920,11 @@ [threads makeImmutable]; _threadPool = [threads copy]; } #endif - [(OFTCPSocket *)_listeningSocket setDelegate: self]; + ((OFTCPSocket *)_listeningSocket).delegate = self; [_listeningSocket asyncAccept]; objc_autoreleasePoolPop(pool); } @@ -943,22 +941,22 @@ [_threadPool release]; _threadPool = nil; #endif } -- (void)of_handleAcceptedSocket: (OF_KINDOF(OFTCPSocket *))acceptedSocket +- (void)of_handleAcceptedSocket: (OFTCPSocket *)acceptedSocket { OFHTTPServer_Connection *connection = [[[OFHTTPServer_Connection alloc] initWithSocket: acceptedSocket server: self] autorelease]; - [(OFTCPSocket *)acceptedSocket setDelegate: connection]; + acceptedSocket.delegate = connection; [acceptedSocket asyncReadLine]; } -- (bool)socket: (OF_KINDOF(OFTCPSocket *))sock - didAcceptSocket: (OF_KINDOF(OFTCPSocket *))acceptedSocket +- (bool)socket: (OFTCPSocket *)sock + didAcceptSocket: (OFTCPSocket *)acceptedSocket exception: (id)exception { if (exception != nil) { if (![_delegate respondsToSelector: @selector(server:didReceiveExceptionOnListeningSocket:)])