Commit Graph
100 Commits
Author SHA1 Message Date
Niels Sascha Reedijk 7b1d966cf2 NetServices: Rework parsing of content-length and move to HttpParser
This fixes a bug in the HttpAuthTest, and in general, moves responsibility of determining
the shape and size of the content to the right place.

Still to do is to fix the case where there really is a variable length content. This will
now probably error out as a connection closed error.

Change-Id: I13c20028e834cc9af8c7bc1d7d7613bf60838e64
2022-08-08 07:58:45 +01:00
Niels Sascha Reedijk 9cb56a4881 NetServices: Add custom error message to BNetworkRequestError
Change-Id: I03970762531a689e25cd78a1091aecf755ee87ce
2022-08-07 08:47:19 +01:00
Niels Sascha Reedijk 6d1bb0e7ad NetServices: Remove BHttpRequest::SerializeTo(BDataIO*)
The private version that serializes to a HttpBuffer is now used.

Change-Id: I034933a641e98b3a8f918470a024ba32ea7c8663
2022-08-07 07:17:38 +01:00
Niels Sascha Reedijk c7f925c3ee NetServices: add the HttpSerializer helper to help serialize requests
Change-Id: Ide1e2d387884ce4cf2d406057960cd0732d61f38
2022-08-07 06:47:15 +01:00
Niels Sascha Reedijk e68284565a NetServices: move HttpBuffer and HttpParser into their own header/source
Change-Id: I5bc0d9df6f94c2cf1c39baa6206bf6f1db284705
2022-08-01 08:11:56 +01:00
Niels Sascha Reedijk 9b33a931f1 NetServices: Implement controls on the number of concurrent requests.
This change allows the user to control how many concurrent request can be done
per session. This is going to be helpful to running the tests as well; they were
all fired up in parallel, which sometimes leads to our test server refusing a
connection.

Change-Id: I4f1f40b28b8e0199ea5589b36cd8d00ecd849a63
2022-07-27 09:02:09 +01:00
Niels Sascha Reedijk 251828d308 NetServices: Rewrite the control thread loop to prepare for filtering of requests to do
Change-Id: I72d5f1ddd499f8fb227af5ee78111a60eb50b1f5
2022-07-24 22:07:22 +01:00
Niels Sascha Reedijk 60355daec9 NetServices: Implement asynchronous status update messages.
The integration PostTest has a basic test that the expected messages are sent and
have the expected data fields. The gist is documented in book.dox.

To do are the messages around SSL. However, that functionality is also not
implemented yet, so there is nothing to send.

Change-Id: Ib8f36ed32f9854d643d8256338b71af7067059f0
2022-07-24 08:56:02 +01:00
Niels Sascha Reedijk b74e852fd9 NetServices: Remove Accept as standard and protected header.
In the old service kit, the Accept header was automatically set. However, it is
not a required header. This removes the default value and the protection against
setting it manually.

Required to make HaikuDepot work.

Change-Id: Ic589bfc5829db25915b67f2a13b6c2436c053e25
2022-07-20 06:28:17 +01:00
Niels Sascha Reedijk 2b4cd81ff3 NetServices: add support for receiving incoming chunked messages
Change-Id: I1bfe22a7959c7a5fc7dc644e4e3941965edafb65
2022-07-19 06:29:36 +01:00
Niels Sascha Reedijk 826afd9616 NetServices: Refactor the parsing code into a HttpParser helper class
Change-Id: Ib03aacc36d46318c8870554f794ff66db4cce063
2022-07-17 15:54:54 +01:00
Niels Sascha Reedijk a1e7583626 NetServices: add HttpBuffer to encapsulate buffered reading
Change-Id: I7ec3189c3cf459fccae4ffac44702fd6b8c12ac9
2022-07-03 12:17:10 +01:00
Niels Sascha Reedijk 6cf088266f NetServices: When the response Content-Length is 0, do not expect a body.
Change-Id: Ia715b44289dc3c64c2b834f954421413cbc3593c
2022-06-26 16:04:58 +01:00
Niels Sascha Reedijk 92357c131e NetServices: Add support for an input body in a request and handle this with redirects.
Change-Id: Id2399d49aa673469c8c04ebd13884cdbcb24112d
2022-06-23 21:13:35 +01:00
Niels Sascha Reedijk 6cbbd9bf4e NetServices: Implement BHttpSession::Cancel()
Change-Id: Iff0a7726e57f3e6bd4e9d0ebac08a370d25a62d7
2022-06-03 13:38:28 +01:00
Niels Sascha Reedijk 2f3b9b18ac NetServices: Add/rework the MaxRedirections, Timeout and StopOnError options
Change-Id: I4e59b51c16c6777941dc92ce02505386257dad03
2022-06-03 09:40:42 +01:00
Niels Sascha Reedijk f9d9d20245 NetServices: Add support for Basic authentication
Change-Id: I304104f7096fd935212e1bfa3e988e7945cb5cec
2022-05-29 15:13:54 +01:00
Niels Sascha Reedijk f751534257 NetServices: add optional fields to BHttpRequest
Change-Id: I6228419a55c81203ce2c26827d17ff6a402d86c5
2022-05-15 16:43:07 +01:00
Niels Sascha Reedijk 46b7da1f4f Merge branch 'master' into dev/netservices
Change-Id: I1eb6c2ea2fd0d794ad6378eab8bbb80ce46dfbb8
2022-05-08 09:00:42 +01:00
Niels Sascha Reedijk 929355add7 libroot: return error on partial match in strptime()
The previously implemented behavior of strptime() allowed for partial matches
of strings. For example, if the format string was "%a, %d %b %Y %H:%M:%S", it
would successfully parse "Sun, 07 Dec 2003" as input. This is inconsistent with
the standardization in POSIX.1-2001 (and later).

This change makes strptime() return an error if there is no more data in the
buffer and not the entire format string is parsed.

Change-Id: If066c49fb7fc094f8ccd56703cd01903a0e40cb3
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5298
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
2022-05-08 07:58:05 +00:00
Niels Sascha Reedijk cf54474e38 NetServices: Implement BHttpTime, parse_http_time() and format_http_time().
These utilities convert timestamp strings that are formatted according to
the HTTP RFC into BDateTime objects, and vice versa.

Change-Id: Ia2498944fb63d09233839f19d08f15d82a0a9685
2022-05-08 06:59:51 +01:00
Niels Sascha Reedijk 13bfff7be3 NetServices: Implement BHttpStatusCode, BHttpStatusClass and Redirects
The user of the API can set whether redirects should be followed, and if so,
how many. This is part of the BHttpRequest API. The BHttpSession then follows
those instructions, and executes the maximum number of redirects the user
would like to follow.

As part of this commit, the BHttpStatusClass and BHttpStatusCodes helper enums
have been added, to give a friendlier access to HTTP status codes and status
classes.

Change-Id: Ic8c9e3fda158e2cce549c8f1d360951f7ac83311
2022-04-23 18:30:38 +01:00
Niels Sascha Reedijk 59c359e5a9 NetServices: implement support for HEAD requests and 204 responses.
These particular responses will not have a body. This is now handled by the
BHttpSession object. There is also a minor fix in here that prevents a crash
when multiple requests are handled by the DataThread at the same time, and not
all of the requests have events.

Change-Id: I7f47d8b3cd8491c8193275be4b3fc1080780fa20
2022-04-18 14:34:46 +01:00
Niels Sascha Reedijk d482381d2c NetServices: partial implementation of the receive function
This initial implementation contains a lot of extra debuggin output that will
be removed in future changes. It is now possible to run a simple GET request
to the test server with gzip encoding.

Change-Id: I2c402e5cf80b94b366563888222a891a1b094b7a
2022-04-18 14:34:46 +01:00
Niels Sascha Reedijk 8ccf8fb44d NetServices: Rewrite BHttpFields to use raw strings as underlying data storage
This change also drops the principle that fields with the same keys would be
grouped together. This was initially inspired by Boost::Beast, but it means a
lot of extra copying of data when adding/organizing the list, as well as
inefficient querying on each add. Now that the design choice is to fully go
for the raw string as underlying data storage, that choice is not necessary.
In the future it may be able to emulate the grouping or retrieving of lists
of values in the API, rather than as a fundamental principle of the data
storage.

Change-Id: I2667cfa38eb3b7b75393ee71fb038231a40b4193
2022-04-10 09:05:24 +01:00
Niels Sascha Reedijk 70837c180c NetServices: implement writing in the data thread.
Change-Id: Ideb63f9f96bf62ea7d9ce63df22805473273855d
2022-04-05 21:39:54 +01:00
Niels Sascha Reedijk 1d2070c739 NetServices: add testserver.py and proxy.py test infrastructure
This adds the existing testing facilities to the netservices2kit.

Change-Id: Idd884a800abda967bc4b65a416a5f6d927f37450
2022-04-04 18:45:39 +01:00
Niels Sascha Reedijk 02ea57d7f9 NetServices: Introduce BHttpRequestStream and abstract interface.
This supports asynchronous transfers of Http Requests to a network
interface.

Change-Id: I845fb2e08160d219f85b7a08d2d8872ac7359b47
2022-04-03 12:17:05 +01:00
Niels Sascha Reedijk d9a4c6070c NetServices: Serialize the header of a BHttpRequest to a string
Change-Id: Ib1e22536a0b39dc6e9461e7993ea6784f1ea0e2f
2022-03-30 07:38:57 +01:00
Niels Sascha Reedijk 3b172a3dc6 NetServices: implement hostname resolution and connection for BHttpRequest
BHttpSession::Execute() moves the request into the session, and returns a future BHttpResponse
object. Currently implemented are resolving the hostname, and opening the connection.

There is some scaffolding for the actual data transfer.

Change-Id: I5a8a7a7f8680036b91cdba4beee140bbed6bfd5a
2022-03-24 06:13:38 +00:00
Niels Sascha Reedijk 3b2aa6c31b NetServices: Add the BNetworkRequestError type
This is a generic error type that can be used by multiple protocols to describe errors that can
occur while processing a request. The error type supports adding an additional error code in cases
where there is an underlying system error.

The type will be used to describe errors that occur while processing requests by BHttpSession, and
it is generally going to be thrown by the receiving BHttpResult.

Change-Id: I76c0bbaedd38df8cfb79159c4beae2fbf1350aab
2022-03-07 07:59:03 +00:00
Niels Sascha Reedijk 1baacbfebf NetServices: Initial implementation of BHttpResult
Incomplete class, but will provide the basis to start working on the internals of the BHttpSession.

Change-Id: I3ca14b7bd823fc1b4a5a32f5784592d214c4e9a7
2022-03-05 14:56:57 +00:00
Niels Sascha Reedijk 6ce6e96470 NetServices: Introduce BHttpRequest class
Objects of this class describe a HTTP request. It contains several convenience
functions that will allow a user to describe the properties of the request.
More options to be added later.

Change-Id: If6a00d26808c5ed4b121cb36dc75a2a1cc449f95
2022-02-25 08:41:14 +00:00
Niels Sascha Reedijk ec865cb87e NetServices: Add BHttpMethod that represents a HTTP method
This class provides defaults and performs basic validation for HTTP Methods as
defined by the standard. They will be used in conjunction with a future
BHttpRequest class.

Change-Id: If69a7ec186d9d1165e8efe5ab5df50d5a089208d
2022-02-20 15:34:55 +00:00
Niels Sascha Reedijk cb67e34887 NetServices: move token validation to header for reuse elsewhere
Change-Id: I2dbed5cfbd387eaf6ed7cf38c73a7db865a87771
2022-02-20 13:10:20 +00:00
Niels Sascha Reedijk a8003a7030 NetServices: Introduce BHttpFields to query and manipulate fields in HTTP messages
HTTP messages (requests and responses) have a header section that can contain
HTTP headers. These headers consist of name, value pairs. This class can be
used to query the headers on a response, and build a list of headers for a
request.

The internal implementation is designed around two different methods of storing
the underlying data. For HTTP requests, the name, value pairs are stored as
owned BString objects. For responses, the assumption is that there is a byte
buffer that contains the data and that has the same lifetime as the BHttpFields
object. The name, value pairs will then be stored as std::string_view to the
underlying buffer.

Still to do is:
 - The method to convert a BHttpFields list into a string buffer to transmit.
 - The method to parse a string buffer and turn it into a BHttpFields object.

Change-Id: I4819db100aa1671aa7403675216a4c85fd221da7
2022-02-20 13:10:19 +00:00
Niels Sascha Reedijk 268f99dd7d Merge branch 'master' into dev/netservices 2021-12-22 20:46:13 +00:00
Niels Sascha Reedijk 34522da9e3 netservices: add BHttpHeader class and BHttpHeaderMap skeleton
Change-Id: I36a7c757a6909604d749355ecb1a9d42d05d7306
2021-12-17 17:40:15 +00:00
Niels Sascha Reedijk 892cbe10b6 Tests: add skeleton for new services kits tests
Change-Id: I759c6b91d3bf856dbbe8b8b6112d53e601798abf
2021-12-17 17:40:15 +00:00
Niels Sascha Reedijk 3d2aee7545 CppUnit: use <sstream> instead of the deprecated <strstream>
<strstream> has been deprecated since C++98. Both GCC 2.95.3 and GCC 8.3 have
the successor <sstream> available, so use that one instead.

Change-Id: Ifefe686974864c2fd1d4a9d083294b1edb436fbd
2021-12-17 17:40:15 +00:00
Niels Sascha Reedijk 1715bb67ea netservices: Flesh out BHttpSession::Impl data and control structures
Change-Id: I4230570ea8339b12d855f7de7fa72e4664013e2d
2021-12-17 17:40:15 +00:00
Niels Sascha Reedijk ec7d71e612 NetServices: Add skeleton BHttpSession class and its documentation
Change-Id: Ia8a35588422908f6fe9b839ce239fb478baf298b
2021-12-17 17:40:15 +00:00
Niels Sascha Reedijk f54a5a68d7 HaikuBook: Prepare for newer Network Services Kit docs
Change-Id: Ib2cc458f9121cb78250a643affc0933512e65bc8
2021-12-17 16:25:44 +00:00
Niels Sascha Reedijk bcd6a663c2 BString: make move constructor and assignment noexcept
Change-Id: I87f5ecad22f46b59386a091a1bb502536f460315
2021-12-17 16:25:44 +00:00
Niels Sascha Reedijk 158b8fdab2 libroot: return EOPNOTSUPP from posix_fallocate
The pre-allocate functionality was added to Haiku in hrev54704. It needs
support at the file system level though, and it is yet to be implemented by
BFS. Some applications (and glibc!) implement a fallback mechanism using
ftruncate(), including the LLVM tools, but they go to this fallback
mechanism when it is clear that the operation is not supported. In particular
they look for EOPNOTSUPP.

The current implementation returns B_UNSUPPORTED from the vfs layer when a
file system does not implement the feature. This error code this not map to
a POSIX error. This change converts it to EOPNOTSUPP.

Change-Id: Ief382b0f4d462dfedf84c731f68f69731de4498c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4492
Reviewed-by: Adrien Destugues <[email protected]>
Reviewed-by: Jérôme Duval <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2021-09-21 10:22:10 +00:00
Niels Sascha Reedijk 70b63f18b3 netservices: remove all old conditional code
Change-Id: Idf3773c081ce103647c5dbea6e82c22bfc5606c9
2021-09-11 13:08:11 +01:00
Niels Sascha Reedijk a00a1da384 libbnetapi.so: remove deprecated network services classes
This was communicated to devs and end users to happen after R1 beta 3

Change-Id: I65177c0061a58519b04d944ad6a73677ad77206a
2021-09-11 13:08:10 +01:00
Niels Sascha Reedijk 530f89aa6d BString: rewrite cleanup methods
This removes the use of the destructor in the move assignment operator, as it
may rely on undefined behaviour from the compiler. Additionally, some duplicate
logic to dereference and free a shared string has been unified under
_ReleasePrivateData().

Change-Id: Ie9f51d598c734f83cd0fba49b651315c6e9c8aac
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4440
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2021-09-10 05:34:06 +00:00
Niels Sascha Reedijk 0b86520c4d BString: add support for move semantics with C++11 and up.
This implements the "rule of 5" for this type. While the copy operation for
BString was already using shallow copies of the underlying data, this change
further optimizes moving the data from one object to another.

While it is not the intention to implement move semantics to all types in the
legacy Haiku/Be kits, data types like BString are good candidates, because move
operations are often useful when working with data within an application.

In this implementation, the internal data of the string object will be set to
NULL, thus leaving an empty string.

Change-Id: I16bf9424f9b17f622b0b57659b80628e18760288
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4428
Reviewed-by: Jérôme Duval <[email protected]>
2021-09-08 07:07:36 +00:00
Niels Sascha Reedijk abba71575e Synchronize translations from the r1beta3 branch
Change-Id: If513fdb4ce3acfdb6f97c7a9bb3de1592b509469
2021-07-21 12:55:45 +01:00
Niels Sascha Reedijk c18f9eb4ea User documentation: synchronize userguide from the userguide translator
Change-Id: I9b30ae27658a40b85c67a4c30aaea2b4bf9507f9
2021-07-21 12:54:38 +01:00
Niels Sascha Reedijk 510780798f User documentation: synchronize welcome docs from the userguide translator
Change-Id: I2a2b01d87c35f22f688d51740812a28acf51e11d
2021-07-21 12:54:19 +01:00
Niels Sascha Reedijk d3071b6dd3 Update translator credits for r1beta3
Change-Id: I49e0c1148aa1fb8445888e362e605015dc2efde8
2021-07-21 12:54:09 +01:00
Niels Sascha Reedijk bf6a2a2bf1 Cortex: fix the catalog location of the main application
Previously, hrev55011 introduced localization for Cortex, which then
prompted to close #7530. It has then been reopened, when it turns out
that the translations for the container application (RouteApp) did not
work, whereas the individual add-ons/modules were translated.

The cause is that by default BCatalog looks up the translations based on
the subtype part of the signature. This is x-vnd.Cortex.Route (without
the application/ supertype). This change will place the translations in
the right place of the file system.

The add-ons were never affected, since they BCatalog is explicitly told
to find the translations for the entire signature, like:

static BCatalog sCatalog("application/x-vnd.Cortex.InfoView");

Even so, it was chosen to omit the `application` supertype from the
signature for the shared code as well.

This should fix #7530 for good.

Change-Id: Iff18fabef7aba68602e49db1e98cfed2f486f545
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4091
Reviewed-by: Niels Sascha Reedijk <[email protected]>
Tested-by: Commit checker robot <[email protected]>
2021-06-17 10:59:18 +00:00
Niels Sascha Reedijk 8c232f164a AboutSystem: remove duplicate 'Copyright'
Reported by translator loic. Thanks!

Change-Id: I2491a02388321338d8ffe3031fa4670877a77a66
2021-06-10 08:28:55 +01:00
Niels Sascha Reedijk dc31a541e0 HaikuBook: Add missing members to BWindow
BWindow: :MoveToScreen() and related enum flags
BWindow: :ResizeToPreferred()
BWindow: :Close()
Change-Id: I589f7c10753de232a09bdd3ed12b5dc42d5f12ba
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3885
Reviewed-by: Adrien Destugues <[email protected]>
2021-04-24 10:44:10 +00:00
Niels Sascha Reedijk 5b113c01c2 kernel: remove stray dprintf about acquire_advisory_lock
Change-Id: I306e2816e59a621a4c478babad5f3aa2cc69fc8d
2021-04-19 07:12:22 +01:00
Niels Sascha Reedijk 82cd6aad15 HaikuBook: add missing object from AffineTransform.h
Change-Id: I3a3098db4a35b8fe12e763dd3a7e1e5fa9cafc69
2021-04-19 07:11:34 +01:00
Niels Sascha Reedijk 4497337b22 HaikuBook: unichar was removed in hrev54953
Change-Id: Ib5faf5b0e0d6c46bf6eb49a941c9fa4e0ef6b47d
2021-04-19 07:02:08 +01:00
Niels Sascha Reedijk 2aad295eb2 HaikuBook: escape the # character as it implies a link request
Change-Id: I9100d74fb3af9298b3386bea02c4a5818c45296b
2021-04-19 07:00:42 +01:00
Niels Sascha Reedijk f125de8cc8 HaikuBook: Add internal skeletons for BGradient* classes
Change-Id: I9b75084550dc510692122994a102ccd9923ed987
2021-04-19 06:56:16 +01:00
Niels Sascha Reedijk f706ac5bd5 HaikuDepot: remove double space after period in UI string
Change-Id: If5e63499c5fe7894294319c31c15e6ef133553d9
2021-04-17 08:31:19 +01:00
Niels Sascha Reedijk f97357a6ed Fix building on Haiku after hrev54993
Build tested on Linux.

Change-Id: I911ac42d99a0c1e94cab77dc29bf43d8f7f91093
2021-03-24 11:19:25 +00:00
Niels Sascha Reedijk 9335a062be Revert "Fix building on Haiku after hrev54993"
This breaks the build on other platforms, so it needs a bit more thought and testing.

This reverts commit d0834b34d5.
2021-03-22 22:52:50 +00:00
Niels Sascha Reedijk d0834b34d5 Fix building on Haiku after hrev54993
Change-Id: I052aad6374ae7ab7b4bcbf47bd88cd84193a9879
2021-03-22 21:10:09 +00:00
Niels Sascha Reedijk fc03b45a71 POSIX: make readv() and writev() conform to IEEE Std 1003.1-2001
The standardized version of readv() and writev() take an int as the third
parameter. Arguably a size_t makes more sense, but the standardization bodies
decided otherwise.

The non-standard functions of readv_pos() and writev_pos() have been updated
for consistency. The corresponding _kern_readv() and _kern_writev() internal
functions continue to take the size_t parameter.

The ABI will not change, even though on 64 bit machines the size of the count
parameter will change from 8 to 4 bytes.

The actual use will be slightly different. Like with the size_t argument type,
it will not be possible to give a count lower than 0. If the value is less than
0, then the B_BAD_VALUE/EINVAL error will be set.

Change-Id: I949c8ed67dbc0b4e209768cbdee554c929fc242e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3770
Reviewed-by: Jérôme Duval <[email protected]>
2021-03-16 12:03:02 +00:00
Niels Sascha Reedijk ec8bba1587 PackageKit: fix download logic for remote files
This was broken in hrev54968, as some code was lost while switching to the new
way the network services kits writes files to disk.

This should fix #16822

Change-Id: I104d82e268ded287fd64db1cb902f94b71bad53b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3760
Reviewed-by: Adrien Destugues <[email protected]>
2021-03-02 15:17:58 +00:00
Niels Sascha Reedijk 85a6d6530a libnetservices.a: fix unit test builds after hrev54923 2021-01-30 14:42:25 +00:00
Niels Sascha Reedijk 094b8dcf70 HaikuBook: housekeeping of the netservices documentation
Change-Id: I6f9444665e061047bfb024ac0274b69fa1396912
2021-01-29 09:56:28 +00:00
Niels Sascha Reedijk e95af9e0ef libnetservices.a: final cleanup after progress size change to off_t
Final fallout of the hrev54936 change

Change-Id: Id4836359f49dffbef76916db7fb7b51dd1e490d8
2021-01-28 11:08:10 +00:00
Niels Sascha Reedijk 2319480945 HaikuDepot: handle the change to off_t for download and upload
This is a missed use of the updated headers in hrev54926

Change-Id: I56c7e20e150d184d06b2ad87cff222f819fa08b0
2021-01-28 10:35:13 +00:00
Niels Sascha Reedijk e1467b2bf1 libnetservices.a: properly handle the size change to off_t on 32 bit platforms.
This is a missed use of the updated headers in hrev54926

Change-Id: I9be83d29aadec20549bd4cc0d11238a40d8978f4
2021-01-28 10:30:02 +00:00
Niels Sascha Reedijk 1a0b4125b6 libpackage.so: change UrlProtocolListener size types to off_t
Missed this use after changing the definition in hrev54926

Change-Id: I046560ec73dfb3ed6284513a34228b8343c5cf40
2021-01-28 10:08:40 +00:00
Niels Sascha Reedijk 8579c7faf2 Package Kit: switch to libnetservices.a
Switch to the experimental services API as the copy in libbnetapi.so is
deprecated.

Change-Id: Ia0742038937d078c6a59ae13180a00a4c4eeb177
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3671
Reviewed-by: Adrien Destugues <[email protected]>
2021-01-27 19:53:11 +00:00
Niels Sascha Reedijk 2a7090df71 libnetservices.a: move BGeoLocation from libshared.a
The BGeolocation class uses the network interface in libnetservices.a, so it
is moved here for now.

This will break any out of tree projects that depend on it, but it is a source
incompatible change only.

Change-Id: I6f5b1332eb87ad37dd33fbe09fdb11b16f7f26e4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3670
Reviewed-by: Adrien Destugues <[email protected]>
2021-01-27 19:53:11 +00:00
Niels Sascha Reedijk 4080dbd635 haikudepot: switch to libnetservices.a
Switch to the experimental services API as the copy in libbnetapi.so is
deprecated.

Change-Id: Ic5e2c23a1be598be3057ea913c420c5346f9007f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3669
Reviewed-by: Adrien Destugues <[email protected]>
2021-01-27 19:53:11 +00:00
Niels Sascha Reedijk ac4b837328 http_streamer: switch to libnetservices.a
Switch to the experimental services API as the copy in libbnetapi.so is
deprecated.

Change-Id: I57d76b1d1be5c957221cc2d77d148fadbac2a642
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3668
Reviewed-by: Adrien Destugues <[email protected]>
2021-01-27 19:53:11 +00:00
Niels Sascha Reedijk ce64ffdb90 libnetservices.a: Put the experimental API into BPrivate::Network namespace
In order to prevent classes between libnetapi.so with the legacy API and
applications using the libnetservices.a library, the latter will have the
classes in a distinct namespace.

In the implementation, both libbnetapi.so and libnetservices.a will use the
same header and source files. If LIBNETAPI_DEPRECATED is defined during build,
the headers and source will have binary compatible behavior. Otherwise, the
classes and other objects will be put in the HaikuExt namespace.

In order to build the libbnetapi.so and libnetservices.a with the proper
build configuration, there is a stub `src/kits/net/libnetapi_deprecated` folder
that applies the special configuration to the source files.

Currently HaikuDepot, Webpositive, libshared.a and the http_streamer add on
use the compatible API in libbnetapi.so.

Change-Id: Ic73e9f271ef75749adda46f6f72e9a0b2851b461
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3667
Reviewed-by: Adrien Destugues <[email protected]>
2021-01-27 19:53:11 +00:00
Niels Sascha Reedijk 1b133b90fd libnetservices.a: create new static library for the network services
These will be added to the _devel packages so that other applications can link
to them.

Change-Id: If3fd231869823b42d6d896c6c9eb7a95c5fe715d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3666
Reviewed-by: Adrien Destugues <[email protected]>
2021-01-27 19:53:11 +00:00
Niels Sascha Reedijk 603e0bdf62 libnetapi.so: make headers of deprecated classes private
These classes have been moved to the public API too soon, and they need some
more time to mature before they can be declared stable.

Change-Id: I9c52a8e6cc103922abde7a6b911fe0c3e6bf5700
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3665
Reviewed-by: Adrien Destugues <[email protected]>
2021-01-27 19:53:11 +00:00
Niels Sascha Reedijk 35d8d4d113 libnetapi.so: move deprecated classes out into a libnetservices directory
These classes have been moved to the public API too soon, and they need some
more time to mature before they can be declared stable.

In this first step the classes that are involved, are moved to a separate
folder. They will still be linked to libnetapi.so, so that binaries that
depend on them currently will not break.

Change-Id: I6c16f17573d819314a27936f065ebe675846f763
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3664
Reviewed-by: Adrien Destugues <[email protected]>
2021-01-27 19:53:11 +00:00
Niels Sascha Reedijk dfb36b35b9 Installer: fix 'clean install' over existing installation.
Whenever the target of an installation is a partition that is not empty, the
Installer prompts the user whether they would like to continue with a 'clean
installation', i.e. an installation that clears out the system folder,
excluding the settings, and cleanly installs the assets in the source's
system folder. At all other locations the source data is merged, meaning that
the source version is copied in place.

The logic that clears out the existing /system/ directory stopped working. This
change moves that logic from the copying process, to where it is run before any
file is copied. The added advantage is that the system folder is now properly
cleaned up, also stray files under the system folder will be removed.

This change does not change the logic of what constitutes a 'clean install'.
There are arguments to be made that it should potentially also drop the
settings files, as well as clean out the user's home folder for stray
add-ons, but that really is different functionality, and at this points I
think the requirements for that are not yet fleshed out.

The change was manually tested.

Fixes #16092

Change-Id: Ia6781c8d2330ba336b3921f9a980b5e31c48a2ec
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3140
Reviewed-by: Andrew Lindesay <[email protected]>
2020-11-16 09:02:27 +00:00
Niels Sascha Reedijk 1e22d0d338 HaikuBook: Improvements to the GraphicsDefs.h documentations
Still lots more to do, but it is a start.

Change-Id: Ia83e7f4b751a860b3005d34841b58f31450613ce
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3309
Reviewed-by: waddlesplash <[email protected]>
2020-10-11 15:46:06 +00:00
Niels Sascha Reedijk 5a6d68bbfa HaikuBook: add instructions for including INTERNAL documentation
Change-Id: Ifb539a0a11d6aa9f496aa493d7a47a08016818be
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3308
Reviewed-by: waddlesplash <[email protected]>
2020-10-11 15:46:06 +00:00
Niels Sascha Reedijk 2cb5a2c394 HaikuBook: Add skeleton for support/DateTime.h and support/Job.h.
These are marked internal for now.

Change-Id: I09859060021e4b35c355c9a0400da6f8bc6653e2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3307
Reviewed-by: waddlesplash <[email protected]>
2020-10-11 15:46:06 +00:00
Niels Sascha Reedijk 85b475f07b HaikuBook: Add missing protected methods to BControl
Change-Id: Ia230272efa66bff96f9cd34ec910f4d1315fd1aa
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3306
Reviewed-by: waddlesplash <[email protected]>
2020-10-11 15:46:06 +00:00
Niels Sascha Reedijk 42dcaf375d HaikuBook: Hide BLaunchRoster and BToolTip documentation from book
These two classes are not yet in the public API, as such they are hidden behind
the INTERNAL conditional variable.

Change-Id: I4ac204a600715937ef99d8ff56c4026d06abec3f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3305
Reviewed-by: waddlesplash <[email protected]>
2020-10-11 15:46:06 +00:00
Niels Sascha Reedijk ae78fb3062 HaikuBook: Add Makefile that supports the default and the develop configurations
I use the develop configuration to generate a warnings file, which is useful to
find undocumented members. The default configuration hides the undocumented
members and does not warn about them.

Change-Id: I09248c95bd51ea21118ff4f7ce57427d033981d2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3304
Reviewed-by: waddlesplash <[email protected]>
2020-10-11 15:46:06 +00:00
Niels Sascha Reedijk d458e592eb HaikuBook: Apply layout customizations after default Doxygen stylesheet
Previously the 'book.css' file was applied as the sole stylesheet for the
Doxygen generated documentation. This stylesheet now applies it as a secondary
stylesheet to override Doxygen's defaults. The main advantage is that when
Doxygen adds new features, they will now be styled by default.

I did my best to clean up the book.css file, though it is not unlikely that
there still is a lot of duplicate CSS. For now though, the output looks mostly
the same, the code blocks no longer have an empty line between each of the lines
and the tooltip text - while not working - are no longer visible on the bottom
of the page.

Change-Id: Ia50915245ecd981843d0d8ec42e362b538187920
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3269
Reviewed-by: Adrien Destugues <[email protected]>
2020-09-29 19:14:01 +00:00
Niels Sascha Reedijk 331889d067 Kernel/Threads: remove limit on number of dead threads in a team
When a thread is created, it is expected that some other thread (usually the
creating thread) will want to make sure it completes. This is done using the
pthread_join() or wait_for_thread() calls.

It is possible that threads end before another thread waits for its completion.
That's why there is a dead thread list for each team, which holds thread ids
and their exit status so that a call to pthread_join() or wait_for_thread() in
the future can complete succesfully.

The dead thread list was limited to 32 threads per team. If there would be
more, the oldest thread would be kicked off. This could cause issues in
situations where a team would create more than 32 threads, and would start
waiting for their result after they have finished. Some of the calls would fail
because the threads would no longer be in the dead list.

This specifically caused problems for cargo (the Rust package manager), which
could depending on the number of dependencies, could create more than 32
threads. See: https://github.com/nielx/rust/issues/3

This change removes the limit of dead threads within a team. Note that there is
a risk that a badly written program that does not detach or joins its threads
can make this an endless list, but the impact is relatively small (dead threads
only occupy a bit of kernel memory).

Change-Id: I0135dd54e10ee48a529f23228d21237d4f1a74e2
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3178
Reviewed-by: Adrien Destugues <[email protected]>
2020-09-01 21:04:46 +00:00
Niels Sascha Reedijk 3f7f989680 Installer: Remove level parameter from CopyEngine
The level parameter in the CopyEngine::CollectCopyInfo() and
CopyEngine::Copy() methods was introduced in hrev30395 to allow the CopyEngine
to decide which directories should be copied. Since then, this
class has been rewritten and it is no longer necessary for that purpose.

This change refactors the CopyEngine and removes the
level parameter from the class interface. Furthermore, it was broken to begin
with; it was passed as reference to the internal recursive _Copy() and
_CollectCopyInfo() methods, meaning they acted like a global counter. The
global counter was increased at the beginning and decreased at the end of those
methods. Execution could terminate early though, leaving the level counter out
of sync with the recursion level.

There is one use of the level parameter, namely in the
WorkerThread::EntryFilter::ShouldClobberFolder() method, but the use of the
parameter was wrong (it would have been at level 3 at the point of the check,
not level 2) and the logic is functional without the level check.
Change-Id: Id92ef89b015e9b1185bde061273f61e492664bce
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3139
Reviewed-by: Adrien Destugues <[email protected]>
Reviewed-by: Axel Dörfler <[email protected]>
2020-08-11 15:25:30 +00:00
Niels Sascha Reedijk 840f23676c SoftwareUpdater: Use translated application name for notification group
Fixes #16129

Change-Id: I9e12d647bc0c8b6e54297e75642a5800613f26ad
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2994
Reviewed-by: waddlesplash <[email protected]>
2020-07-06 14:09:27 +00:00
Niels Sascha Reedijk c12a0f8ebb Synchronize userguide with most recent translations 2020-05-30 10:43:56 +01:00
Niels Sascha Reedijk 53884b83aa AboutSystem: activate and update credits for hr and eo
Change-Id: Ie50b96823ad684bcaba39a85728a2ab2cf676613
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2785
Reviewed-by: waddlesplash <[email protected]>
(cherry picked from commit 4f00c9cd558bfaf583a5de33dfcd619a9307d57c)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2802
2020-05-24 15:54:00 +00:00
Niels Sascha Reedijk 15aa3a02a3 Documentation: add userguide in fur, id, ro and tr
Change-Id: Iee02ec9c62a3fdf14920c3b08ebb97c282a5aa91
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2788
Reviewed-by: waddlesplash <[email protected]>
(cherry picked from commit 5527f11778f75240d3df349f9a513e54ba088bb4)
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2789
2020-05-23 17:52:52 +00:00
Niels Sascha Reedijk 9094f0c24f AboutSystem: localize copyright string
Change-Id: Ia43004bbe56bebdb32bcfd3394135ffb9b9914af
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2711
Reviewed-by: waddlesplash <[email protected]>
2020-05-16 17:39:30 +00:00
Niels Sascha Reedijk 899fffc069 AboutSystem: synchronize translators with contributors from Pootle
Change-Id: Ia25ab186dc799a52d537bea2233842cc7e01500f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2663
Reviewed-by: waddlesplash <[email protected]>
2020-05-15 01:52:37 +00:00
Niels Sascha Reedijk 4bd6250035 Translations: remove various languages
* Greek (el) and Korean (ko) no longer made the norm to be included on the image.
* For bg, sl, hr, eo and cs, there were leftovers that should have been removed before.
2020-05-09 09:22:37 +01:00
Niels Sascha Reedijk 0cc9a12ae0 Installer: fix an issue where file attributes were not copied
The issue was introduced when the original CopyFile() and CopyFolder() methods
were integrated into a single recursive Copy() method in
bf551d3889

The installer originally followed the principle that attributes are not copied
for target directories that already exist. Unfortunately the new logic to
filter out that case disables attribute copying in recursive calls of this
method, thus breaking things like bookmarks and tracker templates.

Fixes #15913

Change-Id: I0dfe5ce30fdc78cfd4e3695b4b4e8c23b4848100
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2600
Reviewed-by: Adrien Destugues <[email protected]>
Reviewed-by: leorize <[email protected]>
2020-05-08 13:00:04 +00:00
Niels Sascha Reedijk 765a734ad4 Add signature to libmedia.so.
Also remove superflous data from libpackage.rdef

This should fix #15958

Change-Id: I76991030541dca12a2dfdd9282f02274a461ed2a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2561
Reviewed-by: Adrien Destugues <[email protected]>
2020-05-03 18:55:57 +00:00