Commit Graph

24202 Commits

Author SHA1 Message Date
Ingo Weinhold
e9488bd9e6 * Removed bogus select notifications in socket_close(). This is really
not necessary, since the VFS makes sure (or should at least) that all
  events are deselected when close() is called. ~0 isn't a valid event
  anyway.
* Removed delete_select_sync_pool() in socket_free(). It's not
  necessary, since the select_sync_pool is auto-destroyed when the last
  event has been deselected (which the VFS should take care of).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25265 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 23:09:54 +00:00
Axel Dörfler
5b90e47b18 The "arp" command now supports flushing all temporary entries using the new
-F option.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25264 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 22:07:06 +00:00
Axel Dörfler
801591dbde * Added an atomic_pointer_set() template function to util/atomic.h.
* Made the pointers const.
* Changed how the ARP module maintains its arp_entry::request_buffer: it
  now uses the atomic_pointer*() functions to make sure there is no race
  condition, and it's deleted only once.
* Getting an ARP entry would return uninitialized data, if the entry hadn't
  been resolved yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25263 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 22:03:03 +00:00
Ingo Weinhold
67e2e88213 Added a section to the select() hook documentation discussing the FSs
responsibility never to call notify_select_event() after deselect().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25262 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 21:52:30 +00:00
Jérôme Duval
e6b421a98e fix misuse of ... with B_UTF8_ELLIPSIS
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25261 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 21:48:36 +00:00
Axel Dörfler
b1d749f8f1 * Added an atomic.h header that provides a C++ file with a templatized
64-bit safe version of atomic_test_and_set() for pointers:
  atomic_pointer_test_and_set().
* The VFS is now using this function (it's not used anywhere else in the
  kernel this way).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25260 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 21:05:05 +00:00
Ingo Weinhold
8e4941e810 Forgot this one: Stack trace depth macro for net_buffer tracing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25259 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 20:47:15 +00:00
Axel Dörfler
6ad0d967f0 Fixed build when ENABLE_TRACING is 0.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25258 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 20:43:34 +00:00
Axel Dörfler
c0b5962cd6 * Removed unused function benaphore_lock_etc(). A timeout is not really a
good idea for a benaphore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25257 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 20:20:36 +00:00
Ingo Weinhold
0b69689a18 * Fixed free_data_header_space(). It would increase the header space
although it put the freed space in the free list. Alternating
  invocations of alloc_...() and free_...() would thus increase the
  header space unboundedly.
* Unified the way a data_header and data_node access the header space.
  Originally data_header::data_space and data_node::header_space had to
  be kept in sync, which some functions failed to do. Introduced a
  header_space structure, which is located in data_header and referenced
  by data_node, so that accessing it either way does always keep both
  structures in sync.
* Removed the special handling for the data node created with a buffer.
  Since remove_{header,trailer}() and trim() could remove it without
  knowing, the last reference to the first data header would be freed
  prematurely, causing operations on freed memory, and in the end a
  second free which screwed the object cache's free list. This crashed
  Haiku e.g. when running OpenSSH's "forwarding" test. Now the first
  created node is just a node like any other. It's allocated in the data
  header, too.
* Changed the mechanism how data nodes are allocated. Now they will
  always be allocated on a header associated with the buffer for which
  they are created. This fixes a race condition when freeing them. They
  would otherwise modify the free list of a header which might be
  accessed by another thread at the same time (added a TODO explaining
  how the old code could possibly be fixed). Also squashed several
  TODOs related to running out of header space when allocating a node.
  If the buffer runs out of header space, it will simply allocate a new
  header, now.
* Dealt with some TODOs regarding reverting the buffer to its previous
  state when running out of memory after allocating a few nodes.
* Added several TODOs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25256 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 19:49:43 +00:00
Axel Dörfler
c16d05cff9 * steal_page() called remove_page_from_queue() without holding the sPageLock.
This fixes bug #1900 for real.
* Rearranged find_page_candidate() a bit, removed duplicate code, added a panic
  in case the marker state is invalid.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25255 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 19:45:13 +00:00
Ingo Weinhold
d96c90096f Added a simple net_buffer implementation (using a single malloc()ed
buffer) for debugging/testing purposes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25254 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 19:05:50 +00:00
Ingo Weinhold
0e8836d284 Fixed build for paranoia disabled globally, but enabled for individual
components.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25253 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 18:42:31 +00:00
Ingo Weinhold
e81ddd2870 Partial solution to a race condition between arp_timer() and
arp_update_entry(). While arp_timer() was sending the last request
arp_update_entry() could be called (caused by an incoming reply) and
free the request buffer, which arp_timer() would free a moment later
again. The problem is not completely solved, since a duplicate reply can
still cause a double free. Checked in mainly for Axel's reading
pleasure. :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25252 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 17:15:43 +00:00
Axel Dörfler
bbc25eb650 * Renamed temporary KDL variable from _cookie to _volume in the "mount"
command.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25251 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 16:49:14 +00:00
Axel Dörfler
0b51ee4efd * The page writer was calling remove_page_marker() without holding the
sPageLock. This could easily mess up the page queue.
* Now, remove_page_marker() gets the lock itself. This fixes bug #1900.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25250 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 16:48:27 +00:00
Axel Dörfler
8e8edffce7 * Fixed at least the "dd" part of bug #2148: the second double indirect array
block would be incorrectly addressed when allocating a stream - this could
  cause random blocks to be overwritten, and therefore could cause many sorts
  of problems.
* Moved BFS_TRACING macro to the tracing_config.h file, and let it follow the
  new semantics of those other macros in there.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25249 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 16:15:35 +00:00
Axel Dörfler
e7ad26598a * The "bfs" KDL command can now also convert block offsets to block_runs and
vice versa.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25248 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 16:08:42 +00:00
Axel Dörfler
76824051fd * Only enable block/transaction tracing when the macro is 1.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25247 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 14:57:56 +00:00
Axel Dörfler
18df7df8f7 * Followed Ingo's suggestion, and retricted sending SIGPIPE only to userland
API clients.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25246 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 14:01:46 +00:00
Axel Dörfler
8e0a418b70 * Implemented sending of urgent data. Seems to work fine, but of course only
if the other end is not a Haiku host (retrieving of urgent data is still
  missing).
* Resolved TODO: SendData() now sends a SIGPIPE when trying to send on a
  closed connection.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25245 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 12:42:50 +00:00
Stephan Aßmus
f466d35d9c Rewrote parts related to drawing the labels. The order of drawing happens as
this (seems to be what R5 BStatusBar does):
* combine the "trailing text" with the "trailing label" and truncate the
  resulting string on the left side according to the width of the entire
  control
* combine the "label" with the "text" and truncate that on the right side
  according to the space left by the right hand text.

-> No more overlaps (theoretically, in practise there are still overlaps
  because our BFont::TruncateString() does not respect the width in some
  situations.)

* Changed _SetTextData() accordingly, it is not used anymore for the
  label and trailing label, and could therefor be simplified a little.
* fixed _BarFrame() to not return fractional coords, which could sometimes
  leave a dirty line of pixels.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25244 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 12:42:10 +00:00
Axel Dörfler
63cf342664 * tcp_header::urgent_offset must be set in network byte order as well.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25243 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 12:31:57 +00:00
Axel Dörfler
b18927737f * Added the "sock" test application (as used in Steven's TCP Illustrated) to
our repository, and integrated it to the build system.
* Got it from: http://www.icir.org/christian/sock.html (sock-0.3).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25242 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 09:30:29 +00:00
Axel Dörfler
895d7215fb * Added TCPEndpoint::GetOption(), currently only supports TCP_NODELAY, and
TCP_MAXSEG.
* Note, TCP_MAXSEG cannot be set yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25241 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 09:26:24 +00:00
Axel Dörfler
6289578982 * Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25240 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 08:46:01 +00:00
Axel Dörfler
ae33c41ea8 * For local connections, we no longer use the TIME_WAIT state; in this case,
we know that the connection was torn down cleanly, and there are no inflight
  segments floating around anymore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25239 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 08:39:08 +00:00
Axel Dörfler
cd2bea0cd2 * Closed endpoints are now deleted directly, they no longer get into the
2MSL wait.
* Accidently left on debug output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25238 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 08:28:36 +00:00
Axel Dörfler
66cb8f0ede * Use dprintf_no_syslog() for FLOW and everything in scsi2ata.c - this prevents
endless writing to the syslog.
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25237 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 08:11:43 +00:00
Axel Dörfler
0cadc931d2 * TIME_WAIT endpoints must not send an acknowledgement for known data; this
fixes the "endless discussions" when closing a local connection - only
  happened on a simultaneous close.
* A FIN in TIME_WAIT now updates the time-wait timer, as required by the
  TCP specification.
* Entering TIME_WAIT now cancels all connection timers. We might want to
  think about putting time wait connections into a separate hash, and delete
  the socket early on.
* Added tracing support for send/receive, timers, and state changes.
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25236 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 07:39:58 +00:00
Axel Dörfler
5abeea69a5 * Added tracing for binds and connects as well.
* Introduced the TCP_TRACING macro in tracing_config.h.
* Enlarged the default trace size to something a tiny bit useful (but still
  acceptable for systems with little RAM).
* Cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25235 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 07:35:00 +00:00
Ryan Leavengood
ef13436f1f Fix for #676, an oldie (from 2 years ago): if the MediaPlayer window is moved
off the screen at all, it will be moved back on when the window is activated.

I almost think this might be a reasonable default implementation for
WindowActivated in BWindow :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25234 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 03:37:41 +00:00
Ingo Weinhold
a1587d16d5 Ctrl-L clears the KDL screen.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25233 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-29 01:24:41 +00:00
Marcus Overhagen
bcf291ed9b Removed superflous NULL pointer checks.
The media kit will always call BMediaNode 
and BMediaAddOn functions with valid pointers.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25232 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-28 22:13:36 +00:00
Marcus Overhagen
5b330b7af6 fix build
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25231 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-28 22:01:18 +00:00
Marcus Overhagen
b90d663d10 This fixes scroll wheel support, as reported in bug #1625.
PS/2 supports vertical scrolling only for now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25230 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-28 21:23:41 +00:00
Jérôme Duval
6c07a21e12 fix sleepTime to be microseconds
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25229 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-28 19:20:48 +00:00
Jérôme Duval
873f6659eb reverted r25227. Thanks for the hint Ingo :)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25228 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-28 19:01:00 +00:00
Jérôme Duval
615ffc60cc build fix (with no tracing conf)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25227 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-28 18:34:16 +00:00
Axel Dörfler
7829775e8f * Added a dummy replacement for parse_expression().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25226 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-28 15:49:18 +00:00
Axel Dörfler
c927bf5c49 * Made it work and build again after recent network stack changes.
* Implement "close" command that actively closes the server socket, or does
  an simultaneous close. Even though this triggers an "endless conversation"
  between two time-wait endpoints on Haiku, it works fine in the shell.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25225 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-28 15:48:49 +00:00
Stephan Aßmus
cb2afe5cc7 Patch by Ralf Schuelke with changes/fixes by myself:
* Pick 8 random icons from the application and preference folders
* Pick 8 different icons when the game starts again


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25224 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-28 10:54:38 +00:00
Axel Dörfler
db4b6bc46c * Merged _Receive() and _SegmentReceived().
* Cleanup, shuffled methods around, renamed methods, etc. - no functional changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25223 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-28 09:43:22 +00:00
Rene Gollent
e6fc462cb3 T2 needs to be defined if net_buffer tracing is disabled entirely.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25222 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-27 21:12:57 +00:00
Jérôme Duval
1f859c0470 fixes bug #2169
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25221 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-27 20:23:50 +00:00
Jérôme Duval
a1a5f1241f only set shear and rotation with valid values
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25220 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-27 18:35:59 +00:00
Axel Dörfler
05bc1e8973 * Added _CancelConnectionTimers() that does what its name suggests, and is
now used from various places that previously did not cancel all timers
  they should have.
* When a connection moves to the CLOSED state, it should cancel all timers;
  this prevents from sending a reset at the end of a connection.
* If the persist/delayed acknowledge timers were canceled too late, they might
  still have tried to send something (which would eventually cause a reset
  sent to the peer).
* Follow RFC 1337 with respect to time wait assassination prevention (ie.
  we now ignore resets from peers in time wait state).
* _SegmentReceived() must not check the sequence of a time wait connection;
  it prevented sending a reset when that was due (a new connection request
  would time out, instead of fail immediately).
* Also, that method must never be called in the LISTEN or SYNCHRONIZE_SENT
  states, so we don't need to check for those.
* We don't have to wait in Close() until the connection is actually closed -
  removed a TODO. TCP should handle this internally.
* Renamed _ShutdownEgress() to _Shutdown().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25219 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-27 18:21:16 +00:00
Axel Dörfler
42759f5626 * _BindToEphemeral() now remembers the last port it used, and tries a higher
one next. This should work around the problem Ingo observed with the OpenSSH
  tests (not tested, though).
* The only TCP compliant fix for this problem would be to not enter time wait
  for local connections at all (which I will do soon).
* Another work around other implementations use is to accept incoming
  connections for time wait endpoints (the connection will then be replaced).
  I'm not yet sure if I want that behaviour, though.
* Added tracing for unbinding endpoints (with stack trace) to investigate
  another bug (sometimes closed connections aren't actually closed).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25218 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-27 18:14:03 +00:00
Ingo Weinhold
c96512dab1 Added tracing for net buffer data header references at tracing level 2.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25217 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-27 17:17:20 +00:00
Ingo Weinhold
2c88b9c82a Added kernel tracing for the interesting net buffer operations.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25216 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-27 16:34:23 +00:00