Commit graph

15 commits

Author SHA1 Message Date
Claudiu Mihail
646142ffcf [lwIP/TCPIP]
- 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
2011-07-25 18:45:59 +00:00
Claudiu Mihail
00bfbb576b [lwIP]
- Modify the signatures of the lwIP wrapper interfaces. This is the first step toward fixing some nasty crashes related to race conditions.
[TCPIP]
- Call the new lwIP wrapper interfaces appropriately.

svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52767
2011-07-21 20:58:54 +00:00
Claudiu Mihail
f0c093af20 [lwIP]
- 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
2011-07-17 12:32:33 +00:00
Amine Khaldi
4f2d0d54b0 * Sync to recent trunk (r52563).
svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52565
2011-07-08 01:50:19 +00:00
Claudiu Mihail
1b907a202d [TCPIP]
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
2011-07-03 13:34:36 +00:00
Claudiu Mihail
b8daab7cfb [TCPIP]
Backup commit

svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52432
2011-06-23 07:57:59 +00:00
Claudiu Mihail
14d4da2565 [lwIP]
- 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
2011-06-20 21:37:32 +00:00
Claudiu Mihail
4b7e0f11d0 [TCPIP]
[FORMATTING]
Backup copy and formatting.

svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52381
2011-06-20 12:59:27 +00:00
Cameron Gutman
f08a479325 [IP]
- Call the completion handler asynchronously to avoid a deadlock if AFD issues a synchronous request in its completion function
- Complete all pending requests before closing the socket
- Fixes send and receive on accepted sockets

svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52307
2011-06-17 12:04:20 +00:00
Cameron Gutman
ade9312f85 [LWIP]
- Implement LibTCPShutdown
[IP]
- Replace an incredibly broken implementation of TCPDisconnect which caused memory corruption with a working one using LibTCPShutdown

svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52200
2011-06-12 18:25:16 +00:00
Claudiu Mihail
c31d8d66b9 [TCPIP]
Patches by cgutman applied to the branch (see r52125, r52092, r52086, r52083, r52013)

svn path=/branches/GSoC_2011/TcpIpDriver/; revision=52138
2011-06-07 20:24:54 +00:00
Claudiu Mihail
b3c222f739 [TCPIP]
[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
2011-06-01 13:27:35 +00:00
Claudiu Mihail
f75011c71f [TCPIP]
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
2011-05-24 18:05:51 +00:00
Cameron Gutman
459e413725 [IP]
- 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
2010-09-21 06:11:24 +00:00
Cameron Gutman
25720d75f4 Create a branch for work on porting an alternate TCP library with the main focus on stability
svn path=/branches/tcp-rewrite-branch/; revision=48714
2010-09-07 03:33:36 +00:00
Renamed from reactos/lib/drivers/ip/transport/tcp/tcp.c (Browse further)