"flags" parameter - this can't be used with retransmitting anyway, and since
the flags are actually fixed per state, the previous solution didn't really
make much sense.
* Made _SendQueued() work a lot more like BSD's tcp_output().
* We can now send even large buffers that need more than one segment at once.
* Added a simple recursive locking mechanism for now - this should be done
differently, though, as we want to have good performance in full duplex mode.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19384 a95241bf-73f2-0310-859d-f6bbb57e9c96
that can be set via setsockopt().
* For now, the struct tcphdr and its definitions are also part of the header.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19383 a95241bf-73f2-0310-859d-f6bbb57e9c96
so that the buffer could be smaller than the one requested.
* Rewrote data_node management in the header; now, every data_node knows where it's
placed, and can be actually discarded as needed.
* Rewrote free space management in the header: there is now a free chunk list, so
that all memory can be reused (it's currently only used for data_nodes anyway).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19382 a95241bf-73f2-0310-859d-f6bbb57e9c96
that the terminal's color is changed when the app is quit (or interrupted).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19381 a95241bf-73f2-0310-859d-f6bbb57e9c96
* the TCPConnection::Receive() method is now more or less working as it should;
of course, there are a number of missing things (like round-trip time estimation,
retransmit timers, receive window update, ...).
* reply_with_reset() was broken, and accidently always send the segment it should
answer with reset... (causing an endless loop during connect)
* BufferQueue::RemoveUntil() must always set the fFirstSequence member to the new
sequence, or you will never be able to send anything with that queue (as the
data in it would be no longer contiguous).
* connects, sendings (only single segments), and receiving data is working now
basically (but very incomplete); retransmits or even subsequent transmits (if
the data to be sent doesn't fit in one segment) doesn't work yet, so you better
don't lose any segments :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19378 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Changed the implementation to be more BSD like; state variables are now
the same set as usual.
* The BufferQueue didn't use the initial sequence correctly (problems with
SYN sequence).
* It now also removes data out of the current data set (ie. data that was
already read by the application).
* BufferQueue::Get() also didn't work correctly (the version used by sending
data).
* Fixed various issues around the code like incorrect handling of unexpected
data.
* TCP options don't need the end-of-options marker in case they fill up the
data already, also, the end-of-options marker doesn't need to be padded.
* Options are now only processed during SYN - other options may come
later (timestamps are candidate number one).
* Also broke what was working before: connections do no longer work!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19376 a95241bf-73f2-0310-859d-f6bbb57e9c96
if it won't be added anymore.
* Small fix for set_timer(): now set the timer->due field back to 0 when a
timer is removed - this prevented a timer from being correctly readded later
(possible crash)!
* net_buffer's append_cloned_data() now does some more checks to prevent unnecessary
work and detect wrong arguments.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19375 a95241bf-73f2-0310-859d-f6bbb57e9c96
Now printing to that old HP LaserJet 2100 over an even older LPR print server from R5 with the PCL5 driver and LPR transport...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19374 a95241bf-73f2-0310-859d-f6bbb57e9c96
* The MTU returned by the domain was too large; it should already take the
IP header into account.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19373 a95241bf-73f2-0310-859d-f6bbb57e9c96
(this was completely broken in the code before).
* Wrote a buffer queue class to replace the previous algorithm - instead of merging
all buffers together, they're kept in a list, so that the most work will be done
in the application's thread and only very little when the data is received; maybe
we should add an append_move() function to net_buffer, and use that instead,
though, to keep the number of fragments small.
* The advertised receive window is now bound to 65535, the receive window shift
is correctly computed, but not yet used.
* The new buffer queue is now also responsible for the send buffer.
* TCPConnection::ListenReceive() used the wrong address to retrieve the target route.
* Fixed TCPConnection::ReadData() to also return data when the connection is already
closed, and to wait if the connection is not yet established (in SO_NONBLOCK mode);
it still doesn't wait until data is available, though...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19372 a95241bf-73f2-0310-859d-f6bbb57e9c96
by the TCP implementation for its reorder and retransmit queues.
* The ipv4_fragment is no longer needed, as we can use the above field there
as well - this saves one extra allocation per received fragment.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19369 a95241bf-73f2-0310-859d-f6bbb57e9c96
SO_RCVLOWAT, and SO_SNDLOWAT.
Lowered the default buffer size to be within the uint16 size.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19367 a95241bf-73f2-0310-859d-f6bbb57e9c96
receiving thread. While this steals away a test case for now (dead lock), it will
allow to reorder packets in a better way.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19363 a95241bf-73f2-0310-859d-f6bbb57e9c96
* you can now instruct it to drop specific packets
* you can now also define a round trip time for the packets
* added a "send" command to send arbitrarily sized buffers over TCP.
Not surprising, the current implementation of TCP doesn't do anything with
those (other than crashing as soon as you try to send data).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19362 a95241bf-73f2-0310-859d-f6bbb57e9c96
We should probably always start BMenuField menus in sticky mode and only switch
to non-sticky mode if the mouse was moved a minimum distance.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19361 a95241bf-73f2-0310-859d-f6bbb57e9c96
no arguments (or doesn't want them). We even already had the correct handler for
B_SILENT_RELAUNCH around :-)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19359 a95241bf-73f2-0310-859d-f6bbb57e9c96
BTW, I disabled trackTime. It seems to work without it, correctly, so I guess it can be removed completely.
If not, just revert the change ("if (system_time....") after TODO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19358 a95241bf-73f2-0310-859d-f6bbb57e9c96
std::map [] creates a new entry when none can be found!
* Disabled libmesa.a being build with DEBUG turn on, as it's broken ATM.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19357 a95241bf-73f2-0310-859d-f6bbb57e9c96
moved acpi_ns_dump driver into acpi bus manager (also removed from the hd image)
the exported fs path is now acpi/namespace
added some methods to ACPI bus and device new interfaces
ACPI nodes like _TZ_ or _SB_ aren't exposed as devices anymore
added a type to the acpi_device_info structure
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19356 a95241bf-73f2-0310-859d-f6bbb57e9c96
if not really necessary; ie. you can now add timers without an extra performance
hit if it's not really required.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19354 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Transformer menu is correctly enabled/disabled when a shape is selected
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19351 a95241bf-73f2-0310-859d-f6bbb57e9c96
There's still some weird output being printed, but building the mime
database now works under dash too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19344 a95241bf-73f2-0310-859d-f6bbb57e9c96
by Ioan Molnar - thanks!
Looks like our mbstowcs() function is broken, BTW - it needs to be disabled when
used under Haiku.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19341 a95241bf-73f2-0310-859d-f6bbb57e9c96
this option now using the "dprintf" command
* Added dump_block() function to kernelland_emu
* Added tcpdump-like output to tcp_tester for each TCP segment, lines from the
server are red, lines from the client are black.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19334 a95241bf-73f2-0310-859d-f6bbb57e9c96
is really supported.
* Added TCP option fields to the tcp_segment_header structure - they are filled
in on receive, and add_tcp_header() now gets a tcp_segment_header as well, and
will add any options automatically.
* Fixed some minor bugs (connection with passive open had wrong state after connect).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19333 a95241bf-73f2-0310-859d-f6bbb57e9c96