Index: src/OFHTTPServer.h ================================================================== --- src/OFHTTPServer.h +++ src/OFHTTPServer.h @@ -47,17 +47,19 @@ @interface OFHTTPServer: OFObject { OFString *host; uint16_t port; id delegate; + OFString *name; OFTCPSocket *listeningSocket; } #ifdef OF_HAVE_PROPERTIES @property (copy) OFString *host; @property uint16_t port; @property (assign) id delegate; +@property (copy) OFString *name; #endif /*! * @brief Creates a new HTTP server. * @@ -105,10 +107,24 @@ * * @return The delegate for the HTTP server */ - (id )delegate; +/*! + * @brief Sets the server name the server presents to clients. + * + * @param name The server name to present to clients + */ +- (void)setName: (OFString*)name; + +/*! + * @brief Returns the server name the server presents to clients. + * + * @return The server name the server presents to clients + */ +- (OFString*)name; + /*! * @brief Starts the HTTP server in the current thread's runloop. */ - (void)start; Index: src/OFHTTPServer.m ================================================================== --- src/OFHTTPServer.m +++ src/OFHTTPServer.m @@ -420,13 +420,14 @@ OFString *date = [[OFDate date] dateStringWithFormat: @"%a, %d %b %Y %H:%M:%S GMT"]; [sock writeFormat: @"HTTP/1.1 %d %s\r\n" @"Date: %@\r\n" - @"Server: OFHTTPServer (ObjFW's HTTP server class, " - @")\r\n\r\n", - statusCode, status_code_to_string(statusCode), date]; + @"Server: %@\r\n" + @"\r\n", + statusCode, status_code_to_string(statusCode), date, + [server name]]; [sock close]; return NO; } @@ -473,14 +474,14 @@ replyHeaders = [reply headers]; replyData = [reply data]; [sock writeFormat: @"HTTP/1.1 %d %s\r\n" - @"Server: OFHTTPServer (ObjFW's HTTP server class, " - @")\r\n", + @"Server: %@\r\n", [reply statusCode], - status_code_to_string([reply statusCode])]; + status_code_to_string([reply statusCode]), + [server name]]; if (requestType != OF_HTTP_REQUEST_TYPE_HEAD) [sock writeFormat: @"Content-Length: %zu\r\n", [replyData count] * [replyData itemSize]]; @@ -501,15 +502,26 @@ @implementation OFHTTPServer + (instancetype)server { return [[[self alloc] init] autorelease]; } + +- init +{ + self = [super init]; + + name = @"OFHTTPServer (ObjFW's HTTP server class " + @")"; + + return self; +} - (void)dealloc { [host release]; [listeningSocket release]; + [name release]; [super dealloc]; } - (void)setHost: (OFString*)host_ @@ -539,10 +551,20 @@ - (id )delegate { return delegate; } + +- (void)setName: (OFString*)name_ +{ + OF_SETTER(name, name_, YES, 1) +} + +- (OFString*)name +{ + OF_GETTER(name, YES) +} - (void)start { if (host == nil || port == 0) @throw [OFInvalidArgumentException