* Try to return relevant errors when we can.
* The style on these needs cleaned up badly.
* I don't want the fix to be lost in style changes.
Change-Id: I8a1661385fbeb8eec86a2c15828b449980050a78
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3396
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Fixes a bug in R1B2 branch in relation to data
from HDS.
Fixes #16420
Change-Id: I8061b9ffd20962c8f56e11c72e8b08b58c9cb2e7
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3042
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Extracted from https://review.haiku-os.org/c/haiku/+/2695
with a few minor tweaks.
May help with #16246, but I could only reproduce it intermittently.
(cherry picked from commit 176d0e1041b0792b41c4bfe80c8cc4ed728184f9)
Change-Id: I4dcd1e31d7c5f51d3d23ba6daae75d03875506ca
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2972
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
This avoids creaing a semaphore where it is not needed, especially
as most of these locks are never used from another thread (in the
reports in #16246, there are thousands of semaphores from this
with only a small handful having a "last acquirer" != 0.)
(cherry picked from commit 67ace0bfab2e04beb4174ac4e86fa05903211164)
Change-Id: I9a879b2dda7534ce5587502d16af59fa9170a6bc
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2971
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Change-Id: Id729d5ded86eee280db9eccf4165bef0db9e1f0f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2921
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
7a8d5a2db3214be378c4450bd94e07db75d5e240 introduced that the fallback tries to match the style
instead of using regular, the fallback was broken in a different way until commit
4dcd8c81b12790b0ad7661f3ab8742ae619996be fixed the remaining issue, this commit
makes the fallback first try the matching style and afterwards try the regular
style (so as to improve above falling back to regular in every case).
Fixes #16189.
Change-Id: Iee956c4c1461794b4836c94e09d66d8cbf196678
Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>
Style fixes and use of BAutolock by me. Also changed the style fallback
to use style 0 instead of "Regular".
This pulls in the final translations for applications for R1/beta2,
and also the new HaikuWebKit.
Change-Id: I2bfb8933dcf35239f6962f8bee2dea507dec6fd5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2869
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit 734c1e049163f67ee02bf02caae5fb9a0108db84)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2871
This reverts commit ef78f1eda04d9a9397960a7d2be3ed89e2208f85.
The new package sets do not require this.
Change-Id: I009a242f16c44510940645e0b71baaf757eca44b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2868
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit e6bc6d8072fea66473c8241e1fb2750d5ee10d6b)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2870
Fixes a bug where contents are not displayed
for local files that are not installed.
Resolves #16161
Change-Id: I27abfd78bf7882b1961f8d9c6ade30d4c15ec2ad
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2865
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit 16f2f8eb8109b35c2151baa05afcfd15875077a5)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2867
The check as to whether or not the buf should be freed was wrong,
leading to incorrect frees.
Fixes double-free KDLs under the idualwifi driver that occur
on boot extremely frequently.
Change-Id: Ia411a6f5c31dd30764705cd87840797f862b4020
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2862
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit a68e59dd1d1af54c5f0bf3c2702e05c39c552477)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2863
The BStackOrHeapArray was allocated with one byte less than user_strlcpy
would write to, corrupting random heap memory. The error was introduced
as part of hrev53864.
Fixes #16175.
Change-Id: I80e1a1bb104183545fbd2a2702cdf3dec089908d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2860
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit 3ac5d980704cd4432bb2584ffa96fc86a94932e2)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2861
Enables the content tab for showing contents of
on-disk, but not yet installed package.
Resolves #16161
Change-Id: I5e4764cf3e9f1e46eafb3d98917a357fece854dc
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2853
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit 6178aeb315962fd92fb8b0bbbae7e075570aaa30)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2857
When HD first loads in a new install, it will experience
a near-empty set of repositories. This is because only
build-time repo caches are present. This change will
cause HD to pull data from remotes on first load, in the
case that the cache is somehow missing and on a user-
initiated update.
Resolves #14840
Change-Id: I4f0e6c9fdba4141841cc167d7953967edb526033
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2821
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit d309d94089574624dac4d8551a9343ed83c51f0a)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2848
If a system call performed by SSL_read is interrupted by a signal, it
seems to set its error to SSL_ERROR_WANT_READ. This triggers logic
added in hrev53853 which assumes the caller is doing async reads and
returns B_WOULD_BLOCK.
This breaks uses of BSecureSocket that do blocking reads.
* Detect interrupted signal by checking for EINTR in errno.
* Adding this retry loop to BScureSocket::Write as well since it can
have the same problem.
Resolves issue #15853.
Change-Id: I8198a8496fa3a2ccee00bda87375a482a0d4ba3d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2825
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
(cherry picked from commit 38963e759643e05836304fbf2b3b45c6c8db3e3a)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2833
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Disable the changelog tab in the case that a package
has no changelog. Also disable the contents tab and
do not attempt to load the package contents in the
case where a package is not installed on the host.
Resolves #15299
Change-Id: Id17daf46aba6709f35438db2ee30f3485fc251ea
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2749
Reviewed-by: humdinger <humdingerb@gmail.com>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit 8c6ebdec76f5f8edc4869da292a59214fac6fe0a)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2824
If the system is currently loading-up and populating
data and the user quits then it was crashing because
of a call to a deleted ProcessCoordinator object.
This change implements the reference as BReference
ensuring that the ProcessCoordinator object is only
deleted after it is not used anywhere.
Resolves #16109
Change-Id: If535c151819da37d502283af3745e4148da69026
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2797
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit f95ec23e9582b09d2067c39903ea8cbbe7bf1e94)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2800
This fixes a SEGFAULT in the tcp add-on reported in issue #15952. See
that issue for some analysis.
The short version is that, when closing a session over the loopback
interface, there is a special branch which skips the TIME_WAIT state
and instead just releases the socket while handling a RST/ACK
segment. If the timing is right this can lead to the reference
counts becoming imbalanced, leading to the code in tcp_receive_data
segfaulting when it tries to release the reference it acquired from
EndpointManager::FindConnection.
I can't find any other systems which skip the TIME_WAIT state with
loopback sessions, and I'm not entirely certain that it's a totally
safe thing to do anyway. This patch instead just treats local sessions
the same way it does a remote session and uses the TIME_WAIT state.
Any workload which creates and discards lots of ephemeral sockets can
just use SO_REUSEADDR to handle this situation like any other system.
To add a final bit of safety, the only place where a net_socket can be
used after calling gSocketModule->release_socket(net_socket*) is in
tcp_receive_data(). release_socket() returns true if the reference
count falls to zero, deleting the socket. There was an unused segment
action flag DELETE_ENDPOINT that I renamed to DELETED_ENDPOINT, which
is used by tcp_receive_data to know whether its safe to release its
reference to the socket after calling TCPEndpoint::SegmentReceived().
Change-Id: I2652fb225c3c8419234cfd627f74ff2de8402003
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2793
Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit 51dd385e3ea8651afd345d724193365cc47dacf2)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2799
In single package mode there was a crash owing to the
status bar not being present. This may as well be
added because it provides some feedback that the
application is actually doing something. The
behaviour of this is not ideal because the feedback
could be better, but it will resolve the crash
issue this ticket is raising.
Resolves #15964
Change-Id: I603a7b163139859f0c46a35ead0809e5d82e0f8d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2791
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit 87016f8f49d6de59aedcf9a26f64362a4abe1d46)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2792
This class can potentially be accessed by multiple "tabs" (windows)
at once, so it must be read/write locked to account for that.
Fixes #16027.
Change-Id: I9cc741874caed4997497b03c8893bc2acb0e6fe7
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2779
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit f0a8640b45451b9891fa641144acc33b90ac9a23)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2790
Each TCPEndpoint has two BufferQueue members, one for the send queue
and one for the receive queue.
If DEBUG_BUFFER_QUEUE is enabled, then most methods of BufferQueue
call BufferQueue::Verify(), sometimes twice. This member function
performs some sanity checking which requires iterating through every
net_buffer in the queue.
Disabling this in a debug build improved throughput by a factor of 5x
over the loopback interface on my laptop. Using iperf the measured
throughput went from 900Mbps to around 4.8Gbps.
This patch turns this sanity checking off for release builds.
* Rename DEBUG_BUFFER_QUEUE to DEBUG_TCP_BUFFER_QUEUE
* Change the default in BufferQueue.h to disabled
* Set DEBUG_TCP_BUFFER_QUEUE to KDEBUG_LEVEL_2 in
kernel_debug_config.h
Change-Id: I262dac5d7e2889d2942bbdcf6b667cc0cbafa4c8
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2780
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit 44a4bc5fd6d2bf7a0cfbaf303f6ec4b3f46f7142)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2782
This change removes two mistakes I made a long time ago
that caused unnecessarily copying of lists of data. This
fix speeds up the UI alot.
This change also clears data in UI list elements when a
bulk load is requested. It stops clearing otherwise and
instead uses "add" and "remove" operations in the lists
which is OK now because the UI list elements are much
faster than they have been in the past. This removes
the strange clean-and-reload that was visible in the UI
previously.
A threaded package loading system was put in place a long
time ago, but with these performance improvements this
mechanism is no longer necessary; it has been removed to
simplify the code.
Fixes #16012
Change-Id: I393cee929695726539602b51630ae285fb8384f1
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2748
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
(cherry picked from commit c419919252f9076761900fd4e7575407a554255e)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2777
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
The local storage of the various repositories' config
needs to cater for different generations of storage
formats and also needs to be able to swap out legacy
repository identifiers.
Change-Id: Ib4b3857254b7b703858eff6815e2d6c54d69da3c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1963
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
(cherry picked from commit 9d8d114499db1f50f105c48c1a2172ea56e18bcd)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2776
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Our sniffing rule is not perfect, but it is already a lot better than
what was done here.
Partially fixes #14437 (the icons also fails parsing for other reasons,
but with an error message, at least)
Change-Id: I25475b419b5fbe863c71f553a336757d7950bf48
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2662
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit 17626df948e1d384072e6a2f8eab4f7fc6a18d0a)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2775
The parser was based on an old example from agg. NanoSVG is originally
based on the same code, but has lots of bugfixes. So it makes sense
to use it.
Nanosvg revision 25241c5a8f8451d41ab1b02ab2d865b01600d949
Fixes #5955, #8586, #13021.
Change-Id: I38ff9aa4e1d403c41979ebe42f7b45d4500a870c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2661
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
(cherry picked from commit 2a3b385efba22655c4d6ff61ed59203283392ad7)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2774