Looks good Matt, Just my quick review, I didn't notice anything obvious, although patch is fairly large.
Cheers, Edward. 2009/11/12 Matthew Dillon <dil...@apollo.backplane.com>: > Here's a patch, it needs some serious testing: > > fetch http://apollo.backplane.com/DFlyMisc/tcp01.patch > > The patch: > > * Moves the socket pointer into the netmsg base structure, even > though some things don't use it, I know > > * Adds a lwkt_port pointer to the socket structure and initializes > it to cpu0_soport() > > * Expects network protocols to set so->so_port in their attach > functions, plus I do that for tcp and udp. > > * Performs message chasing when the protocol port changes due to > e.g. a connect() or an implied connect or (I think) also an > implied binding to INADDR_ANY. > > If a number of messages for a socket have built up on a protocol > thread and some operation in the protocol changes the socket's > protocol thread (aka implied connect), then any other messages > queued to that protocol thread, or new messages which race the > change, will automatically be forwarded to the correct protocol > thread when they are encountered. > > * Fixes implied connects for TCP. This is when you use sendmsg() > with an address to imply a connect along with data, so data can > be sent along with the SYN. > > Implied connects were completely broken and would crash the kernel. > Example: finger u...@target (instant crash). finger uses the > implied connect feature. > > * Cleans up a bunch of stuff. I was almost able to remove > the proto->pr_mport field entirely but sendmsg() still needs > to use it in the case where the passed address is non-NULL (aka > sendto() style). All other code that used to call proto->pr_mport() > now simply snarf the port out of so->so_port. > > The mport functions themselves now basically just return so_port. > I left the sendmsg code intact just in case we wanted to optimize > it later on for UDP. > > I found a few other bugs in the code but haven't fixed them yet. UDP > is not MPSAFE due to the global inpcbinfo (udbinfo) structure it uses. > > This patch does need testing. I don't know what I might have blown up. > It's fairly straight forward so I would also appreciate a code review. > > -Matt > > -- -- Edward O'Callaghan http://www.auroraux.org/ eocallaghan at auroraux dot org