ObjFW  History of src/OFTCPSocket.m of 0d6380c6266d7558

History of the file that is called src/OFTCPSocket.m at checkin 0d6380c6266d7558

2021-11-13
13:04
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. file: [cfa63a9a83] check-in: [d30efa8bbf] user: js, branch: trunk, size: 11510 [annotate] [blame] [check-ins using] [diff]

2021-04-18
23:18
INVALID_SOCKET -> OFInvalidSocketHandle file: [d37354390e] check-in: [4b587c8874] user: js, branch: new-naming-convention, size: 11549 [annotate] [blame] [check-ins using] [diff]
22:56
Rename all symbols marked extern file: [96bf5fcafe] check-in: [e73c65a849] user: js, branch: new-naming-convention, size: 11458 [annotate] [blame] [check-ins using] [diff]
20:51
Rename everything in several smaller files file: [006dac67c6] check-in: [35de667566] user: js, branch: new-naming-convention, size: 11484 [annotate] [blame] [check-ins using] [diff]
15:55
Rename all functions in macros.h file: [a6175a336c] check-in: [7392685ffc] user: js, branch: new-naming-convention, size: 11481 [annotate] [blame] [check-ins using] [diff]
2021-04-17
13:58
of_socket_address_t -> OFSocketAddress file: [98d3158581] check-in: [e3c5bb70dd] user: js, branch: new-naming-convention, size: 11479 [annotate] [blame] [check-ins using] [diff]
03:37
of_run_loop_mode_t -> OFRunLoopMode file: [2ec643758e] check-in: [b480ef54db] user: js, branch: new-naming-convention, size: 11507 [annotate] [blame] [check-ins using] [diff]
03:21
Rename all blocks file: [95d1a09274] check-in: [c4e0e56fa3] user: js, branch: new-naming-convention, size: 11527 [annotate] [blame] [check-ins using] [diff]
2021-03-07
20:25
*.m: Fold methods into one line where it fits file: [5cdf6dd0d8] check-in: [1b82d3bf4f] user: js, branch: trunk, size: 11541 [annotate] [blame] [check-ins using] [diff]
2021-01-14
02:29
Define _HPUX_ALT_XOPEN_SOCKET_API where necessary

There is a nasty bug in HP-UX: When using the proper socket APIs that
take a socklen_t (which is 64 bit in LP64 mode), it still calls into
methods that expect an int - so there is a type mismatch between the
headers and the compiled system libraries. This leads to all socklen_t
being interpreted as 0 (due to big endian). Defining
_HPUX_ALT_XOPEN_SOCKET_API makes it use the correct symbols in the
system libraries instead. file: [49e1470816] check-in: [1833194867] user: js, branch: trunk, size: 11571 [annotate] [blame] [check-ins using] [diff]

2021-01-13
23:01
Wrap _XOPEN_SOURCE_EXTENDED define in #ifndef file: [7803db3fba] check-in: [430d54e2a9] user: js, branch: trunk, size: 11536 [annotate] [blame] [check-ins using] [diff]
19:16
Define _XOPEN_SOURCE_EXTENDED where necessary file: [6b56ccc343] check-in: [d55b73f38e] user: js, branch: trunk, size: 11497 [annotate] [blame] [check-ins using] [diff]
2021-01-02
22:06
Update copyright file: [c51648b5b4] check-in: [27b401c7c2] user: js, branch: amiga-library, size: 11405 [annotate] [blame] [check-ins using] [diff]
22:04
Update copyright file: [d1c99c42fa] check-in: [374e1a1bfa] user: js, branch: trunk, size: 11466 [annotate] [blame] [check-ins using] [diff]
2021-01-01
22:19
Workaround for binding to port 0 on HP-UX file: [c69f54d1cd] check-in: [d1bd191ac7] user: js, branch: trunk, size: 11555 [annotate] [blame] [check-ins using] [diff]
2020-05-06
00:32
Improve names of several properties file: [dc32b6d4c9] check-in: [bc67e98833] user: js, branch: trunk, size: 11494 [annotate] [blame] [check-ins using] [diff]
2020-05-05
01:14
Add OFSCTPSocket file: [243bdb7d8b] check-in: [4592b16fab] user: js, branch: trunk, size: 11432 [annotate] [blame] [check-ins using] [diff]
00:36
OFTCPSocket: Move out async connecting file: [9be04ec18b] check-in: [0d6380c626] user: js, branch: trunk, size: 11469 [annotate] [blame] [check-ins using] [diff]
00:06
OFTCPSocket: Move out SOCKS5 handling file: [4f94254b4b] check-in: [b5cd23da2b] user: js, branch: trunk, size: 17531 [annotate] [blame] [check-ins using] [diff]
2020-05-03
12:14
OFDatagramSocket: Add broadcastAllowed property file: [48edda05b6] check-in: [310fd74f89] user: js, branch: trunk, size: 22716 [annotate] [blame] [check-ins using] [diff]
2020-05-01
13:58
Fix GCC 4.6 and AmigaOS build file: [aa9ac8bab1] check-in: [39cdae41f8] user: js, branch: trunk, size: 22716 [annotate] [blame] [check-ins using] [diff]
2020-04-29
23:59
Add OFSPXSocket file: [ef285e844b] check-in: [857f8edc09] user: js, branch: trunk, size: 22624 [annotate] [blame] [check-ins using] [diff]
2020-04-26
19:39
Remove redundant arguments from blocks

Arguments that can just be captured by the block don't need to be
repeated as an argument. A lot of arguments passed to a delegate are
therefore not needed for a block. file: [36820b9499] check-in: [d7ddb3dbc7] user: js, branch: trunk, size: 22984 [annotate] [blame] [check-ins using] [diff]

18:10
Move accept and listen OF{TCP -> Stream}Socket file: [bb1a762052] check-in: [13a8f43898] user: js, branch: trunk, size: 22993 [annotate] [blame] [check-ins using] [diff]
16:21
Add OFSequencedPacketSocket

This is intended for SCTP and SPX. file: [e938092c44] check-in: [e5b2ee56ff] user: js, branch: trunk, size: 26569 [annotate] [blame] [check-ins using] [diff]

2020-04-24
00:21
Add OFIPStreamSocket

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

2020-01-07
20:28
OFKernelEventObserver: Remove queueing of actions

This removes the ability to let a thread add or remove objects for
another thread. This features wasn't used at all, but caused significant
problems with kqueue and epoll, as this often resulted in removing a
file descriptor after it had already been closed. file: [6288b956d6] check-in: [24eff635db] user: js, branch: trunk, size: 26610 [annotate] [blame] [check-ins using] [diff]

2020-01-02
01:51
Update copyright file: [e3f56ac740] check-in: [c7f0229795] user: js, branch: trunk, size: 26027 [annotate] [blame] [check-ins using] [diff]
2019-10-07
20:32
Split OFDNSResolverDelegate into two delegates

These are different enough that it makes no sense to have them in one.
Having them in one means all methods are @optional and typos cannot be
caught by the compiler. file: [5389356633] check-in: [e3c911c7f5] user: js, branch: trunk, size: 26024 [annotate] [blame] [check-ins using] [diff]

00:07
OFDNSResolver: Major refactor

This temporarily doesn't use the search domains anymore and makes CNAMEs
slightly more inefficient. The next commits will fix both. file: [21a88b2103] check-in: [ee592cf603] user: js, branch: trunk, size: 26020 [annotate] [blame] [check-ins using] [diff]

2019-08-09
23:44
Support sockets on AmigaOS 3 file: [f42e23d703] check-in: [3dec8ecf2e] user: js, branch: trunk, size: 26064 [annotate] [blame] [check-ins using] [diff]
2019-06-26
18:26
Use EOPNOTSUPP for SOCKS5 error code 7 file: [39c02808e8] check-in: [f6b58b80a8] user: js, branch: trunk, size: 26051 [annotate] [blame] [check-ins using] [diff]
2019-06-17
02:33
Remove underscores from class names file: [bfc7e59ebf] check-in: [17d57e01ff] user: js, branch: trunk, size: 26048 [annotate] [blame] [check-ins using] [diff]
2019-05-05
23:02
OFTCPSocket: Work around missing EPROTO

This is required for MorphOS. file: [34fdf0c261] check-in: [366ce5073a] user: js, branch: trunk, size: 26056 [annotate] [blame] [check-ins using] [diff]

2019-04-14
15:40
Use more const file: [76ca7c36c5] check-in: [dfd61e781e] user: js, branch: trunk, size: 26023 [annotate] [blame] [check-ins using] [diff]
2019-03-19
22:23
OFTCPSocket: Properly close socket on error file: [8d03fd4bac] check-in: [7d78a2b675] user: js, branch: trunk, size: 26012 [annotate] [blame] [check-ins using] [diff]
2019-03-08
00:35
Use dot syntax file: [e57d0397dd] check-in: [bceb7ed4c9] user: js, branch: trunk, size: 25992 [annotate] [blame] [check-ins using] [diff]
2019-01-07
22:59
Partially fix sockets on Nintendo 3DS/Wii

This does not fully fix it yet, but at least the socket tests in the
test suite pass on 3DS now. file: [909cd558d8] check-in: [ab89c47f42] user: js, branch: trunk, size: 26095 [annotate] [blame] [check-ins using] [diff]

2019-01-03
19:13
Update copyright file: [94bf69c96d] check-in: [0509d7a844] user: js, branch: trunk, size: 25450 [annotate] [blame] [check-ins using] [diff]
2018-12-22
00:29
OFDNSResolver: Use a delegate for async operations

Because there is usually only one resolver per thread, having the
delegate as a property on the resolver would not work. It is therefore
passed as an argument.

This only changes the public API so far. Internally, the old target /
selector / context pattern is still being used. This will be changed
later. file: [b5ab8aeaeb] check-in: [0afb04d93c] user: js, branch: trunk, size: 25444 [annotate] [blame] [check-ins using] [diff]

2018-12-18
17:10
Slightly decrease binary size file: [9927726f3b] check-in: [3501205f07] user: js, branch: trunk, size: 25794 [annotate] [blame] [check-ins using] [diff]
14:14
Use OFData instead of a buffer for async writes

This avoids the entire problem of keeping the buffer alive until the
write finished. file: [d516c427cd] check-in: [f218986f51] user: js, branch: trunk, size: 25724 [annotate] [blame] [check-ins using] [diff]

2018-12-11
22:57
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. file: [dd4630f033] check-in: [064dbe5127] user: js, branch: trunk, size: 25706 [annotate] [blame] [check-ins using] [diff]

2018-12-08
18:55
OFUDPSocket: Use a delegate for async operations file: [349339a041] check-in: [da2dd2dde5] user: js, branch: trunk, size: 26067 [annotate] [blame] [check-ins using] [diff]
16:53
Separate error methods for async method delegates file: [855c7eb790] check-in: [2b6a12065e] user: js, branch: trunk, size: 26190 [annotate] [blame] [check-ins using] [diff]
16:05
OFTCPSocket: Use a delegate for async operations file: [8cf85678b9] check-in: [27153bf8cf] user: js, branch: trunk, size: 25944 [annotate] [blame] [check-ins using] [diff]
2018-12-07
01:33
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). file: [df6639e5af] check-in: [d16ad96cbd] user: js, branch: trunk, size: 26324 [annotate] [blame] [check-ins using] [diff]

2018-10-27
21:14
Fix compilation with newer MinGW-w64 versions file: [44b284db49] check-in: [0036c4c22e] user: js, branch: trunk, size: 28466 [annotate] [blame] [check-ins using] [diff]
2018-10-07
02:06
Remove resolver.m

Instead, OFDNSResolver is used for everything now. file: [0378e7d3f9] check-in: [6e9ee122eb] user: js, branch: trunk, size: 28448 [annotate] [blame] [check-ins using] [diff]

2018-10-06
20:21
OFDNSResolver: Add sync resolve socket addresses file: [2642e89679] check-in: [22700e6082] user: js, branch: trunk, size: 28516 [annotate] [blame] [check-ins using] [diff]
19:41
OFTCPSocket: -[setBlocking:] on new connections file: [8eaed27d7d] check-in: [02073abe82] user: js, branch: trunk, size: 28556 [annotate] [blame] [check-ins using] [diff]
19:36
OFTCPSocket: Implement sync connect via async file: [b569f752f9] check-in: [c5c4d38220] user: js, branch: trunk, size: 28500 [annotate] [blame] [check-ins using] [diff]
18:24
OFTCPSocket: Allow specifying the run loop mode file: [1071039b7f] check-in: [29e9a4c868] user: js, branch: trunk, size: 28913 [annotate] [blame] [check-ins using] [diff]
2018-09-24
00:13
OFRunLoop: Add support for modes file: [6cee403849] check-in: [3fb96dff3c] user: js, branch: trunk, size: 26786 [annotate] [blame] [check-ins using] [diff]
2018-09-23
15:19
OFTCPSocket: SOCKS5 support for async connect file: [1abea7673b] check-in: [228ac2af9b] user: js, branch: trunk, size: 26628 [annotate] [blame] [check-ins using] [diff]
2018-09-16
12:49
OFTCPSocket: Async connect without threads file: [e3252f358c] check-in: [6638379972] user: js, branch: trunk, size: 19110 [annotate] [blame] [check-ins using] [diff]
2018-08-26
18:39
Fix compilation for Wii

This pretends that net_getsockopt() exists, which it does not yet. As
soon as it lands in libogc, this will work again. file: [3cac08541a] check-in: [bed2db0fd3] user: js, branch: trunk, size: 16854 [annotate] [blame] [check-ins using] [diff]

12:46
Initial support for async connect without threads file: [aaa2b87b7c] check-in: [1e79c0a969] user: js, branch: trunk, size: 16831 [annotate] [blame] [check-ins using] [diff]
2018-08-11
21:53
Fix build on 3DS and Wii file: [b15819e802] check-in: [9a494f183b] user: js, branch: trunk, size: 15469 [annotate] [blame] [check-ins using] [diff]
14:00
Change the layout of of_socket_address_t

Instead of containing a struct sockaddr_storage - which does not exist
on all supported platforms - it now contains a union of all struct
sockaddr_* types.

Additionally, if struct sockaddr_in6 does not exist, it is defined so
that an IPv6 can be stored even if the system does not support IPv6. file: [a77bbf08e1] check-in: [8f810ecb7e] user: js, branch: trunk, size: 15412 [annotate] [blame] [check-ins using] [diff]

2018-08-05
20:00
Add a few missing casts file: [e5ab8ac35c] check-in: [4f49f55859] user: js, branch: trunk, size: 15544 [annotate] [blame] [check-ins using] [diff]
2018-08-04
16:23
Support for non-blocking UDP sockets file: [61b4b17037] check-in: [7de9d67be9] user: js, branch: trunk, size: 15533 [annotate] [blame] [check-ins using] [diff]
15:35
Use OF_HAVE_IPV6 instead of HAVE_IPV6

This has always been wrong. file: [9f8d11c4a6] check-in: [e36455441d] user: js, branch: trunk, size: 15491 [annotate] [blame] [check-ins using] [diff]

2018-07-28
20:21
Add of_socket_address_ip_string()

This replaces of_address_to_string_and_port(). file: [7dca3c8c74] check-in: [8aeee6680a] user: js, branch: trunk, size: 15482 [annotate] [blame] [check-ins using] [diff]

2018-06-24
22:08
Rename -[listenWith{BackLog -> Backlog}:] file: [596449d526] check-in: [3cd89fa8ba] user: js, branch: trunk, size: 15243 [annotate] [blame] [check-ins using] [diff]
2018-01-03
19:49
Update copyright notice file: [cc02b954ab] check-in: [7e5c81e186] user: js, branch: trunk, size: 15243 [annotate] [blame] [check-ins using] [diff]
2017-10-22
15:05
Make Apple GCC with -Wshadow happy file: [88cbad652d] check-in: [a06354b42a] user: js, branch: trunk, size: 15220 [annotate] [blame] [check-ins using] [diff]
14:09
Make Apple GCC with -Wshadow happy file: [51b517e269] check-in: [31c0f5b89e] user: js, branch: 0.90, size: 14890 [annotate] [blame] [check-ins using] [diff]
2017-10-17
00:33
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. file: [f8b1b83a89] check-in: [2f4e0df8be] user: js, branch: trunk, size: 15232 [annotate] [blame] [check-ins using] [diff]

2017-09-28
23:02
Enable -Wnullable-to-nonnull-conversion and adjust file: [736afef818] check-in: [2de9660312] user: js, branch: trunk, size: 15134 [annotate] [blame] [check-ins using] [diff]
2017-09-24
11:24
Change type for async exceptions to id file: [bfcab86676] check-in: [f8498bb114] user: js, branch: trunk, size: 15098 [annotate] [blame] [check-ins using] [diff]
2017-09-23
22:07
Support for passing a context to async IO handlers file: [e7861c7baa] check-in: [958da109d3] user: js, branch: trunk, size: 15140 [annotate] [blame] [check-ins using] [diff]
17:19
OFTCPSocket: Retain exception for async connect file: [9870a76e72] check-in: [ffadc58627] user: js, branch: trunk, size: 14898 [annotate] [blame] [check-ins using] [diff]
2017-05-22
23:31
Make includes of unistd.h and fcntl.h conditional file: [56b097e84a] check-in: [1287e77e04] user: js, branch: trunk, size: 14889 [annotate] [blame] [check-ins using] [diff]
2017-05-21
23:57
Use closesocket() instead of close()

Previously, socket_helpers.h would just define close() to whatever is
needed to close a socket. However, this makes it possible to
accidentally call a socket-specific close on something that is not a
socket. Having to explicitly call closesocket() (and defining it to
close() on platforms where it's the same) prevents this. file: [16f6a959b9] check-in: [b4cd87cd81] user: js, branch: trunk, size: 14861 [annotate] [blame] [check-ins using] [diff]

21:28
Prefix private methods with of_ instead of OF_

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

2017-05-13
22:38
Reduce retain + autorelease file: [379b9f377d] check-in: [504e13cf00] user: js, branch: trunk, size: 14831 [annotate] [blame] [check-ins using] [diff]
2017-05-07
20:10
Small code style change

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

2017-01-09
17:36
Update copyright

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

2016-06-07
22:56
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. file: [2735f938b2] check-in: [1de551cb5f] user: js, branch: trunk, size: 14814 [annotate] [blame] [check-ins using] [diff]

2016-05-28
11:37
Add a reference to OFStdIOStream_Win32Console

This is required for static linking, as otherwise
+[OFStdIOStream_Win32Console load] will not be called. file: [15a3d3213a] check-in: [e53a4fd61c] user: js, branch: trunk, size: 14825 [annotate] [blame] [check-ins using] [diff]

2016-05-06
20:54
Make GCC happy with -Wsign-compare file: [373ad5cf82] check-in: [e840997cc8] user: js, branch: trunk, size: 14825 [annotate] [blame] [check-ins using] [diff]
2016-03-27
23:10
Add socket support for Nintendo 3DS

This removes the port registry that existed for the Wii and instead
tries binding to random ports in a loop until it succeeds or errno is
not EADDRINUSE. This is done for the Wii and Nintendo 3DS now.

This also includes several other socket-related cleanups. file: [f48a1756ef] check-in: [12b8a7552e] user: js, branch: trunk, size: 14809 [annotate] [blame] [check-ins using] [diff]

2016-01-03
00:43
Update copyright

While at it, also update the mail address. file: [73559345eb] check-in: [cec0f072f8] user: js, branch: 0.8, size: 14131 [annotate] [blame] [check-ins using] [diff]

00:41
Update copyright

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

2015-11-29
11:43
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). file: [0119b6524b] check-in: [48980f2297] user: js, branch: trunk, size: 14429 [annotate] [blame] [check-ins using] [diff]

2015-10-19
22:15
Add platform.h & make platform defines consistent file: [7248d669cd] check-in: [1ba08eebc5] user: js, branch: trunk, size: 14643 [annotate] [blame] [check-ins using] [diff]
2015-10-17
10:59
Add a port registry for the Wii

This is necessary as the Wii does not allow picking a random free port,
and thus we need to track which ports are used. file: [a3e1049524] check-in: [ed4549ddd3] user: js, branch: trunk, size: 14655 [annotate] [blame] [check-ins using] [diff]

2015-09-06
15:48
Fix compilation for Wii file: [76989391ef] check-in: [d0eab356ce] user: js, branch: trunk, size: 14127 [annotate] [blame] [check-ins using] [diff]
2015-05-14
09:58
Clean up a few file and socket related checks file: [85280ea39a] check-in: [b37fdafac1] user: js, branch: trunk, size: 13907 [annotate] [blame] [check-ins using] [diff]
2015-05-06
20:18
OFNotConnectedException -> OFNotOpenException file: [12ce6e353d] check-in: [ff759684e2] user: js, branch: trunk, size: 13887 [annotate] [blame] [check-ins using] [diff]
2015-05-03
10:16
OFTCPSocket: Add -[setTCPNoDelayEnabled:]

This also adds -[isTCPNoDelayEnabled] and -[isKeepAliveEnabled],
together with OFGetOptionFailedException to indiciate failure to
retrieve the current value of the option. file: [43965236bf] check-in: [12fbe85aab] user: js, branch: trunk, size: 13902 [annotate] [blame] [check-ins using] [diff]

2015-02-18
22:56
Add of_getsockname() and make use of it

of_getsockname() calls getsockname() after acquiring a mutex. This is
necessary as some implementations of getsockname() are not thread-safe. file: [421ec8b16e] check-in: [f18615e057] user: js, branch: trunk, size: 13027 [annotate] [blame] [check-ins using] [diff]

2015-02-16
08:39
Explicitly pass errno to exceptions

The old behaviour where the exception would access errno directly on
creation of the exception was very fragile. The two main problems with
it were that sometimes it would pick up an errno even though none had
been set and in other cases that when the exception was created errno
had already been overridden.

This also greatly increases errno handling on Win32, especially in
conjunction with sockets. It can still be improved further, though. file: [f120fb3aeb] check-in: [62e2de30b9] user: js, branch: trunk, size: 12995 [annotate] [blame] [check-ins using] [diff]

2015-01-17
18:39
Fix compilation on Win32 file: [a985ec70c8] check-in: [8b0caeabde] user: js, branch: trunk, size: 12592 [annotate] [blame] [check-ins using] [diff]
2015-01-03
20:57
Update copyright file: [a7dff28cc4] check-in: [cfd374b906] user: js, branch: trunk, size: 12296 [annotate] [blame] [check-ins using] [diff]
2014-12-13
16:52
Use CLOEXEC for files and sockets file: [c059520ca3] check-in: [06d2de4571] user: js, branch: trunk, size: 12290 [annotate] [blame] [check-ins using] [diff]
2014-08-18
10:53
OFTCPSocket: Clear read buffer for new connection

This prevents reading old data when closing and reconnecting the socket. file: [e59925afa4] check-in: [c6a4b0a95f] user: js, branch: trunk, size: 11203 [annotate] [blame] [check-ins using] [diff]

2014-06-21
21:43
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. file: [dc50295dfd] check-in: [13ee56edf3] user: js, branch: trunk, size: 11063 [annotate] [blame] [check-ins using] [diff]

2014-02-21
17:17
Cast return of sizeof() to socklen_t

It caused a warning about an implicit cast on OS X/PPC64. file: [3b9e3e0a34] check-in: [3fa37632f9] user: js, branch: trunk, size: 11106 [annotate] [blame] [check-ins using] [diff]

2014-02-18
00:22
Move around a few defines to be more consistent file: [2de1fb049a] check-in: [f9d12201f8] user: js, branch: trunk, size: 11057 [annotate] [blame] [check-ins using] [diff]
2014-02-12
03:17
Fix compilation with mingw32 file: [96ae0860b7] check-in: [fab07a40ca] user: js, branch: trunk, size: 11057 [annotate] [blame] [check-ins using] [diff]
2014-01-30
22:02
OFUDPSocket: Add async resolve / receive file: [2d27dcba2c] check-in: [ff3c507941] user: js, branch: trunk, size: 11085 [annotate] [blame] [check-ins using] [diff]
12:26
Rename of_tcpsocket* -> of_tcp_socket_* file: [0b9ade0423] check-in: [7908c035e4] user: js, branch: trunk, size: 11143 [annotate] [blame] [check-ins using] [diff]
12:26
Rename +[UDPSocket hostForAddress:port:]

It is now called +[getHost:andPort:forAddress:]. This makes it much
clearer from the selector alone what it actually does. file: [fb3f587e28] check-in: [fb590316ba] user: js, branch: trunk, size: 11138 [annotate] [blame] [check-ins using] [diff]

2014-01-27
12:34
of_address_to_string: Add a way to get the port file: [f24c3b3ba4] check-in: [44c595058b] user: js, branch: trunk, size: 11108 [annotate] [blame] [check-ins using] [diff]
2014-01-26
22:38
Move resolving functionality to resolver.m

This is in preparation for UDP sockets, so that they can share the
resolving functionality with TCP sockets. file: [4b99095be9] check-in: [49b1989b63] user: js, branch: trunk, size: 11085 [annotate] [blame] [check-ins using] [diff]

13:32
Include unistd.h in socket_helpers.h file: [3aa4076627] check-in: [32ad39007a] user: js, branch: trunk, size: 15837 [annotate] [blame] [check-ins using] [diff]
2014-01-25
19:33
Move socket includes and helpers to separate files

The new file socket.h includes all headers required for sockets on the
used platform, while the file socket_helpers.h defines the BSD API
functions to the platform specific functions if necessary.

This cleans up the classes dealing with sockets a lot and also reduces
code duplication. file: [f0c5480103] check-in: [81d47f4398] user: js, branch: trunk, size: 15858 [annotate] [blame] [check-ins using] [diff]

2014-01-16
23:38
Add +[OFString nativeOSEncoding].

This replaces OF_STRING_ENCODING_NATIVE, as a define was not flexible
enough (determining the native OS encoding at startup was not possible). file: [367b0cdd47] check-in: [e54c8c0368] user: js, branch: trunk, size: 17417 [annotate] [blame] [check-ins using] [diff]

2014-01-04
00:24
Update copyright. file: [5e012e3410] check-in: [3b97fc3cd9] user: js, branch: trunk, size: 17735 [annotate] [blame] [check-ins using] [diff]
2013-08-15
19:00
Move private methods into private headers. file: [bc0a6e3581] check-in: [1d7a1cbca0] user: js, branch: trunk, size: 17729 [annotate] [blame] [check-ins using] [diff]
2013-06-26
17:18
Revive the PSP port. file: [68c36aac7d] check-in: [530decab01] user: js, branch: trunk, size: 17699 [annotate] [blame] [check-ins using] [diff]
2013-06-22
12:12
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. file: [3305aefb9e] check-in: [3d16a30f41] user: js, branch: trunk, size: 17438 [annotate] [blame] [check-ins using] [diff]

2013-06-17
08:54
Replace a few asserts with OF_ENSURE / OBJC_ERROR. file: [b00741c4c9] check-in: [dc17a614e8] user: js, branch: trunk, size: 18130 [annotate] [blame] [check-ins using] [diff]
2013-06-13
02:03
Don't bind to port 0 on the Wii.

Instead, a decreasing variable is used now. This should be safe, as
nothing else should be binding ports while homebrew code is running. The
only problem that could arise is when code manually binds to very high
port numbers.

This also solves the problem that getsockname() is not available on the
Wii, as we know the port now anyway.

And while we're at it, this also adds struct sockaddr_storage. file: [17c2cc5542] check-in: [ca113e0145] user: js, branch: trunk, size: 18148 [annotate] [blame] [check-ins using] [diff]

01:59
Try inet_addr() before gethostbyname().

gethostbyname() is not required to accept an IP address and does not do
so on the Wii. file: [73d0c39dd0] check-in: [8faa16f249] user: js, branch: trunk, size: 17988 [annotate] [blame] [check-ins using] [diff]

2013-06-11
23:33
Initial sockets support for the Wii.

Not functional yet due to bugs in the SDK.
Bugs found so far:

* Binding to port 0 fails instead of choosing a free port.
* gethostbyname() does not work for IPs.
* getsockname() is missing.
* struct sockaddr_storage is missing.

I have not decided yet whether I fix those bugs in the SDK (I already
implemented getsockname() and added struct sockaddr_stroage and it seems
to work) or if I work around them in ObjFW. This will mainly depend on
how cooperative the developers of the Wii SDK are. file: [4800955ec9] check-in: [ffb91daffe] user: js, branch: trunk, size: 17114 [annotate] [blame] [check-ins using] [diff]

2013-05-22
18:45
Import OFThread.h unconditionally.

It's safe to always import OFThread.h now as OFThread even offers
limited functionality when threads are unavailable. file: [4199e0da2a] check-in: [d7365be372] user: js, branch: trunk, size: 16445 [annotate] [blame] [check-ins using] [diff]

18:42
Check for more socket-related headers / functions. file: [f93320b4b5] check-in: [896084c340] user: js, branch: trunk, size: 16476 [annotate] [blame] [check-ins using] [diff]
2013-04-27
23:14
OFTCPSocket: Define _WIN32_WINNT to 0x0501. file: [2065e219ce] check-in: [9d3f4208d6] user: js, branch: trunk, size: 16360 [annotate] [blame] [check-ins using] [diff]
2013-03-31
10:04
Improve OFTLSSocket protocol. file: [131468c3e0] check-in: [b7b67d7119] user: js, branch: trunk, size: 16332 [annotate] [blame] [check-ins using] [diff]
2013-03-04
17:20
Replace BOOL with bool.

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

2013-02-12
18:22
Prefix all ivars with an underscore. file: [742dd6ce2f] check-in: [e40729d406] user: js, branch: trunk, size: 16319 [annotate] [blame] [check-ins using] [diff]
2013-01-28
20:06
Remove AI_ADDRCONFIG, as it's buggy in glibc. file: [e3f567d132] check-in: [cdfe025f85] user: js, branch: trunk, size: 16158 [annotate] [blame] [check-ins using] [diff]
2013-01-19
01:41
Two small fixes.

OFStreamObserver_select: Fix missing include.
OFTCPSocket: Fix missing rename. file: [e79d51f216] check-in: [a2a48d4d29] user: js, branch: trunk, size: 16247 [annotate] [blame] [check-ins using] [diff]

2013-01-13
00:54
OFTCPSocket: Define AI_* to 0 if missing. file: [7757bd9475] check-in: [5c6bc745b5] user: js, branch: trunk, size: 16248 [annotate] [blame] [check-ins using] [diff]
2013-01-12
20:53
Clean up the feature #ifdef mess. file: [5685b5bf99] check-in: [b8ce2359f3] user: js, branch: trunk, size: 16030 [annotate] [blame] [check-ins using] [diff]
20:21
Fix --disable-threads. file: [e458e43209] check-in: [85b8efadbc] user: js, branch: trunk, size: 15950 [annotate] [blame] [check-ins using] [diff]
17:29
Rename *UsingEncoding: to *WithEncoding:.

This reverts 5362941.

Even though *UsingEncoding: is what Foundation uses, *WithEncoding: is
more natural and is more consistent with the rest. Also, this means this
restores it to the API of 0.7. file: [4724c73932] check-in: [9ddd33a258] user: js, branch: trunk, size: 15860 [annotate] [blame] [check-ins using] [diff]

2013-01-09
22:24
Update copyright. file: [26659060bf] check-in: [813c00ccf0] user: js, branch: trunk, size: 15864 [annotate] [blame] [check-ins using] [diff]
22:13
OFTCPSocket: Use getnameinfo with NI_NUMERICSERV. file: [b8a3a39e39] check-in: [9a9a02555d] user: js, branch: trunk, size: 15858 [annotate] [blame] [check-ins using] [diff]
22:10
OFTCPSocket: Set ai_flags.

For connect(), this sets ai_flags to:
AI_NUMERICSERV | AI_ADDRCONFIG

For bind(), this sets ai_flags to:
AI_NUMERICSERV | AI_ADDRCONFIG | AI_PASSIVE file: [b609afae72] check-in: [541b33d978] user: js, branch: trunk, size: 15841 [annotate] [blame] [check-ins using] [diff]

2013-01-07
13:36
Fix compilation on Win32. file: [fdb5be2048] check-in: [2965720dbc] user: js, branch: trunk, size: 15728 [annotate] [blame] [check-ins using] [diff]
2012-12-27
11:16
OFTCPSocket: Set SO_REUSEADDR on -[bind]. file: [22a93cdc38] check-in: [5243a86320] user: js, branch: trunk, size: 15692 [annotate] [blame] [check-ins using] [diff]
2012-12-15
23:31
OFString: Improved API for getting C strings. file: [a9ec628526] check-in: [e2f4c1283c] user: js, branch: trunk, size: 15344 [annotate] [blame] [check-ins using] [diff]
2012-12-13
20:53
Add of_tls_socket_class for 3rd-party TLS libs.

This removes of_http_client_tls_socket_class in favor of having one
symbol for all places where TLS would be desired. file: [d55696187d] check-in: [1abe5a111f] user: js, branch: trunk, size: 15340 [annotate] [blame] [check-ins using] [diff]

2012-12-11
12:14
OFTCPSocket: Fix a bug in -[accept]. file: [a2d531d058] check-in: [37e165aaf6] user: js, branch: 0.7, size: 15552 [annotate] [blame] [check-ins using] [diff]
12:12
OFTCPSocket: Fix a bug in -[accept]. file: [41e77c8735] check-in: [baa6951ec0] user: js, branch: trunk, size: 15306 [annotate] [blame] [check-ins using] [diff]
12:12
OFTCPSocket: Use a backlog of SOMAXCONN. file: [637568184e] check-in: [d39260c358] user: js, branch: trunk, size: 15401 [annotate] [blame] [check-ins using] [diff]
2012-10-30
18:50
Async I/O: Pass a context. file: [bb02552c53] check-in: [13ea2fc8b1] user: js, branch: trunk, size: 15886 [annotate] [blame] [check-ins using] [diff]
2012-10-28
12:37
Fix wrong imports. file: [c453a27f56] check-in: [d477b270f3] user: js, branch: trunk, size: 15647 [annotate] [blame] [check-ins using] [diff]
2012-10-22
20:12
Allocate space for sockaddr_storage, not sockaddr. file: [da12c47fdd] check-in: [c9f2fe558e] user: js, branch: trunk, size: 15648 [annotate] [blame] [check-ins using] [diff]
2012-10-17
20:16
Pass exceptions on async I/O.

This makes it possible to handle exceptions that occurred during async
I/O in the specified handler. file: [29f21ecbe7] check-in: [6343e04dcd] user: js, branch: trunk, size: 15674 [annotate] [blame] [check-ins using] [diff]

2012-10-13
21:06
of_bswap* -> OF_BSWAP*.

This makes it clear that multiple evaluation of parameters is possible. file: [0f410ad5c9] check-in: [1cb8fee5c3] user: js, branch: trunk, size: 15495 [annotate] [blame] [check-ins using] [diff]

2012-09-19
23:57
Make async connecting possible without blocks. file: [0e43bc61fd] check-in: [4f149012e9] user: js, branch: trunk, size: 15495 [annotate] [blame] [check-ins using] [diff]
23:02
Make async I/O possible without blocks.

Async connecting is still missing. file: [b7640aefbf] check-in: [4d9a641d87] user: js, branch: trunk, size: 13089 [annotate] [blame] [check-ins using] [diff]

2012-09-17
06:58
Pass the timer as argument in timer blocks. file: [2a9dc1d700] check-in: [be7d619b6e] user: js, branch: trunk, size: 12915 [annotate] [blame] [check-ins using] [diff]
2012-09-16
15:27
Prefix all private methods with OF_. file: [5b45773966] check-in: [c137da5e5b] user: js, branch: trunk, size: 12897 [annotate] [blame] [check-ins using] [diff]
11:45
Fix missing imports. file: [4e402532d5] check-in: [5a19a8a2a5] user: js, branch: trunk, size: 12896 [annotate] [blame] [check-ins using] [diff]
10:19
Add -[OFTCPSocket asyncAcceptWithBlock:]. file: [23c0b57231] check-in: [5d8349a8f6] user: js, branch: trunk, size: 12869 [annotate] [blame] [check-ins using] [diff]
2012-09-15
12:22
OFTCPSocket: Implement async connecting. file: [d1ec2a4710] check-in: [3b68656e8d] user: js, branch: trunk, size: 12697 [annotate] [blame] [check-ins using] [diff]
2012-07-12
01:28
Don't access isa directly. file: [f2b49c30d2] check-in: [8892ae9fcc] user: js, branch: trunk, size: 11899 [annotate] [blame] [check-ins using] [diff]
2012-03-21
17:51
Always pass a char for copy to objc_setProperty(). file: [43ccdbbf0d] check-in: [3a983475bc] user: js, branch: trunk, size: 11662 [annotate] [blame] [check-ins using] [diff]
2012-01-05
00:56
Update copyright. file: [34d16710ab] check-in: [ce70e17b38] user: js, branch: trunk, size: 11664 [annotate] [blame] [check-ins using] [diff]
2011-12-08
02:25
Make it possible to set a default SOCKS5 proxy for all OFTCPSockets.

For example, this is useful if you want to use
+[OFString stringWithContentsOfURL:] with a proxy or if you just want
to use anything that uses an OFTCPSocket with a proxy (even 3rd party
libraries). file: [59c9f9facb] check-in: [a3b3333128] user: js, branch: trunk, size: 11658 [annotate] [blame] [check-ins using] [diff]

2011-10-04
18:17
Move SOCKS5 support to OFTCPSocket. file: [367a20fe47] check-in: [48708f2435] user: js, branch: trunk, size: 11068 [annotate] [blame] [check-ins using] [diff]
2011-09-22
23:25
Exceptions are now autoreleased.

This is safe as an "exception loop" can't happen, since if allocating
an exception fails, it throws an OFAllocFailedException which is
preallocated and can always be thrown.

So, the worst case would be that an autorelease of an exception fails,
triggering an OFOutOfMemoryException for which there is no memory,
resulting in an OFAllocFailedException to be thrown. file: [6c64c65615] check-in: [e1e7ffa903] user: js, branch: trunk, size: 10195 [annotate] [blame] [check-ins using] [diff]

2011-09-19
13:07
Rename -[bindToPort:onHost:] to -[bindToHost:port:].
This way it's consistent with -[connectToHost:port].
file: [37dbaea5b8] check-in: [b8517c63ca] user: js, branch: trunk, size: 10109 [annotate] [blame] [check-ins using] [diff]
12:34
BOOL naming conventions. file: [ad3ac403d1] check-in: [d43eb177bc] user: js, branch: trunk, size: 10109 [annotate] [blame] [check-ins using] [diff]
2011-09-12
19:57
Rename -[cString] to -[UTF8String]. file: [0cc2514733] check-in: [e6fd39d11e] user: js, branch: trunk, size: 10117 [annotate] [blame] [check-ins using] [diff]
2011-07-17
02:08
Use sockaddr_storage instead of sockaddr in OFTCPSocket.
This ensures it's big enough and correctly aligned.
file: [1ca1782d51] check-in: [1688bf89e0] user: js, branch: 0.5, size: 9802 [annotate] [blame] [check-ins using] [diff]
02:03
Use sockaddr_storage instead of sockaddr in OFTCPSocket.
This ensures it's big enough and correctly aligned.
file: [2ff5fb89f7] check-in: [7a5b65ee4d] user: js, branch: trunk, size: 9855 [annotate] [blame] [check-ins using] [diff]
01:55
Define __NO_EXT_QNX in files using unistd.h or fcntl.h.

Without this, the headers try to declare functions that use __block as
an argument name and thus fail to compile when using -fblocks. file: [5139608894] check-in: [59e52af26d] user: js, branch: 0.5, size: 9753 [annotate] [blame] [check-ins using] [diff]

01:55
Define __NO_EXT_QNX in files using unistd.h or fcntl.h.

Without this, the headers try to declare functions that use __block as
an argument name and thus fail to compile when using -fblocks. file: [d0efc140d4] check-in: [da2701ad14] user: js, branch: trunk, size: 9806 [annotate] [blame] [check-ins using] [diff]

2011-06-05
18:53
Rename -[connetToHost:onPort:] to -[connectToHost:port:]. file: [d8e9d867f6] check-in: [1940d72ec7] user: js, branch: trunk, size: 9783 [annotate] [blame] [check-ins using] [diff]
2011-04-22
22:46
More style improvements. file: [9d4c499443] check-in: [c9c78d86d3] user: js, branch: trunk, size: 9790 [annotate] [blame] [check-ins using] [diff]
21:08
More style improvements. file: [1ec7691203] check-in: [fb95acc8ab] user: js, branch: trunk, size: 9730 [annotate] [blame] [check-ins using] [diff]
2011-04-08
07:05
Add -[isListening] to OFTCPSocket. file: [ea3cfe401f] check-in: [054a38e82d] user: js, branch: trunk, size: 9730 [annotate] [blame] [check-ins using] [diff]
2011-04-06
18:30
Move ivar listening to OFTCPSocket.
Also, we don't need these ivars to be @public anymore.
file: [1a33b199d0] check-in: [d776cbf5e2] user: js, branch: trunk, size: 9678 [annotate] [blame] [check-ins using] [diff]
2011-04-03
19:16
We always need those includes now. file: [5e6306097e] check-in: [9db7215004] user: js, branch: trunk, size: 9661 [annotate] [blame] [check-ins using] [diff]
2011-03-29
23:32
Fix missing include in exceptions/common.h. file: [f6b617258d] check-in: [48c67b1444] user: js, branch: trunk, size: 9708 [annotate] [blame] [check-ins using] [diff]
23:27
Work around compiler bugs. file: [2a0787d82a] check-in: [6022cfa458] user: js, branch: trunk, size: 9684 [annotate] [blame] [check-ins using] [diff]
23:19
Make it possible to let -[bindToPort:onHost:] choose a port. file: [c47e3134d6] check-in: [d983af3d93] user: js, branch: trunk, size: 9703 [annotate] [blame] [check-ins using] [diff]
2011-03-24
21:17
Pass the stream for stream exceptions. file: [f3c6437253] check-in: [7ced2e7b6a] user: js, branch: trunk, size: 8857 [annotate] [blame] [check-ins using] [diff]
20:36
Pass the socket for socket exceptions. file: [c2279eed1e] check-in: [a8df2cff5f] user: js, branch: trunk, size: 8836 [annotate] [blame] [check-ins using] [diff]
19:42
Get rid of OFExceptions.h. file: [2b016c1ada] check-in: [cda44767f4] user: js, branch: trunk, size: 8616 [annotate] [blame] [check-ins using] [diff]
2011-02-10
17:19
Use ports instead of services in OFTCPSocket. file: [0ec27b8819] check-in: [a3e03981ea] user: js, branch: trunk, size: 8291 [annotate] [blame] [check-ins using] [diff]
2011-02-09
18:55
Initial PSP port.

Does compile with --disable-threads --disable-shared, but does not link
yet. file: [1565c3535f] check-in: [d230ac577d] user: js, branch: trunk, size: 9686 [annotate] [blame] [check-ins using] [diff]

18:27
Add two missing includes. file: [b9305562e5] check-in: [90893f3cbe] user: js, branch: trunk, size: 9554 [annotate] [blame] [check-ins using] [diff]
2011-02-01
21:07
Fix lookup of service when getaddrinfo is unavailable. file: [b23751c527] check-in: [11a9f98b7a] user: js, branch: trunk, size: 9534 [annotate] [blame] [check-ins using] [diff]
20:53
Rename OF_BSWAP_* to of_bswap_* as they are not really macros. file: [7b6a248246] check-in: [8384ca4273] user: js, branch: trunk, size: 9030 [annotate] [blame] [check-ins using] [diff]
2011-01-22
23:53
Autodetect family in -[bindService:onNode:]. file: [8771225ab8] check-in: [ca53d41c0f] user: js, branch: trunk, size: 9030 [annotate] [blame] [check-ins using] [diff]
2011-01-08
15:57
Ignore SIGPIPE when using OFStream.

SIGPIPE is quite useless and contraproductive as we throw an
OFWriteFailedException anyway. file: [94deb56f45] check-in: [1404d33024] user: js, branch: trunk, size: 9273 [annotate] [blame] [check-ins using] [diff]

2011-01-01
20:19
Change license. file: [5bed299304] check-in: [da6b3d26cb] user: js, branch: trunk, size: 9273 [annotate] [blame] [check-ins using] [diff]
2010-12-05
12:32
Make subclassing OFTCPSocket easier. file: [df5ecfa5f3] check-in: [efa6d95aad] user: js, branch: trunk, size: 9017 [annotate] [blame] [check-ins using] [diff]
2010-10-25
23:03
Clean up a lot of code (mostly init methods) and fix a missing rethrow. file: [fc8eae7a7b] check-in: [8a7ca573c4] user: js, branch: trunk, size: 9005 [annotate] [blame] [check-ins using] [diff]
2010-07-07
21:06
Move most of the code for -[close] to OFStreamSocket. file: [9e5de8c85a] check-in: [d81629fead] user: js, branch: trunk, size: 9025 [annotate] [blame] [check-ins using] [diff]
2010-06-13
17:44
Fallback to select() in OFSocketObserver if poll() is unavailable. file: [57db58ad3d] check-in: [6a73e7ac51] user: js, branch: trunk, size: 9159 [annotate] [blame] [check-ins using] [diff]
12:15
Improve OFSocketObserver API. file: [c2b198d896] check-in: [4ca583737c] user: js, branch: trunk, size: 9098 [annotate] [blame] [check-ins using] [diff]
2010-04-17
22:27
New ivar naming convention.

ivars are now named like this: thisIsAnIVar. If an accessor exists for
the ivar, the ivar is named like the accessor. This is required for
@property to work. file: [dd20905993] check-in: [37db8f0fb3] user: js, branch: trunk, size: 9032 [annotate] [blame] [check-ins using] [diff]

15:46
Don't return self where not necessary, return void or something useful. file: [fe6d461e93] check-in: [062a052b50] user: js, branch: trunk, size: 9003 [annotate] [blame] [check-ins using] [diff]
2010-04-11
17:55
Add -[remoteAddress] to OFTCPSocket. file: [0f7c2e2900] check-in: [04dc76c8c3] user: js, branch: trunk, size: 9119 [annotate] [blame] [check-ins using] [diff]
16:37
Fix manually closing a TCP socket and improve automatic closing. file: [605f8714f2] check-in: [cecf1d4bf7] user: js, branch: trunk, size: 8080 [annotate] [blame] [check-ins using] [diff]
2010-04-02
14:18
Close socket before throwing an exception when bind fails. file: [f1cb5070ac] check-in: [ebf57f4891] user: js, branch: trunk, size: 8064 [annotate] [blame] [check-ins using] [diff]
2010-03-05
11:52
Merge a few changesets from the default branch into the 0.2 branch.

Changesets:
* b95fcaa6d694
* 804c68d222b4
* da8cd738da3d
* 1109d5ce3419
* d03f5c1ca95d
* 2a7017722165
* 4fccdc79eeb7
* d228149fbc04
* 8782d412a4a6 file: [709f9ba347] check-in: [b91a8283fe] user: js, branch: 0.2, size: 7813 [annotate] [blame] [check-ins using] [diff]

2010-02-19
16:36
Update copyright. file: [a1e625fc7a] check-in: [42886185fd] user: js, branch: trunk, size: 7811 [annotate] [blame] [check-ins using] [diff]
2010-02-02
18:58
Rename OFMacros.h to macros.h, as it's not a class. file: [b3b2edf858] check-in: [832188d759] user: js, branch: trunk, size: 7811 [annotate] [blame] [check-ins using] [diff]
2010-01-30
14:14
Fix missing includes and typos. file: [0a606f2f49] check-in: [35f59c61c6] user: js, branch: trunk, size: 7813 [annotate] [blame] [check-ins using] [diff]
13:33
Move some stuff from OFSocket to OFTCPSocket. file: [5ad68e30bb] check-in: [fe6787bc79] user: js, branch: trunk, size: 7785 [annotate] [blame] [check-ins using] [diff]
2010-01-22
18:40
Clean up OFStream and OFSocket interface.
This allows better compile-time checks.
file: [e5e0123628] check-in: [273d5b90f8] user: js, branch: trunk, size: 7696 [annotate] [blame] [check-ins using] [diff]
2010-01-16
15:05
Reduce dependencies between headers. file: [b8414e989f] check-in: [1433aef0d0] user: js, branch: trunk, size: 7693 [annotate] [blame] [check-ins using] [diff]
2009-12-20
23:15
Clean up includes in OFTCPSocket. file: [339b99e114] check-in: [1d68cfa595] user: js, branch: trunk, size: 7672 [annotate] [blame] [check-ins using] [diff]
2009-12-17
10:53
Further improve OFTCPSocket.

Only use getaddrinfo() if it's thread-safe - it does not make much
sense to allow getaddrinfo() if it's not thread-safe, as then its
biggest advantage to gethostbyname() is gone.

Also, copy the result from gethostbyname() so we can release the lock
before connecting - this should greatly improve the speed when trying
to connect to multiple hosts without a thread-safe getaddrinfo(). file: [d088ca13d0] check-in: [1f7898f109] user: js, branch: trunk, size: 7681 [annotate] [blame] [check-ins using] [diff]

2009-12-11
12:52
Make it possible to build ObjFW without support for threads. file: [a4d491ccd6] check-in: [6caac0826e] user: js, branch: trunk, size: 7906 [annotate] [blame] [check-ins using] [diff]
2009-12-09
19:09
Check whether getaddrinfo is thread-safe and use locks if not. file: [f13b976cd7] check-in: [c8398d985d] user: js, branch: trunk, size: 7199 [annotate] [blame] [check-ins using] [diff]
18:43
Indent defines and imports where it is useful. file: [4bb7848f0c] check-in: [66f6ca045c] user: js, branch: trunk, size: 6768 [annotate] [blame] [check-ins using] [diff]
2009-12-07
20:12
Fix typo. file: [f19d63597b] check-in: [ed366ad8f8] user: js, branch: trunk, size: 6763 [annotate] [blame] [check-ins using] [diff]
2009-11-29
16:23
Allow NULL as parameter for -[freeMemory:]. file: [00e6aa5037] check-in: [d57228d9d6] user: js, branch: trunk, size: 6761 [annotate] [blame] [check-ins using] [diff]
2009-11-09
22:45
Rename libobjfw to ObjFW. file: [37839d79ab] check-in: [a3cc34b139] user: js, branch: trunk, size: 6768 [annotate] [blame] [check-ins using] [diff]
2009-08-28
00:33
Add OF_BSWAP{16,32,64}_IF_{BE,LE} for conditional byte swap. file: [5c57ec1e56] check-in: [30f6c422ad] user: js, branch: trunk, size: 6771 [annotate] [blame] [check-ins using] [diff]
2009-07-19
14:05
Rename andFoo: to foo: in all methods. file: [7e7c4b019c] check-in: [4eae61a78f] user: js, branch: trunk, size: 6749 [annotate] [blame] [check-ins using] [diff]
2009-06-09
20:44
Make OFSocket a class cluster. file: [44f2d9c515] check-in: [f847f82b75] user: js, branch: trunk, size: 6813 [annotate] [blame] [check-ins using] [diff]
2009-06-01
02:08
Add OFMutex and use it in OFTCPSocket instead of @synchronized. file: [48bd51099f] check-in: [cca028cedf] user: js, branch: trunk, size: 6816 [annotate] [blame] [check-ins using] [diff]
2009-05-29
19:21
A few renames.

OFExceptions:
* OFNoMemException to OFOutOfMemoryException.
* OFMemNotPartOfObjException to OFMemoryNotPartOfObjectException.

OFObject:
* -[addItemToMemoryPool:] to -[addMemoryToPool:].
* -[allocWithSize:] to -[allocMemoryWithSize:].
* -[allocNItems:withSize] to -[allocMemoryForNItems:withSize:].
* -[resizeMem:toSize] to -[resizeMemory:toSize:].
* -[resizeMem:toNItems:withSize:] to
-[resizeMemoryToNItems:withSize:].
* -[freeMem] to -[freeMemory:].

OFString:
* -[urlencode] to -[urlEncodedString].
* -[urldecode] to -[urlDecodedString]. file: [3f2fb0c9c6] check-in: [033054ad75] user: js, branch: trunk, size: 6709 [annotate] [blame] [check-ins using] [diff]

09:28
Always use [self alloc]. file: [9070a0d7b2] check-in: [282aadb9df] user: js, branch: trunk, size: 6700 [annotate] [blame] [check-ins using] [diff]
2009-05-24
21:09
Fall back to gethostbyname + locking if getaddrinfo is missing. file: [804f167c59] check-in: [488da685e4] user: js, branch: trunk, size: 6853 [annotate] [blame] [check-ins using] [diff]
18:04
Always use #include "config.h" instead of #import "config.h". file: [aef6c3578a] check-in: [94ea6848a8] user: js, branch: trunk, size: 4074 [annotate] [blame] [check-ins using] [diff]
2009-05-19
17:13
Rename + tcpSocket to + socket in OFTCPSocket. file: [0f5f259ee4] check-in: [0b8c5616cb] user: js, branch: trunk, size: 4073 [annotate] [blame] [check-ins using] [diff]
2009-05-15
22:59
As we memset our ivars to 0, get rid of some useless ivar inits. file: [da3f38fa70] check-in: [4c6d6c56ac] user: js, branch: trunk, size: 4079 [annotate] [blame] [check-ins using] [diff]
20:01
Use OFString as much as possible. file: [9556eafe3a] check-in: [67066be692] user: js, branch: trunk, size: 4095 [annotate] [blame] [check-ins using] [diff]
2009-05-13
20:31
Rename - free to - (void)dealloc. file: [713f66fbf8] check-in: [9e6dd00ef5] user: js, branch: trunk, size: 4262 [annotate] [blame] [check-ins using] [diff]
2009-05-07
16:08
Add OFSocket base class. file: [6d74cb7c82] check-in: [0110aec5c0] user: js, branch: trunk, size: 4251 [annotate] [blame] [check-ins using] [diff]
2009-05-03
21:33
Get rid of + new.
Additionally, make - accept return an autoreleased OFTCPSocket.
file: [cec4aee89e] check-in: [5ca127891c] user: js, branch: trunk, size: 5922 [annotate] [blame] [check-ins using] [diff]
17:19
Make OFStream a class instead of a protocol and move readLine there. file: [645f0b0d2c] check-in: [7bf4b144ad] user: js, branch: trunk, size: 5916 [annotate] [blame] [check-ins using] [diff]
15:45
readLine: for OFTCPSocket. file: [0f96f0fac9] check-in: [dabcc373f7] user: js, branch: trunk, size: 8235 [annotate] [blame] [check-ins using] [diff]
2009-05-02
15:33
Nicer way to create and initialize the socket in - accept. file: [34c32e126e] check-in: [bdfd9d0464] user: js, branch: trunk, size: 5906 [annotate] [blame] [check-ins using] [diff]
2009-04-28
20:31
Fix two missing spaces. file: [5c6eb1441c] check-in: [14f74f3c2f] user: js, branch: trunk, size: 6113 [annotate] [blame] [check-ins using] [diff]
2009-04-26
12:44
A few renames in OFObject.

getMemWithSize: -> allocWithSize:
getMemForNItems:ofSize: -> allocNItems:withSize:
resizeMem:toNItems:ofSize: -> resizeMem:toNItems:withSize: file: [59fbba1365] check-in: [e959fed010] user: js, branch: trunk, size: 6112 [annotate] [blame] [check-ins using] [diff]

2009-04-21
17:16
The if ((self = [super init])) construct isn't needed anymore. file: [a9b0b8f50a] check-in: [d87df02e8b] user: js, branch: trunk, size: 6113 [annotate] [blame] [check-ins using] [diff]
2009-04-19
20:34
Use isa instead of [self class].

Since we don't use Object anymore and define isa in OFObject, we can
rely on it. file: [9dddc5248f] check-in: [139591afe1] user: js, branch: trunk, size: 6126 [annotate] [blame] [check-ins using] [diff]

2009-04-09
13:55
Use char* instead of uint8_t* for OFStreams and OFHashes.
This way, less casts are needed when using C libraries.
file: [b0a40b2d84] check-in: [722b6213c0] user: js, branch: trunk, size: 6351 [annotate] [blame] [check-ins using] [diff]
2009-04-08
13:13
Throw an OFNotConnected exception when there was a clean disconnect. file: [86db944fc0] check-in: [69e41c48ff] user: js, branch: trunk, size: 6387 [annotate] [blame] [check-ins using] [diff]
2009-04-07
15:44
Returning newly allocated buffers on reading is a bad idea.
The programmer might forget that some of the data is arbitrary because
there was less data than he requested which might lead to serious
problems.
file: [3dac29634e] check-in: [09e6b3fc7b] user: js, branch: trunk, size: 6300 [annotate] [blame] [check-ins using] [diff]
2009-02-27
12:31
(void)initialize -> initialize. file: [efdb457766] check-in: [3b62c10b6f] user: js, branch: trunk, size: 6634 [annotate] [blame] [check-ins using] [diff]
2009-02-14
17:26
Always use #include for libc headers due to glibc being broken.
Do the same for win32 headers, just in case. They should work with
#import, but you never know ;).
file: [a02bc73f70] check-in: [029511474c] user: js, branch: trunk, size: 6625 [annotate] [blame] [check-ins using] [diff]
2009-01-24
20:28
[self alloc] isn't a good idea with the new API.
The reason is that a derived class, for example derived from OFArray,
would not return an OFArray when + arrayWithItemSize is called.
file: [bf7391c607] check-in: [7feac9e596] user: js, branch: trunk, size: 6620 [annotate] [blame] [check-ins using] [diff]
15:24
Adjust API to introduction of OFAutoreleasePool. file: [c9f6264550] check-in: [1496808b81] user: js, branch: trunk, size: 6613 [annotate] [blame] [check-ins using] [diff]
2009-01-05
00:59
Update copyright. file: [7d0fea78bc] check-in: [f1b749d113] user: js, branch: trunk, size: 6553 [annotate] [blame] [check-ins using] [diff]
2009-01-04
01:40
Clean up exceptions. file: [f0f26c68bf] check-in: [bb1fe89478] user: js, branch: trunk, size: 6546 [annotate] [blame] [check-ins using] [diff]
2009-01-02
17:20
Some import fixes, some static lib and win32 enhancements. file: [180713756a] check-in: [ba01b9c18a] user: js, branch: trunk, size: 6387 [annotate] [blame] [check-ins using] [diff]
2008-12-23
16:51
Add Win32 support to OFTCPSocket. Even IPv6 works! file: [546d4d81ab] check-in: [839112196f] user: js, branch: trunk, size: 6384 [annotate] [blame] [check-ins using] [diff]
03:59
Remove spaces and tabs at end of line. file: [03aa5d92f4] check-in: [7d7b89d775] user: js, branch: trunk, size: 5776 [annotate] [blame] [check-ins using] [diff]
2008-12-19
22:04
Add - setBlocking and - enableKeepAlives for OFTCPSocket. file: [7656e7376a] check-in: [2e6119eb42] user: js, branch: trunk, size: 5782 [annotate] [blame] [check-ins using] [diff]
2008-12-14
01:45
Two new exceptions; fix 3 FIXMEs in OFTCPSocket. file: [014fa32cf3] check-in: [af9e349898] user: js, branch: trunk, size: 5242 [annotate] [blame] [check-ins using] [diff]
2008-12-13
23:11
Fix two more FIXMEs in OFTCPSocket; new exception. file: [4835d59f11] check-in: [ec3c199d1a] user: js, branch: trunk, size: 5151 [annotate] [blame] [check-ins using] [diff]
19:25
Initial attempt to port to win32. file: [eaaeb57c56] check-in: [142572f90b] user: js, branch: trunk, size: 4990 [annotate] [blame] [check-ins using] [diff]
15:08
One new exception; fix one FIXME in OFTCPSocket. file: [c69f2ecab6] check-in: [b5ea1b43c4] user: js, branch: trunk, size: 4956 [annotate] [blame] [check-ins using] [diff]
14:52
Fix 2 FIXMEs in OFTCPSocket. file: [0fd4ca4245] check-in: [7d05cee843] user: js, branch: trunk, size: 4900 [annotate] [blame] [check-ins using] [diff]
2008-12-11
14:06
Fix two more FIXMEs in OFTCPSocket; new exception. file: [275bdc16df] check-in: [85f7e202b1] user: js, branch: trunk, size: 4756 [annotate] [blame] [check-ins using] [diff]
13:56
Fix two FIXMEs in OFTCPSocket. file: [cbc64c1780] check-in: [6d765d0301] user: js, branch: trunk, size: 4746 [annotate] [blame] [check-ins using] [diff]
2008-12-10
18:00
Enhance exceptions; fix some FIXMEs in OFTCPSocket. file: [8a2ef1e3cd] check-in: [a01c94d9dd] user: js, branch: trunk, size: 4684 [annotate] [blame] [check-ins using] [diff]
17:54
When closing an OFTCPSocket, set it's internal socket to -1. file: [594dc2652b] check-in: [e9f870cfc0] user: js, branch: trunk, size: 4612 [annotate] [blame] [check-ins using] [diff]
2008-12-08
16:51
Don't allow connecting/binding on an already opened socket.
Also, free mem on accepted sockets when close is called.
file: [5f52ffb737] check-in: [c8990ecd12] user: js, branch: trunk, size: 4599 [annotate] [blame] [check-ins using] [diff]
2008-12-07
21:58
Server support for OFTCPSocket. file: [d316d7c59d] check-in: [0d5b08e43e] user: js, branch: trunk, size: 4403 [annotate] [blame] [check-ins using] [diff]
10:35
Add - close to OFStream. file: [ed0fb6187c] check-in: [657fae20a4] user: js, branch: trunk, size: 2212 [annotate] [blame] [check-ins using] [diff]
10:24
Added: OFSocket -> OFTCPSocket. file: [1175a4c331] check-in: [d1a5065e69] user: js, branch: trunk, size: 2119 [annotate] [blame] [check-ins using]