- Add queue for connections objects in order to buffer packets that have arrived but have no corresponding receive requests to be assigned to. We buffer these packets to avoid giving a timeout that could cause throughput slowdowns.
svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52864
- fix crash caused by a race condition when trying to close a socket
- move timer hack from sys_arch.c to timers.c because there it gives best performance (will have to get rid of it at some point though)
- when closing a socket only mask out the receive and accept callbacks (as they can cause of a crash when closing a socket). The rest of the callbacks are left alone because they may be used.
[TCPIP]
- merge r52698
- remove some DbgPrint calls that are now useless since the bug they were introduced to help discover has been fixed
svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52712
apply changes r52501 for lwIP branch
- Fix binding to an unspecified port on a connect so that it works reliably by asking the TCP library for a free port instead of assuming that one we have is free
- Fix binding to an unspecified port on a listen which previously would result in the address file not having information stored about the port number assigned
- Fix a nasty bug which resulted in us binding to an arbitrary port during a connect even when the client wanted a specific port
svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52517
merge r52497
- Rewrite disconnect to work asynchronously
merge r52492
- Fix several bugs related to the FD_WRITE event
- We would not set the sendable poll state if the socket had data waiting to be sent even if there was buffer space
- We did not set the poll state after performing a send
- We did not clear the sendable poll state if we ran out of buffer space
svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52516
- merge r52438
- Fail SIO_GET_EXTENSION_FUNCTION_POINTER
- Fixes the crash during ws2_32_winetest sock
[AFD]
- merge r52441
- Queue the user-mode connect IRP before calling TdiConnect to avoid a race if the TDI_CONNECT IRP is completed before we get a chance to queue the user-mode IRP to accept the connection
- Change the non-blocking TDI helper functions to always return STATUS_PENDING if the completion function will be called to avoid duplicate handling of IRPs
svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52443
- Hold on to the disconnect IRP until all pending sending IRPs are sent to the transport driver if a controlled disconnect was requested (merge of r52415)
[TCPIP]
- add some mroe debug statements to track new current sync problem
- remove some old debug statements that are useless now
[lwIP]
- add some mroe debug statements to track new current sync problem
svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52424
- get rid of unused OskitDumpBuffer
- make the code in AFD better conform to ROS coding guidelines
- fix some MSVC compilation errors (still not fully compiling with MSVC yet)
[IP]
- Add a sanity check in the TCPAcceptEventHandler
svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52398
- Abort the connection if the socket is not in LISTEN state, instead of closing it
[TCPIP]
- move redundant socket closure where so we don't try to free uninitialized variable
- in case our socket got closed or for some reason doesn't exist return a default success
svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52395
- Fix a bug on line 191, where the pending send requests for datagrams weren't canceled (the receive list was being used instead
- Also added some formatting
svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52229
Bind issue seems solved now. Server app can be restarted without failing at binding. More information is at r52166. Patch by cgutman.
svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52170
[FORMATTING]
This is just a code formatting phase. I reordered some of the code and put some debugging DbgPrint-s in order to help understand the control and data flow. Working on trying to stop the system from crashing when server socket gets closed.
svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52042
Fixed an error in the accepting code (in rostcp.c line 576). tcp_accepted was being called for the wrong pcb. Instead of the pcb belonging to the listening socket it was being called for the pcb belonging to the newly created connection socket. In order to fix this I added an extra field to the tcp_pcb structure to hold a reference to the listening socket. This is a crude method and it will be replaced by something more elegant.
Right now however there's a slight nondeterminism regarding the connection. One it's established the message either gets through to the other side or not, randomly. This could be due to a race condition of some sorts.
Also another problem is that the server side brings down the system when closing.
svn path=/branches/GSoC_2011/TcpIpDriver/; revision=51889
Completely refactor bootcd generation
- one macro (à la cmake's install) to rule them all, to make your life simpler and have build files cleaner
- Completely rehaul the bootcd tree : now you have in it some minimal reactos system
- reflect those changes in setupldr
No livecd yet!
svn path=/branches/cmake-bringup/; revision=51731
- rewrite spec2def macro because
1. cmake gracefully handles def files as source files
2. cmake gracefully handles autogenerated files as source
3. it did not take into account the fact that all shared libraries haven't the .dll extension
svn path=/branches/cmake-bringup/; revision=49358
- add macros add_cab and add_cab_target to add files to reactos.dff
- add bootcd target
- make use of these macros to create bootcd and livecd
Bootcd works and install things, but 2nd stage fails booting. We need debug symbols!!!
svn path=/branches/cmake-bringup/; revision=49347
- Rewrite most of the lower TCP layer code to work with lwIP
[LWIP]
- Write all of the implementation-specific code and headers
[TCPIP]
- Add assertions in the object reference functions
- Remove the completion queue hack
This is still isn't totally finished yet. There are still two main issues that need to be overcome: listen/accept don't work at all and the performance is horrible.
I hope that once I tune some of the options, I can get it to perform reasonably well. If any curious testers want to try this out, be my guest but realize that not
a lot of apps will work yet. Suggestions are welcome! :)
svn path=/branches/tcp-rewrite-branch/; revision=48840