History log of /haiku/src/kits/network/libnetservices/UrlProtocolListener.cpp
Revision Date Author Comments
# 70b63f18 11-Sep-2021 Niels Sascha Reedijk <niels.reedijk@gmail.com>

netservices: remove all old conditional code

Change-Id: Idf3773c081ce103647c5dbea6e82c22bfc5606c9


# 3ca5eec0 03-Jul-2021 Adrien Destugues <pulkomandy@pulkomandy.tk>

libnetservices: fix handling of HEAD requests and 204 responses

We were incorrectly reporting a B_IO_ERROR for these requests because we
could not read the content after the headers. There is no content in
these cases.

Add an unit test for both HEAD and 204 status, checking that there is no
content and the headers are correct.

Fixes #16885.

Change-Id: I98fefc5c604253bb2545b50395b7af9f8834def0
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4142
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Niels Sascha Reedijk <niels.reedijk@gmail.com>


# 324b426d 15-Jun-2021 Murai Takashi <tmurai01@gmail.com>

libnetservices: Fix DEBUG build

Add iostream header since BUrlProtocolListener::DebugMessage() need it.

Change-Id: I4665d5675b33b1cb5beba123d07a38c3edbbeb6f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4095
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Niels Sascha Reedijk <niels.reedijk@gmail.com>


# 5fcf71f5 14-May-2021 X512 <danger_mail@list.ru>

Remove unneeded iostream includes

It cause adding new entry to executable init array for each translation unit.

Change-Id: I1e2d7946da03c001de7721948bc9af8188e8b317
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3981
Reviewed-by: X512 <danger_mail@list.ru>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 78b14420 24-Jul-2020 Leorize <leorize+oss@disroot.org>

libbnetapi: BUrlRequest now outputs to BDataIO

Previously, BUrlRequest returns data received via a callback that can't
return any value. This approach have several issues:

- It's not possible to signify failures to the request.
- Users have to implement custom listeners just to handle the common
case of outputting to a buffer/file/etc.
- The received data has to be serialized into BMessage when
BUrlProtocolDispatchingListener is employed. This can cause a
noticible slowdown in real-world scenarios as evident by #10748.

With this change, BUrlRequest will output directly into a BDataIO, which
exposes a richer API for request handlers to work with (for example a
BitTorrent client can request a BPositionIO for non-linear data
delivery), as well as simplifying common cases for users.

The adaptation only requires one additional API:
BHttpRequest::SetStopOnError(). This API simply instructs the HTTP
request handler to cancel the request if an HTTP error is occurred.

Change-Id: I4160884d77bff0e7678e0a623e2587987704443a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3084
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 3e27f8d5 17-Jul-2020 Leorize <leorize+oss@disroot.org>

libbnetservices: BUrlResult is no longer a BArchivable

The switch to make BUrlResult serializable was debuted in
f9e1854f198d4200f21a9cbe29fdfb0fabbe192f with the rationale is that
BHttpRequest auto-redirection might cause the headers to become
obsolete by the time a client process the BMessage received from
BUrlProtocolDispatchingListener.

With the change to BHttpRequest to not notify listeners when
auto-redirection is enabled, this is no longer the case and the
serialization code can go away now. This simplifies BUrlResult and its
subclasses, and gain us some performance for clients using
BUrlProtocolDispatchingListener as the result object no longer has to be
serialized.

This also change the ABI of BUrlProtocolListener::HeadersReceived to no
longer passing a BUrlResult.

Additionally, BUrlResult and BHttpResult now express the size of the content
as an off_t, thus allowing results larger than 4 GB.

Change-Id: I9dd29a8b26fdd9aa8e5bbad8d1728084f136312d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3082
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# e95af9e0 28-Jan-2021 Niels Sascha Reedijk <niels.reedijk@gmail.com>

libnetservices.a: final cleanup after progress size change to off_t

Final fallout of the hrev54936 change

Change-Id: Id4836359f49dffbef76916db7fb7b51dd1e490d8


# ce64ffdb 22-Jan-2021 Niels Sascha Reedijk <niels.reedijk@gmail.com>

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 <pulkomandy@gmail.com>


# 35d8d4d1 19-Jan-2021 Niels Sascha Reedijk <niels.reedijk@gmail.com>

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 <pulkomandy@gmail.com>