ObjFW  History of src/OFHTTPServer.m of 7767b60d7fe24d93

History of the file that is called src/OFHTTPServer.m at check-in 7767b60d7fe24d93

2024-04-29
21:42
[c0539be083] part of check-in [f16bccc7b3] Properly hide private symbols (check-in: [f16bccc7b3] user: js, branch: trunk, size: 20313) [annotate] [blame] [check-ins using] [diff]
2024-04-03
02:16
[61bb060e07] part of check-in [7413a728a7] Change license to LGPLv3 only (check-in: [7413a728a7] user: js, branch: trunk, size: 20312) [annotate] [blame] [check-ins using] [diff]
2024-02-03
11:41
[1ba80fbd95] part of check-in [7324ec8590] Update copyright (check-in: [7324ec8590] user: js, branch: 1.0, size: 20125) [annotate] [blame] [check-ins using] [diff]
2024-01-02
17:17
[871d0707f6] part of check-in [26ddd2e4e4] Update copyright (check-in: [26ddd2e4e4] user: js, branch: trunk, size: 20104) [annotate] [blame] [check-ins using] [diff]
2023-10-15
14:55
[c229043b21] part of check-in [12c09ef41e] Add OFHTTPRequestMethodString()

This deprecates OFHTTPRequestMethodName(), which returns a C string.
APIs should avoid C strings as much as possible.

This function was initially only used internally, where this was fine.
However, when it was made public, it should have been converted to
OFString at the same time.

Adds OFHTTPRequestMethodParseString() for consistency, which behaves the
same as OFHTTPRequestMethodParseName() and deprecates it. (check-in: [12c09ef41e] user: js, branch: trunk, size: 20104) [annotate] [blame] [check-ins using] [diff]

12:32
[ab884b4ab8] part of check-in [a61e0594b4] Add -[OFStream lowlevelIsAtEndOfStream]

This allows for a much cleaner solution to avoid the internal read
buffer of e.g. a TLS connection never being processed while waiting for
a delimiter. (check-in: [a61e0594b4] user: js, branch: trunk, size: 20102) [annotate] [blame] [check-ins using] [diff]

2023-05-21
11:04
[df8e40fa8b] part of check-in [fc161d1948] OFTCPSocket: Return socket address bound to (check-in: [fc161d1948] user: js, branch: trunk, size: 20125) [annotate] [blame] [check-ins using] [diff]
2023-01-06
09:04
[739a12c048] part of check-in [8939cbdb52] Update copyright (check-in: [8939cbdb52] user: js, branch: trunk, size: 20055) [annotate] [blame] [check-ins using] [diff]
2022-12-27
13:58
[ef058caeb6] part of check-in [29a41e5a78] Rename OFAlready{Connected -> Open}Exception (check-in: [29a41e5a78] user: js, branch: trunk, size: 20055) [annotate] [blame] [check-ins using] [diff]
2022-11-24
00:21
[cee3752fc6] part of check-in [23272e6d43] Rename OFURI to OFIRI (check-in: [23272e6d43] user: js, branch: trunk, size: 20016) [annotate] [blame] [check-ins using] [diff]
2022-10-11
19:27
[e75cf57b42] part of check-in [3e455c4839] OFURI: Make scheme and path nonnull

This is as per the RFC, which says the scheme and path can never be
missing, while the path can be empty. (check-in: [3e455c4839] user: js, branch: trunk, size: 20016) [annotate] [blame] [check-ins using] [diff]

2022-09-28
21:40
[684e137d81] part of check-in [e7ab06503c] Rename OFUR{L -> I} in preparation for URI support (check-in: [e7ab06503c] user: js, branch: trunk, size: 20020) [annotate] [blame] [check-ins using] [diff]
2022-09-12
08:52
[aa1c799693] part of check-in [1038191a03] Restrict subclassing on more classes (check-in: [1038191a03] user: js, branch: trunk, size: 20008) [annotate] [blame] [check-ins using] [diff]
2022-08-30
00:48
[de62217765] part of check-in [4ad0c363f3] OFObject: Small API change (check-in: [4ad0c363f3] user: js, branch: trunk, size: 19982) [annotate] [blame] [check-ins using] [diff]
2022-05-20
09:36
[56dd1ea76e] part of check-in [f67621fa4d] OFHTTPServer: Send 400 on invalid path/query (check-in: [f67621fa4d] user: js, branch: trunk, size: 19982) [annotate] [blame] [check-ins using] [diff]
2022-02-12
07:46
[879c93d87f] part of check-in [1a86b8175b] Update copyright (check-in: [1a86b8175b] user: js, branch: trunk, size: 19839) [annotate] [blame] [check-ins using] [diff]
2022-01-28
19:34
[7cab88af66] part of check-in [d9586ed175] Don't assume EWOULDBLOCK and EAGAIN are the same (check-in: [d9586ed175] user: js, branch: trunk, size: 19839) [annotate] [blame] [check-ins using] [diff]
2021-11-13
13:04
[9d3b80f535] part of check-in [d30efa8bbf] Completely rework the TLS/SSL API

The previous API could never work cleanly and would always require
hacks, as it needed intercepting all interactions of OFTCPSocket with
the raw socket and did not work at all if the OFTCPSocket had anything
in its read buffer before starting the TLS handshake. This also could
not be fixed easily, as it would have required the object to contain two
read buffers, one for the unencrypted connection and one for the
encrypted connection. There was also no clean way to perform the
handshake in a non-blocking way.

The new API is a lot cleaner and requires none of the hacks, but using
it requires slightly more work. But this is more than made up for by
making a fully asynchronous handshake possible. It uses the concept of a
stream wrapping another stream, meaning the entire connecting part is
being handled by OFTCPSocket and then the connected socket is passed off
to OFTLSStream to wrap it. This also makes for a lot cleaner separation
of concerns. (check-in: [d30efa8bbf] user: js, branch: trunk, size: 19818) [annotate] [blame] [check-ins using] [diff]

2021-11-06
15:57
[fa53a5562c] part of check-in [d1d36ae522] OFStream: New write API

The old write API made it too easy to lose bytes when a stream is set to
non-blocking mode. The new API always throws when not all bytes were
written, which forces handling the number of bytes being written being
smaller than the number of bytes requested to be written. (check-in: [d1d36ae522] user: js, branch: trunk, size: 19842) [annotate] [blame] [check-ins using] [diff]

2021-11-05
22:42
[48c91c9511] part of check-in [a5a3047210] Remove TLS server support

The current API is too tied to OpenSSL. (check-in: [a5a3047210] user: js, branch: trunk, size: 19680) [annotate] [blame] [check-ins using] [diff]

2021-08-07
23:25
[d1a692f4d4] part of check-in [176e97bd4d] Make Apple GCC 4.0.1 happy again (check-in: [176e97bd4d] user: js, branch: trunk, size: 21123) [annotate] [blame] [check-ins using] [diff]
2021-04-25
19:58
[76527fc01b] part of check-in [6ae98c1dcf] Last round of renames (hopefully) (check-in: [6ae98c1dcf] user: js, branch: trunk, size: 21105) [annotate] [blame] [check-ins using] [diff]
19:41
[40f5819df6] part of check-in [fd51df7022] OFStrdup -> OFStrDup and slightly change behavior (check-in: [fd51df7022] user: js, branch: trunk, size: 21105) [annotate] [blame] [check-ins using] [diff]
11:05
[77f28b39f4] part of check-in [27103855c2] A few last renames (check-in: [27103855c2] user: js, branch: new-naming-convention, size: 21220) [annotate] [blame] [check-ins using] [diff]
2021-04-19
22:20
[ab2a6a96d7] part of check-in [e97b03815f] Rename all remaining enums (check-in: [e97b03815f] user: js, branch: new-naming-convention, size: 21246) [annotate] [blame] [check-ins using] [diff]
2021-04-18
22:56
[77e13e0b81] part of check-in [e73c65a849] Rename all symbols marked extern (check-in: [e73c65a849] user: js, branch: new-naming-convention, size: 21214) [annotate] [blame] [check-ins using] [diff]
20:51
[d0e0c65c22] part of check-in [35de667566] Rename everything in several smaller files (check-in: [35de667566] user: js, branch: new-naming-convention, size: 21220) [annotate] [blame] [check-ins using] [diff]
15:55
[54081a8164] part of check-in [7392685ffc] Rename all functions in macros.h (check-in: [7392685ffc] user: js, branch: new-naming-convention, size: 21219) [annotate] [blame] [check-ins using] [diff]
2021-04-17
22:45
[296355eaa4] part of check-in [498074dab9] Rename of_(re)alloc and add OFFreeMemory (check-in: [498074dab9] user: js, branch: new-naming-convention, size: 21233) [annotate] [blame] [check-ins using] [diff]
14:33
[eb0e97662f] part of check-in [83d8f3e5f6] Rename of_http_* (check-in: [83d8f3e5f6] user: js, branch: new-naming-convention, size: 21225) [annotate] [blame] [check-ins using] [diff]
14:13
[c6a414493d] part of check-in [eb0cfa6ff9] Always prefix functions with the type (check-in: [eb0cfa6ff9] user: js, branch: new-naming-convention, size: 21265) [annotate] [blame] [check-ins using] [diff]
02:25
[372c0e044a] part of check-in [169692a120] Rename remaining enums in OFString.h (check-in: [169692a120] user: js, branch: new-naming-convention, size: 21265) [annotate] [blame] [check-ins using] [diff]
01:32
[00c510fad6] part of check-in [2d3790870d] of_unichar_t -> OFUnichar (check-in: [2d3790870d] user: js, branch: new-naming-convention, size: 21272) [annotate] [blame] [check-ins using] [diff]
01:24
[8530766b9d] part of check-in [83dc0fe6e5] OF_NOT_FOUND -> OFNotFound (check-in: [83dc0fe6e5] user: js, branch: new-naming-convention, size: 21275) [annotate] [blame] [check-ins using] [diff]
00:44
[72e3c9c242] part of check-in [d975c53a43] of_range_t -> OFRange (check-in: [d975c53a43] user: js, branch: new-naming-convention, size: 21287) [annotate] [blame] [check-ins using] [diff]
2021-03-07
20:25
[bf72062f11] part of check-in [1b82d3bf4f] *.m: Fold methods into one line where it fits (check-in: [1b82d3bf4f] user: js, branch: trunk, size: 21284) [annotate] [blame] [check-ins using] [diff]
02:36
[038308e952] part of check-in [a0fd103a0b] Style change: Allow more than 1 argument per line

This is only migrating some places, others will be migrated as they are
touched. (check-in: [a0fd103a0b] user: js, branch: trunk, size: 21359) [annotate] [blame] [check-ins using] [diff]

2021-01-02
22:04
[93f1451d06] part of check-in [374e1a1bfa] Update copyright (check-in: [374e1a1bfa] user: js, branch: trunk, size: 21382) [annotate] [blame] [check-ins using] [diff]
2020-11-06
02:24
[ac3250a22a] part of check-in [a2b4238850] Future-proof some code using freeWhenDone

While -[OFData initWithDataNoCopy:count:itemSize:freeWhenDone:] can
currently never throw, it might in the future, and when it does so in
the future, these would be memory leaks then. (check-in: [a2b4238850] user: js, branch: trunk, size: 21471) [annotate] [blame] [check-ins using] [diff]

2020-11-01
11:35
[59a786282c] part of check-in [4bbac7ab17] OFString: Add -[substring{From,To}Index:] (check-in: [4bbac7ab17] user: js, branch: trunk, size: 21410) [annotate] [blame] [check-ins using] [diff]
2020-10-10
10:58
[28acc739df] part of check-in [6e42ee482f] Make HTTP status code consistently a short

It used to be a short in some places and an int in other places. (check-in: [6e42ee482f] user: js, branch: trunk, size: 21688) [annotate] [blame] [check-ins using] [diff]

2020-08-25
00:11
[abf9a790cd] part of check-in [25c985fec1] OFNumber: Remove (u)int{8,16,32,64} methods

Since C guarantees minimum sizes for char, short, int, long and long
long, these can be used instead. (check-in: [25c985fec1] user: js, branch: trunk, size: 21686) [annotate] [blame] [check-ins using] [diff]

2020-08-11
19:45
[0eb4bcc334] part of check-in [b6ee372b98] OFString: Rework number parsing API

This solves the old signed vs. unsigned problem and allows for more
bases than just 8, 10 and 16, as well as auto-detection of the base (if
base is 0). (check-in: [b6ee372b98] user: js, branch: trunk, size: 21679) [annotate] [blame] [check-ins using] [diff]

2020-06-28
15:03
[868929166e] part of check-in [b6cb3addd0] Use OF_DIRECT(_MEMBERS) where appropriate (check-in: [b6cb3addd0] user: js, branch: trunk, size: 21480) [annotate] [blame] [check-ins using] [diff]
2020-04-26
18:10
[9e1f23cc19] part of check-in [13a8f43898] Move accept and listen OF{TCP -> Stream}Socket (check-in: [13a8f43898] user: js, branch: trunk, size: 21408) [annotate] [blame] [check-ins using] [diff]
2020-04-24
00:21
[1d12ee9c38] part of check-in [3dfe642dd3] Add OFIPStreamSocket

This is a new superclass for OFTCPSocket to allow sharing code with
other IP stream socket types, namely SCTP. (check-in: [3dfe642dd3] user: js, branch: trunk, size: 21397) [annotate] [blame] [check-ins using] [diff]

2020-04-11
16:31
[c13e2bacd9] part of check-in [ba4a65d397] OFHTTP*: Use -[asyncReadLine:] for chunk size (check-in: [ba4a65d397] user: js, branch: trunk, size: 21372) [annotate] [blame] [check-ins using] [diff]
2020-04-01
22:36
[cf25c913ea] part of check-in [ccc1b1989d] Use case insensitive compare for URL scheme (check-in: [ccc1b1989d] user: js, branch: trunk, size: 21336) [annotate] [blame] [check-ins using] [diff]
2020-03-29
14:04
[0402f29968] part of check-in [e833a8b212] OFHTTP{Client,Server}: Reject empty Content-Length (check-in: [e833a8b212] user: js, branch: trunk, size: 21355) [annotate] [blame] [check-ins using] [diff]
03:05
[b25900c5f7] part of check-in [d9350dba53] OFHTTPClient: Minor chunked body improvement (check-in: [d9350dba53] user: js, branch: trunk, size: 21329) [annotate] [blame] [check-ins using] [diff]
2020-03-28
14:35
[269e3a7f9d] part of check-in [8faade8d19] OFHTTPServer: Support for chunked request bodies (check-in: [8faade8d19] user: js, branch: trunk, size: 21341) [annotate] [blame] [check-ins using] [diff]
2020-03-22
16:15
[a8548d7f01] part of check-in [a013a9d577] ofhttp: Allow all request methods (check-in: [a013a9d577] user: js, branch: trunk, size: 18804) [annotate] [blame] [check-ins using] [diff]
15:51
[69c85c4501] part of check-in [9c506fc995] ofhttp: Print the HTTP status code on error

Without this, there would be no indication of the error when using -q. (check-in: [9c506fc995] user: js, branch: trunk, size: 18813) [annotate] [blame] [check-ins using] [diff]

2020-01-14
00:16
[e03c4b06ca] part of check-in [3b43d51006] More consistent -[close] behavior

This means refusing to close twice, calling -[close] from -[dealloc] and
not calling -[cancelAsyncRequests].

Calling -[cancelAsyncRequests] in -[close] is too dangerous, as -[close]
gets called by -[dealloc]: If the queue is the last reference to the
object, at the point where -[cancelAsyncRequests] removes it from the
queue, the object will start to deallocate and call into
-[cancelAsyncRequests] again, which is still in the middle of removing
it and now finds itself with an inconsistent state. (check-in: [3b43d51006] user: js, branch: trunk, size: 20441) [annotate] [blame] [check-ins using] [diff]

2020-01-05
02:05
[8b4765d161] part of check-in [0f99128a67] Update URL in a few places (check-in: [0f99128a67] user: js, branch: trunk, size: 20356) [annotate] [blame] [check-ins using] [diff]
2020-01-02
01:51
[6c200c2182] part of check-in [c7f0229795] Update copyright (check-in: [c7f0229795] user: js, branch: trunk, size: 20359) [annotate] [blame] [check-ins using] [diff]
2019-08-11
18:56
[afbff9f08f] part of check-in [a40f3fc829] Support sockets in multiple threads on AmigaOS (check-in: [a40f3fc829] user: js, branch: trunk, size: 20356) [annotate] [blame] [check-ins using] [diff]
2019-06-17
02:33
[59f972c93b] part of check-in [17d57e01ff] Remove underscores from class names (check-in: [17d57e01ff] user: js, branch: trunk, size: 20322) [annotate] [blame] [check-ins using] [diff]
2019-03-12
23:46
[a4d123787e] part of check-in [ad7d75df4b] generators: Use dot syntax (check-in: [ad7d75df4b] user: js, branch: trunk, size: 20326) [annotate] [blame] [check-ins using] [diff]
2019-03-08
00:35
[3cdaff788f] part of check-in [bceb7ed4c9] Use dot syntax (check-in: [bceb7ed4c9] user: js, branch: trunk, size: 20343) [annotate] [blame] [check-ins using] [diff]
2019-03-03
12:40
[503afee9ba] part of check-in [607cd05ad7] OFHTTPServer: Support for using multiple threads (check-in: [607cd05ad7] user: js, branch: trunk, size: 20654) [annotate] [blame] [check-ins using] [diff]
2019-01-03
19:13
[e825f297c5] part of check-in [0509d7a844] Update copyright (check-in: [0509d7a844] user: js, branch: trunk, size: 17636) [annotate] [blame] [check-ins using] [diff]
2018-12-11
22:57
[aae9d41f78] part of check-in [064dbe5127] Include an exception in delegate methods

Otherwise, there would be two methods for every operation: One for
success and one for failure. It also makes it easy to forget about
handling failure, so it's better to always pass an optional exception. (check-in: [064dbe5127] user: js, branch: trunk, size: 17630) [annotate] [blame] [check-ins using] [diff]

2018-12-08
16:53
[814464cd03] part of check-in [2b6a12065e] Separate error methods for async method delegates (check-in: [2b6a12065e] user: js, branch: trunk, size: 17613) [annotate] [blame] [check-ins using] [diff]
16:05
[abf11296e3] part of check-in [27153bf8cf] OFTCPSocket: Use a delegate for async operations (check-in: [27153bf8cf] user: js, branch: trunk, size: 17604) [annotate] [blame] [check-ins using] [diff]
2018-12-07
01:33
[fe26303808] part of check-in [d16ad96cbd] OFStream: Use a delegate for async operations

The target / selector approach had several drawbacks:

* It was inconvenient to use, as for every read or write, a target,
selector and context would need to be specified.
* It lacked any kind of type-safety and would not even warn about using
a callback method with the wrong number of parameters.
* It encouraged using a different callback method for each read or
write call, which results in code that is hard to follow and also
slower (as it needs to recreate the async operation with a new
callback every time). (check-in: [d16ad96cbd] user: js, branch: trunk, size: 17752) [annotate] [blame] [check-ins using] [diff]

2018-11-10
10:01
[7cb45bbee2] part of check-in [f6d9264de0] OFHTTPServer: Add support for TLS (check-in: [f6d9264de0] user: js, branch: trunk, size: 18078) [annotate] [blame] [check-ins using] [diff]
2018-02-27
20:36
[d2c22eea59] part of check-in [d375061886] OFHTTP{Client,Server}: Rename body to requestBody

This makes it more clear that this has nothing to do with the body of
the response, as the body of the response is read from the
OFHTTPResponse itself. (check-in: [d375061886] user: js, branch: trunk, size: 17226) [annotate] [blame] [check-ins using] [diff]

2018-02-25
02:38
[b47d8bb3a2] part of check-in [f756fb2ff6] OFHTTPServer: Move the body out of the request

Instead, provide a stream for the body to the callback. (check-in: [f756fb2ff6] user: js, branch: trunk, size: 17177) [annotate] [blame] [check-ins using] [diff]

2018-01-18
23:28
[2088c9d68e] part of check-in [cb0ac3f868] OFHTTPServer: Fix missing cast (check-in: [cb0ac3f868] user: js, branch: trunk, size: 17175) [annotate] [blame] [check-ins using] [diff]
2018-01-14
13:30
[949fef07b2] part of check-in [a74b645cb2] OFHTTPServer: Fix _contentLength not being set (check-in: [a74b645cb2] user: js, branch: trunk, size: 17167) [annotate] [blame] [check-ins using] [diff]
2018-01-03
19:49
[2d02abe498] part of check-in [7e5c81e186] Update copyright notice (check-in: [7e5c81e186] user: js, branch: trunk, size: 17013) [annotate] [blame] [check-ins using] [diff]
2017-11-19
11:04
[1522d55623] part of check-in [69749b6a5b] Do not conform to OFReadyFor*Observing by default

Instead of letting OFStream conform to it, which itself does not really
conform to it, let all the subclasses that actually do conform to it. (check-in: [69749b6a5b] user: js, branch: trunk, size: 16990) [annotate] [blame] [check-ins using] [diff]

2017-11-06
23:01
[3bc806eac7] part of check-in [a15b403a11] OFURL: Store the URL-encoded version internally

This allows retrieving it how it was originally stored, which is useful
for example for query strings, as these often URL-encode allowed
characters in order to allow pairs of the form foo=bar&bar=qux. (check-in: [a15b403a11] user: js, branch: trunk, size: 16961) [annotate] [blame] [check-ins using] [diff]

2017-10-28
21:08
[380d4e5179] part of check-in [0f995db06d] Make OFURL more generic

This removes the special handling dependent on the scheme. (check-in: [0f995db06d] user: js, branch: trunk, size: 16931) [annotate] [blame] [check-ins using] [diff]

2017-10-22
15:05
[a75e2ea261] part of check-in [a06354b42a] Make Apple GCC with -Wshadow happy (check-in: [a06354b42a] user: js, branch: trunk, size: 16862) [annotate] [blame] [check-ins using] [diff]
14:09
[ae0dbd61af] part of check-in [31c0f5b89e] Make Apple GCC with -Wshadow happy (check-in: [31c0f5b89e] user: js, branch: 0.90, size: 16539) [annotate] [blame] [check-ins using] [diff]
2017-10-17
00:33
[339d905a8d] part of check-in [2f4e0df8be] Do not use implicit method return types

Instead, explicitly declare them, as OF_ASSUME_NONNULL_{BEGIN,END} does
not apply to implicit return types. This means that after this commit,
all init methods have a nonnull return type, as they should have. (check-in: [2f4e0df8be] user: js, branch: trunk, size: 16887) [annotate] [blame] [check-ins using] [diff]

2017-09-28
23:02
[f5a4b0ce8e] part of check-in [2de9660312] Enable -Wnullable-to-nonnull-conversion and adjust (check-in: [2de9660312] user: js, branch: trunk, size: 16815) [annotate] [blame] [check-ins using] [diff]
2017-09-24
12:24
[1e27dfeb94] part of check-in [481225349f] OFStream: Add support for async writes (check-in: [481225349f] user: js, branch: trunk, size: 16803) [annotate] [blame] [check-ins using] [diff]
11:24
[e701818685] part of check-in [f8498bb114] Change type for async exceptions to id (check-in: [f8498bb114] user: js, branch: trunk, size: 16752) [annotate] [blame] [check-ins using] [diff]
2017-09-23
22:07
[f88ae06cce] part of check-in [958da109d3] Support for passing a context to async IO handlers (check-in: [958da109d3] user: js, branch: trunk, size: 16818) [annotate] [blame] [check-ins using] [diff]
2017-07-22
20:50
[c477e44d18] part of check-in [c8f7b90082] Split OFDataArray into OFData and OFMutableData (check-in: [c8f7b90082] user: js, branch: trunk, size: 16564) [annotate] [blame] [check-ins using] [diff]
2017-07-20
22:28
[db503301c5] part of check-in [3a5570ab20] Split OFURL into OFURL and OFMutableURL (check-in: [3a5570ab20] user: js, branch: trunk, size: 16539) [annotate] [blame] [check-ins using] [diff]
2017-06-21
20:20
[d18b7e3988] part of check-in [2b6fb5530e] OFHTTPServer: Include the / in the URL path

This was overlooked when URLs were changed to include the / in the path. (check-in: [2b6fb5530e] user: js, branch: trunk, size: 16502) [annotate] [blame] [check-ins using] [diff]

2017-05-21
21:28
[4d2868ce13] part of check-in [6b77a5dd8b] Prefix private methods with of_ instead of OF_

This matches Apple's style. (check-in: [6b77a5dd8b] user: js, branch: trunk, size: 16552) [annotate] [blame] [check-ins using] [diff]

2017-05-07
20:10
[6f3529bdbf] part of check-in [4af49a13c3] Small code style change

Casts are now written like types in variable declarations. (check-in: [4af49a13c3] user: js, branch: trunk, size: 16552) [annotate] [blame] [check-ins using] [diff]

2017-05-06
19:43
[84e4421360] part of check-in [cca678886f] Clean up a few includes (check-in: [cca678886f] user: js, branch: trunk, size: 16514) [annotate] [blame] [check-ins using] [diff]
2017-01-09
17:36
[fe9e1ee8d4] part of check-in [44f45c2e35] Update copyright

Forgot to add 2017, even though I already did quite some changes in
2017. (check-in: [44f45c2e35] user: js, branch: trunk, size: 16533) [annotate] [blame] [check-ins using] [diff]

2017-01-07
00:37
[30505eba7a] part of check-in [d9eb7b50b3] Add of_ascii_{to{upper,lower},is{alpha,alnum}}

These are independent of the locale and work on the ASCII character set.

Unlike the C ones, these are 8-bit safe, meaning if a character > 0x7F
is passed, is{alpha,alnum} returns false and to{upper,lower} returns the
original character. (check-in: [d9eb7b50b3] user: js, branch: trunk, size: 16527) [annotate] [blame] [check-ins using] [diff]

2016-06-07
22:56
[28126036a1] part of check-in [1de551cb5f] Add support for reusing OFStreams after close

Right now, this is only useful for OFTCPSocket, as this is the only
class so far not establishing the stream in the init method. However,
this adds the general infrastructure to allow reuse to all subclasses of
OFStream. (check-in: [1de551cb5f] user: js, branch: trunk, size: 16488) [annotate] [blame] [check-ins using] [diff]

2016-06-05
21:17
[b9d140020a] part of check-in [09a0d12bae] Always cast to unsigned char for to{upper,lower}()

This is required as passing something signed to it is an error on
NetBSD, but passing anything else than a char is undefined on Linux. (check-in: [09a0d12bae] user: js, branch: trunk, size: 16471) [annotate] [blame] [check-ins using] [diff]

2016-03-20
15:25
[9171dc644f] part of check-in [3b20e90066] OFHTTPServer: Delegate for client socket exception (check-in: [3b20e90066] user: js, branch: 0.8, size: 16633) [annotate] [blame] [check-ins using] [diff]
15:24
[eb56a06a9a] part of check-in [3acdce88f5] OFHTTPServer: Delegate for client socket exception (check-in: [3acdce88f5] user: js, branch: trunk, size: 16459) [annotate] [blame] [check-ins using] [diff]
2016-01-05
14:55
[e2c16ad886] part of check-in [6b4d138cc3] OFHTTPServer: Allow setting name to nil

Setting it to nil means no Server header is sent. (check-in: [6b4d138cc3] user: js, branch: trunk, size: 15936) [annotate] [blame] [check-ins using] [diff]

14:10
[5b5e9e2174] part of check-in [58d4025602] Better randomization of HTTP header order

This should randomize the order of all headers now, preventing
fingerprinting by the order of HTTP headers. (check-in: [58d4025602] user: js, branch: trunk, size: 15884) [annotate] [blame] [check-ins using] [diff]

2016-01-03
00:43
[aed0368bbf] part of check-in [cec0f072f8] Update copyright

While at it, also update the mail address. (check-in: [cec0f072f8] user: js, branch: 0.8, size: 16110) [annotate] [blame] [check-ins using] [diff]

00:41
[9cfe1fbff0] part of check-in [2a27cf3000] Update copyright

While at it, also update the mail address. (check-in: [2a27cf3000] user: js, branch: trunk, size: 15701) [annotate] [blame] [check-ins using] [diff]

2015-11-29
14:23
[3f7a396278] part of check-in [2aca549d60] Clean up class extensions

Now that we can require GCC >= 4.6, we no longer need to fall back to
using a category on old compilers. (check-in: [2aca549d60] user: js, branch: trunk, size: 15697) [annotate] [blame] [check-ins using] [diff]

11:43
[c7dbee91dc] part of check-in [48980f2297] Make properties a requirement and clean up code

This increases the required GCC version from 4.0 to 4.6 (exception:
Apple GCC, which already supports this with >= 4.0 starting with OS X
10.5). Since even GCC 4.6 is really old by now, there is no point in
still supporting something even older and making the code ugly because
of that. While some hardware and OS support was dropped from GCC 4.6
compared to GCC 4.0, there is nothing in there that would be an
interesting target with the exception of BeOS maybe - but a port to BeOS
can also be achieved using the Haiku support. The other dropped OSes are
mostly old versions of OSes while newer ones are still being supported
(and those newer versions of those OSes still support the same
hardware). (check-in: [48980f2297] user: js, branch: trunk, size: 15716) [annotate] [blame] [check-ins using] [diff]

2015-11-02
13:53
[c9577b3169] part of check-in [b73d25b8c6] OFHTTP{Client,Server}: Concatenate repeated fields (check-in: [b73d25b8c6] user: js, branch: trunk, size: 16106) [annotate] [blame] [check-ins using] [diff]
2015-05-23
11:21
[0ddfcecf31] part of check-in [c8877fd278] OFHTTPRequest: Rename entity to body (check-in: [c8877fd278] user: js, branch: trunk, size: 15989) [annotate] [blame] [check-ins using] [diff]
2015-05-06
20:18
[c3a8a62614] part of check-in [ff759684e2] OFNotConnectedException -> OFNotOpenException (check-in: [ff759684e2] user: js, branch: trunk, size: 16005) [annotate] [blame] [check-ins using] [diff]
2015-04-26
08:54
[d46048ca78] part of check-in [0a249f58cf] Small improvements for OFHTTPClient & OFHTTPServer (check-in: [0a249f58cf] user: js, branch: trunk, size: 16020) [annotate] [blame] [check-ins using] [diff]
2015-03-22
11:42
[5ac9f0f46d] part of check-in [099e939079] Abstract int vs SOCKET as of_socket_t (check-in: [099e939079] user: js, branch: trunk, size: 15766) [annotate] [blame] [check-ins using] [diff]
2015-01-03
20:57
[5b74303c4d] part of check-in [cfd374b906] Update copyright (check-in: [cfd374b906] user: js, branch: trunk, size: 15783) [annotate] [blame] [check-ins using] [diff]
2014-12-07
18:18
[16d942747a] part of check-in [372ed8b399] OFHTTPServer: Fix warning on Win64 (check-in: [372ed8b399] user: js, branch: trunk, size: 15777) [annotate] [blame] [check-ins using] [diff]
2014-08-21
19:00
[36dd983976] part of check-in [b87a5d3b46] OFHTTPServer: Don't close the socket manually

Closing it manually causes the fd to become invalid before it is removed
from the OFKernelEventObserver. (check-in: [b87a5d3b46] user: js, branch: trunk, size: 15772) [annotate] [blame] [check-ins using] [diff]

2014-07-07
00:50
[3efdaebeee] part of check-in [d2487bc7e1] OFURL: Don't include the leading "/" in path

While Cocoa includes it, RFC 1738 explicitly states that the "/" between
host / port and path is not part of the path. (check-in: [d2487bc7e1] user: js, branch: trunk, size: 15501) [annotate] [blame] [check-ins using] [diff]

2014-06-21
21:43
[79b7aacf76] part of check-in [13ee56edf3] Move all macros from OFObject.h to macros.h

This means that OFObject.h imports macros.h now, making it unnecessary
to manually import macros.h in almost every file. And while at it, also
import autorelease.h in OFObject.h, so that this doesn't need to be
manually imported in almost every file as well. (check-in: [13ee56edf3] user: js, branch: trunk, size: 15354) [annotate] [blame] [check-ins using] [diff]

2014-05-31
17:57
[7f98124205] part of check-in [acc999a75e] OFStream: Add -[hasDataInReadBuffer].

This replaces -[numberOfBytesInReadBuffer], as it's not always known how
many bytes there are exactly and thus the number would often be wrong
(e.g. because data is compressed). (check-in: [acc999a75e] user: js, branch: trunk, size: 15398) [annotate] [blame] [check-ins using] [diff]

2014-02-13
23:26
[48d8bdc4b1] part of check-in [2f5af58573] Use -std=c11 instead of -std=gnu11

Not using -std=gnu11 means _GNU_SOURCE does not get defined anymore,
therefore this commit also adds the required feature defines for glibc.

Additionally, this adds of_strdup in macros.h, as strdup is an
extension. (check-in: [2f5af58573] user: js, branch: trunk, size: 15389) [annotate] [blame] [check-ins using] [diff]

2014-02-11
14:44
[3104ed8898] part of check-in [1724525754] OFHTTPServer: Allow binding to port 0

This allows binding to a random port and calling [server port] to get
the port used. (check-in: [1724525754] user: js, branch: trunk, size: 15386) [annotate] [blame] [check-ins using] [diff]

2014-01-04
00:24
[2f642831d8] part of check-in [3b97fc3cd9] Update copyright. (check-in: [3b97fc3cd9] user: js, branch: trunk, size: 15391) [annotate] [blame] [check-ins using] [diff]
2013-12-05
17:48
[6a0ef70d6f] part of check-in [fa6496efc7] Make coding style consistent.

A file documenting the coding style will be written soon. This will
hopefully prevent conflicts in the future, such as whether static
functions are written in camelCase or_with_underscores, like was the
case here. (check-in: [fa6496efc7] user: js, branch: trunk, size: 15385) [annotate] [blame] [check-ins using] [diff]

2013-09-29
19:44
[5da55a3a8f] part of check-in [90de201b43] Get rid of a warning on 32-bit systems with Clang. (check-in: [90de201b43] user: js, branch: trunk, size: 15396) [annotate] [blame] [check-ins using] [diff]
2013-09-28
15:25
[9bf4d2786d] part of check-in [7be34d8c40] OFHTTP{Client,Server}: Handle all request methods. (check-in: [7be34d8c40] user: js, branch: trunk, size: 15388) [annotate] [blame] [check-ins using] [diff]
01:50
[86738768aa] part of check-in [c76896d937] Improve HTTP request method handling. (check-in: [c76896d937] user: js, branch: trunk, size: 15711) [annotate] [blame] [check-ins using] [diff]
2013-08-15
19:00
[80673ced7f] part of check-in [1d7a1cbca0] Move private methods into private headers. (check-in: [1d7a1cbca0] user: js, branch: trunk, size: 15708) [annotate] [blame] [check-ins using] [diff]
2013-07-29
19:43
[ce19d575cc] part of check-in [36d0b1e2d8] Rename OFHTTPRequestReply to OFHTTPResponse. (check-in: [36d0b1e2d8] user: js, branch: trunk, size: 15533) [annotate] [blame] [check-ins using] [diff]
2013-06-22
12:12
[0971f78b90] part of check-in [3d16a30f41] 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. (check-in: [3d16a30f41] user: js, branch: trunk, size: 15499) [annotate] [blame] [check-ins using] [diff]

2013-04-10
20:56
[0c9c549df6] part of check-in [9ea5f2723f] OFHTTPServer: Fix an evil typo. (check-in: [9ea5f2723f] user: js, branch: trunk, size: 15625) [annotate] [blame] [check-ins using] [diff]
2013-03-04
17:20
[a4708f3429] part of check-in [c5ef582958] Replace BOOL with bool.

The only places where BOOL is left are those where they are required by
the ABI. (check-in: [c5ef582958] user: js, branch: trunk, size: 15624) [annotate] [blame] [check-ins using] [diff]

2013-02-12
18:22
[7e47217e14] part of check-in [e40729d406] Prefix all ivars with an underscore. (check-in: [e40729d406] user: js, branch: trunk, size: 15570) [annotate] [blame] [check-ins using] [diff]
2013-02-05
22:24
[4524bb5e96] part of check-in [737a82e1a4] Move abort() to make old GCCs happy. (check-in: [737a82e1a4] user: js, branch: trunk, size: 15322) [annotate] [blame] [check-ins using] [diff]
2013-01-28
22:40
[8f1d483c7d] part of check-in [fe4a1fb193] OFHTTPServer: Fix missing #import. (check-in: [fe4a1fb193] user: js, branch: trunk, size: 15291) [annotate] [blame] [check-ins using] [diff]
2013-01-26
00:13
[3a7faef063] part of check-in [bdf9c4d96b] Make OFHTTPRequestReply a stream.

This also implements chunked transfer encoding for OFHTTPServer and adds
a property for the protocol version to OFHTTPRequest(Reply).

Additionally, this makes it possible to add an async version of
OFHTTPClient. (check-in: [bdf9c4d96b] user: js, branch: trunk, size: 15267) [annotate] [blame] [check-ins using] [diff]

2013-01-23
21:52
[34f30ba48f] part of check-in [ea4a43461c] Never compare to @"", use length instead. (check-in: [ea4a43461c] user: js, branch: trunk, size: 14287) [annotate] [blame] [check-ins using] [diff]
2013-01-14
23:21
[85b2274e9b] part of check-in [8472e9eade] OFHTTPServer: Always send Server and Date.

This also makes sure those aren't sent twice in case they are also in
the headers. (check-in: [8472e9eade] user: js, branch: trunk, size: 14288) [annotate] [blame] [check-ins using] [diff]

2013-01-09
22:24
[9f5abefa32] part of check-in [813c00ccf0] Update copyright. (check-in: [813c00ccf0] user: js, branch: trunk, size: 14294) [annotate] [blame] [check-ins using] [diff]
2012-12-27
11:21
[f75ba40071] part of check-in [df7b88405a] OFHTTPServer: Pass errors from listening socket.

This way, it is possible to recover from errors by e.g. stopping the
server in the main thread and then restarting it, or by just ignoring
the exception. (check-in: [df7b88405a] user: js, branch: trunk, size: 14288) [annotate] [blame] [check-ins using] [diff]

2012-12-26
20:55
[80903ac435] part of check-in [75f187cef5] OFHTTPRequestResult -> OFHTTPRequestReply.

The class also has its own file now. (check-in: [75f187cef5] user: js, branch: trunk, size: 14089) [annotate] [blame] [check-ins using] [diff]

19:07
[a3b1ef98c3] part of check-in [f8a7660ac7] OFHTTPServer: Correctly put the query in the URL.

Before, it incorrectly was part of the path instead of being in the
query field. (check-in: [f8a7660ac7] user: js, branch: trunk, size: 14059) [annotate] [blame] [check-ins using] [diff]

2012-12-22
15:37
[3793430199] part of check-in [917ce5754c] Add -[doesNotRecognizeSelector:]. (check-in: [917ce5754c] user: js, branch: trunk, size: 13748) [annotate] [blame] [check-ins using] [diff]
2012-12-20
16:42
[0d0597589f] part of check-in [89177dcd09] Remove dummy implementations for formal protocols. (check-in: [89177dcd09] user: js, branch: trunk, size: 13786) [annotate] [blame] [check-ins using] [diff]
14:24
[91602836ad] part of check-in [27120e14ca] OFHTTPServer: Add a timeout. (check-in: [27120e14ca] user: js, branch: trunk, size: 14068) [annotate] [blame] [check-ins using] [diff]
13:03
[862d84b05e] part of check-in [a31bba0947] OFHTTPServer: Make is possible to stop the server. (check-in: [a31bba0947] user: js, branch: trunk, size: 13645) [annotate] [blame] [check-ins using] [diff]
2012-12-15
20:35
[bee3baba47] part of check-in [b8d3e09eff] OFHTTPRequest: Add property remoteAddress. (check-in: [b8d3e09eff] user: js, branch: trunk, size: 13566) [annotate] [blame] [check-ins using] [diff]
19:36
[0a1464d83e] part of check-in [2fb248a952] OFHTTPServer: Fix handling of Host:. (check-in: [2fb248a952] user: js, branch: trunk, size: 13515) [annotate] [blame] [check-ins using] [diff]
17:52
[61524a3f46] part of check-in [c85ff8d35a] OFDataArray: Improve API. (check-in: [c85ff8d35a] user: js, branch: trunk, size: 13468) [annotate] [blame] [check-ins using] [diff]
2012-12-14
01:42
[e6f92f7b1d] part of check-in [fbb9df7439] Rename -[OFHTTPRequest postData] to POSTData. (check-in: [fbb9df7439] user: js, branch: trunk, size: 13482) [annotate] [blame] [check-ins using] [diff]
2012-12-12
18:57
[2f6eab66c7] part of check-in [41480893fc] Small conformance fix for OFHTTPServer + OFURL. (check-in: [41480893fc] user: js, branch: trunk, size: 13482) [annotate] [blame] [check-ins using] [diff]
2012-12-11
16:38
[0de4511755] part of check-in [d330801ded] OFHTTPRequest: Add the current date if necessary. (check-in: [d330801ded] user: js, branch: trunk, size: 13429) [annotate] [blame] [check-ins using] [diff]
14:40
[f2e30645b9] part of check-in [eea79730f4] OFHTTPServer: Make the server name configurable. (check-in: [eea79730f4] user: js, branch: trunk, size: 13235) [annotate] [blame] [check-ins using] [diff]
12:32
[bee61430ab] part of check-in [e0c2d4af24] OFHTTPServer: Small fixes. (check-in: [e0c2d4af24] user: js, branch: trunk, size: 13065) [annotate] [blame] [check-ins using] [diff]
12:12
Added: [019519d771] part of check-in [190b9d3a5c] Add OFHTTPServer. (check-in: [190b9d3a5c] user: js, branch: trunk, size: 13022) [annotate] [blame] [check-ins using]