Daniel Collins
b851354647
WIP: Use overlapped I/O for sending packets.
...
This was an experiment to see if using overlapped WSASendTo() would
improve performance over vanilla sendto() when sending an obscene
number of tiny packets like Atomic Bomberman does (#14 ).
Turns out this actually makes performance *worse*. The initial
WSASendTo() calls take even longer than the sendto() calls did, not
counting any time spent afterwards dispatching the completion callback
and cleaning up.
Back to the drawing board.
2023-11-21 20:27:54 +00:00
Daniel Collins
822b307dec
Record more profiling info.
2023-11-21 20:18:19 +00:00
Daniel Collins
53bfadc0e5
Add option to enable/disable profiling.
2023-11-19 21:49:52 +00:00
Daniel Collins
09b235024d
Reinstate stub function logging hooks.
2023-11-19 21:12:06 +00:00
Daniel Collins
30c7556ef1
Merge branch 'master' into profiling
2023-11-19 16:00:50 +00:00
Daniel Collins
55b9793123
Log socket() and ioctlsocket() at the correct level.
2023-11-19 15:46:31 +00:00
Daniel Collins
3eda6148c3
Update readme.
2023-10-19 09:27:34 +01:00
Daniel Collins
e4dc937e44
Merge branch 'master' into profiling
2023-10-18 23:12:12 +01:00
Daniel Collins
2f76f9177d
Merge branch 'fionread'
2023-10-18 21:36:03 +01:00
Daniel Collins
0a2bc5f629
Updated readme, changelog, manifest.
2023-10-18 21:30:11 +01:00
Daniel Collins
e9c45b8ac5
Fix select(), add some tests.
2023-10-18 20:24:05 +01:00
Daniel Collins
15b53ae001
Fix handling of FIONREAD socket ioctl.
...
When there are no packets waiting, ioctlsocket() should return success
and set *argp to zero.
When there are multiple packets waiting, ioctlsocket() should set *argp
to the accumulated size of all received payloads.
As far as I can tell, there's no way to inspect beyond the first packet
queued on a socket, so we must receive and queue all packets from the
socket to be able to know how much is available.
The recv pipeline has been reworked to queue packets in this manner,
and select() will try to emulate the normal behaviour we previously got
for free by passing the socket fd straight through in readfds.
I don't *think* WSAAsyncSelect() needs any changes since the socket
will still raise window messages as appropriate before we have any
opportunity to shunt the packet into the receive queue.
2023-10-17 17:38:13 +01:00
Daniel Collins
8c5752520e
Ignore DNS/DHCP traffic in tests.
2023-10-17 17:37:13 +01:00
Daniel Collins
5d49ee60cb
Update readme.
2023-10-17 12:17:30 +01:00
Daniel Collins
66a6510542
Merge branch 'dosbox'
2023-10-17 12:16:07 +01:00
Daniel Collins
056ec4b115
Split interface.[ch] into two files to fix ipxconfig link error.
2023-09-14 00:30:03 +01:00
Daniel Collins
59d2bbd2b7
Retry starting DOSBox during tests.
2023-09-13 00:24:50 +01:00
Daniel Collins
435df05496
Support DOSBox servers using DNS names.
2023-09-13 00:24:08 +01:00
Daniel Collins
a91e05c11b
Add more DOXBox encapsulation tests.
2023-09-10 22:33:54 +01:00
Daniel Collins
ad1023b376
Fix potential blocking of the router thread when waiting for ready.
2023-09-10 08:47:48 +01:00
Daniel Collins
4dfe195d7e
Set test suite packet captures to non-blocking mode.
2023-09-09 10:14:03 +01:00
Daniel Collins
8db4fb0872
Retransmit DOSBox registration request until a response is received.
2023-09-09 10:12:54 +01:00
Daniel Collins
36693ee9e0
Block certain calls momentarily when connecting to a DOSBox server.
...
Normally calls like bind() will immediately succeed or fail depending
on what address was requested and what addresses are assigned to the
machine, but when using a DOSBox IPX server we don't know our address
until it gets assigned to us, so block functions impacted by that to
avoid spurious errors when starting up.
If the server is down or slow then the calls will fail after a few
seconds rather than hanging indefinitely.
2023-09-05 22:43:10 +01:00
Daniel Collins
61cfcf7730
Add some initial tests for DOSBox encapsulation.
2023-09-05 22:43:10 +01:00
Daniel Collins
c72ef8a83a
Use correct packet size limit for DOSBox encapsulation.
2023-09-05 18:21:52 +01:00
Daniel Collins
dde08ae3a9
Fix local packet delivery when using DOSBox encapsulation.
2023-09-05 18:21:52 +01:00
Daniel Collins
b987f7abc1
Fix test suite build issues.
2023-09-02 15:07:28 +01:00
Daniel Collins
46fc990971
Fix registration with DOSBox IPX server.
2023-09-02 15:04:21 +01:00
Daniel Collins
a6e56f76ce
Provide WinPcap headers rather than expecting them on the host.
2023-09-02 15:02:52 +01:00
Daniel Collins
ff14b520cc
Remove DOSBox net/node number settings.
...
The local address is assigned by the server when using a DOSBox
IPX server.
2021-08-21 22:09:17 +01:00
Daniel Collins
a0234c7459
Initial implementation of DOSBox encapsulation support.
...
Incomplete and completely untested at this point, beyond "it compiles".
2021-08-21 14:42:49 +01:00
Daniel Collins
0bee989d8a
Fix memory leak.
2021-08-21 12:10:23 +01:00
Daniel Collins
5c65628fca
Add options for DOSBox encapsulation to ipxconfig.
...
Been sitting on this for a while, the code to actually support
interacting with a DOSBox IPX server isn't done yet.
2021-08-19 22:28:22 +01:00
Daniel Collins
c5ec8a138e
Merge branch 'master' into profiling
2021-01-20 21:33:21 +00:00
Daniel Collins
704bce5baf
Add profiling for some ipxwrapper.dll functions.
2021-01-20 20:51:16 +00:00
Daniel Collins
e686e8dbe2
Implement RAII-y mechanism for profiling functions.
2021-01-20 20:48:37 +00:00
Daniel Collins
9f8cbdfb55
Initialise configuration before running DirectPlay tests
2019-09-26 11:04:41 +01:00
Daniel Collins
18419bb096
Fix crash in ipxconfig
2019-08-24 20:51:33 +01:00
Daniel Collins
904b60d21b
Log function profiling statistics every 10 seconds.
2019-08-24 16:06:41 +01:00
Daniel Collins
7e6280b560
Record times taken within stub functions
...
Reporting not done yet.
Call logging broken (for now).
2019-08-23 20:25:14 +01:00
Daniel Collins
fd4d78575d
Update changelog.
2017-09-23 21:59:05 +01:00
Daniel Collins
c21d2cd993
Update supported games list in readme.
2017-09-23 17:06:58 +01:00
Daniel Collins
3bcfed65a6
Fix source manifest and test-prep target.
...
ipx-bench and ipx-echo aren't needed for the test suite.
2017-09-23 16:54:34 +01:00
Daniel Collins
fe21cbb973
Add unit tests for address cache.
2017-09-20 00:19:58 +01:00
Daniel Collins
62c72e5279
Delete tests/tap/basic.o in clean and update .gitignore
2017-09-20 00:13:33 +01:00
Daniel Collins
753280da5d
Improved bind tests.
...
Verify processes exiting abnormally don't hold onto addresses and check
the error code when bind() fails.
2017-09-20 00:13:33 +01:00
Daniel Collins
4a63b807e2
Fix typo.
2017-09-20 00:13:33 +01:00
Daniel Collins
597bf27204
Gracefully exit programs during tests.
...
Makes the test environment a bit more robust. Also makes a lot of the
tests pass under Wine(!).
2017-09-20 00:13:33 +01:00
Daniel Collins
bb7d4beeab
Merge pull request #3 from protocultor/registry
...
Added IPX to DirectPlay Services in the Registry
2017-09-19 23:20:16 +01:00
Jaime Moreira
dd43953ee5
Added IPX to DirectPlay services in the registry
2017-09-18 22:29:35 -03:00