Overview
| Comment: | OFHTTPServer: Make is possible to stop the server. |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
a31bba094760865f281a616594a23cf4 |
| User & Date: | js on 2012-12-20 13:03:05 |
| Other Links: | manifest | tags |
Context
|
2012-12-20
| ||
| 13:57 | OFTimer: Make rescheduling possible. (check-in: 4572170728 user: js tags: trunk) | |
| 13:03 | OFHTTPServer: Make is possible to stop the server. (check-in: a31bba0947 user: js tags: trunk) | |
| 01:10 | Move block structs and functions to block.h. (check-in: b5e1ba0f94 user: js tags: trunk) | |
Changes
Modified src/OFHTTPServer.h from [d43ccf4c58] to [43b8941dbf].
| ︙ | ︙ | |||
124 125 126 127 128 129 130 131 132 133 134 135 136 137 | - (OFString*)name; /*! * @brief Starts the HTTP server in the current thread's runloop. */ - (void)start; - (BOOL)OF_socket: (OFTCPSocket*)socket didAcceptSocket: (OFTCPSocket*)clientSocket exception: (OFException*)exception; @end @interface OFObject (OFHTTPServerDelegate) <OFHTTPServerDelegate> @end | > > > > > > > | 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | - (OFString*)name; /*! * @brief Starts the HTTP server in the current thread's runloop. */ - (void)start; /*! * @brief Stops the HTTP server, meaning it will not accept any new incoming * connections, but still handle existing connections until they are * finished or timed out. */ - (void)stop; - (BOOL)OF_socket: (OFTCPSocket*)socket didAcceptSocket: (OFTCPSocket*)clientSocket exception: (OFException*)exception; @end @interface OFObject (OFHTTPServerDelegate) <OFHTTPServerDelegate> @end |
Modified src/OFHTTPServer.m from [bee3baba47] to [862d84b05e].
| ︙ | ︙ | |||
41 42 43 44 45 46 47 | #define BUFFER_SIZE 1024 /* * FIXME: Currently, connections never time out, which means a DoS is possible. * TODO: Add support for chunked transfer encoding. * FIXME: Key normalization replaces headers like "DNT" with "Dnt". | < | 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
#define BUFFER_SIZE 1024
/*
* FIXME: Currently, connections never time out, which means a DoS is possible.
* TODO: Add support for chunked transfer encoding.
* FIXME: Key normalization replaces headers like "DNT" with "Dnt".
* FIXME: Errors are not reported to the user.
*/
static const char*
status_code_to_string(short code)
{
switch (code) {
|
| ︙ | ︙ | |||
203 204 205 206 207 208 209 |
@implementation OFHTTPServer_Connection
- initWithSocket: (OFTCPSocket*)sock_
server: (OFHTTPServer*)server_
{
self = [super init];
sock = [sock_ retain];
| | > | 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 |
@implementation OFHTTPServer_Connection
- initWithSocket: (OFTCPSocket*)sock_
server: (OFHTTPServer*)server_
{
self = [super init];
sock = [sock_ retain];
server = [server_ retain];
state = AWAITING_PROLOG;
return self;
}
- (void)dealloc
{
[sock release];
[server release];
[host release];
[path release];
[headers release];
[POSTData release];
[super dealloc];
}
|
| ︙ | ︙ | |||
592 593 594 595 596 597 598 599 600 601 602 603 604 605 |
[listeningSocket listen];
[listeningSocket asyncAcceptWithTarget: self
selector: @selector(OF_socket:
didAcceptSocket:
exception:)];
}
- (BOOL)OF_socket: (OFTCPSocket*)socket
didAcceptSocket: (OFTCPSocket*)clientSocket
exception: (OFException*)exception
{
OFHTTPServer_Connection *connection;
| > > > > > > > | 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 |
[listeningSocket listen];
[listeningSocket asyncAcceptWithTarget: self
selector: @selector(OF_socket:
didAcceptSocket:
exception:)];
}
- (void)stop
{
[listeningSocket cancelAsyncRequests];
[listeningSocket release];
listeningSocket = nil;
}
- (BOOL)OF_socket: (OFTCPSocket*)socket
didAcceptSocket: (OFTCPSocket*)clientSocket
exception: (OFException*)exception
{
OFHTTPServer_Connection *connection;
|
| ︙ | ︙ |