http://www.acme.com/software/thttpd/#releasenotes
Compiled on 32 and 64bit, ran PoorMan, and verified it served webpage and shows logs correctly.
Change-Id: I23fdf0f9910089aa8e24bb66ed7fb49b065b5577
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4404
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
This change adds dual-stack IPv6 support to the PoorMan web server,
which will listen on all available IPv4 and IPv6 addresses and
respond to both.
This change also does some necessary plumbing to support the
output of nicely-formatted IPv6 addresses for request logging.
Change-Id: I0ce7691222f0233e2e098d67e6293b9e58d7486d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3539
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Unlike the last commit, I am not sure whether the memcpy/memsets
in here are properly safe to do. (They look OK, but a lot of them
involve template classes that probably should not make such
assumptions.)
But the code has worked so far, so let's disable the -Werror so
we can move forward with GCC 8 for now.
The ICU class is named MessageFormat, but on Haiku, it sounds too much
like something related to BMessage (which it isn't in the slightest)
and not part of the Locale system. It works almost entirely with BStrings,
so naming it BStringFormat makes much more sense.
OK'ed by PulkoMandy and Humdinger.
If a HEAD request was sent to PoorMan, for example from curl
("curl --HEAD http://x.x.x.x") then the client would hang due to the connection
never being closed.
In PoorManServer::_Worker, after httpd_start_request() is called, a null
file_address is used to detect when libhttpd has already sent a directory
listing. In this situation, PoorMan assumes libhttpd already fully handled the
request. However httpd_start_request() didn't properly set this flag for HEAD
requests. In the if block for a null file_address, the file descriptor was
incorrectly invalidated, which prevented the connection from closing. Fixing
this revealed two more bugs. The first is libhttpd was not actually sending
the http headers for HEAD directory listing requests. The second is
PoorManServer would increment its hit count for HEAD directory listing
requests. This change also refactors file_address to a more sensible name and
type that reflects its use.
Signed-off-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
Fixes #13347.
This file uses a mix of tab styles, which gcc6 will warn about because
it sees "misleading indentation". Fix the function where this happens.
Fixes #12759.
According to the HIG, button labels should be verbs implying actions.
Replace the "default" button with "create public_html", which is what
will happen if you click it.
Thanks to KapiX for the suggestion.
UpdateText must return a pointer to a fixed buffer, whcih BString.String
isn't, if the sctring is modified.
Copy the data to a char* we can use as a fixed position buffer.
* Instead of parsing the pattern everytime Format() is called, parse it
only once when the object is created.
* Adjust all callers to make use of the feature and reuse the instance
as much as possible. This also allows calling B_TRANSLATE only once
instead of everytime the formatting needs to be done. We use either a
static instance (when the message pattern is constant) or a field (when
it is not known to be constant).
* Since the BMessageFormat instances are now reused, add locking to
avoid race conditions (ICU itself is thread safe, but the format pattern
is recreated when the locale is changed)
* ... and adjust all callers
* Remove NumberFormatImpl: we rely on ICU to provide this and it can be
fully wrapped into the C++ file. The class was a stub anyway.
* "Monetary" format is included in NumberFormat for now. There may be a
more generic solution to handle monetary and BTimeUnitFormat (and other
arbitrary units)
* From now on, the gcc-specific system libraries (libgcc, libsupc++ and
libstdc++) are provided by separate packages built along with gcc:
- gcc_syslibs contains the shared libraries (libgcc_s.so, libsupc++.so and
libstdc++.so)
- gcc_syslibs_devel contains the static libraries and both c++ and gcc
headers
The shared libraries now make proper use of symbol versioning and there
are version-specific symlinks
* The buildsystem has been adjusted to no longer use the libraries and
headers from the cross-compiler, but use the ones provided by the
above-mentioned packages. The only exception is that the 32-bit libraries
required for the bootloader of the x86_64 architecture are still taken
from the cross-compiler.
* Instead of faking libstdc++.so from libstdc++.a, use libstdc++.so
from the gcc_syslibs build feature for everything except x86_gcc2.
* Use libgcc_s.so from the gcc_syslibs build feature for everything but
x86_gcc2 (which still carries libgcc as part of libroot.so).
* Drop filtering of libgcc objects for libroot, as that is no longer
necessary since we're only using libgcc-as-single-object for libroot
with x86_gcc2, where the filtered object file doesn't exist. Should
the objects that used to be filtered cause any problems as part of
libgcc_s.so, we can always filter them as part of the gcc build.
* Use libsupc++.so from the gcc_syslibs build feature for everything but
x86_gcc2.
* Adjust all Jamfiles accordingly.
* Deactivate building of faked libstdc++.so for non-x86-gcc2. For
x86_gcc2, we still build libstdc++.so from the sources in the Haiku
source tree as part of the Haiku build .
* Put gcc_syslibs package onto the image, when needed.
instead or additionally to string.h, in preparation for functions move.
* moves str[n]casecmp() functions and others to strings.h.
* strings.h doesn't include string.h anymore.
* this solves #10949
* All packaging architecture dependent variables do now have a
respective suffix and are set up for each configured packaging
architecture, save for the kernel and boot loader variables, which
are still only set up for the primary architecture.
For convenience TARGET_PACKAGING_ARCH, TARGET_ARCH, TARGET_LIBSUPC++,
and TARGET_LIBSTDC++ are set to the respective values for the primary
packaging architecture by default.
* Introduce a set of MultiArch* rules to help with building targets for
multiple packaging architectures. Generally the respective targets are
(additionally) gristed with the packaging architecture. For libraries
the additional grist is usually omitted for the primary architecture
(e.g. libroot.so and <x86>libroot.so for x86_gcc2/x86 hybrid), so that
Jamfiles for targets built only for the primary architecture don't
need to be changed.
* Add multi-arch build support for all targets needed for the stage 1
cross devel package as well as for libbe (untested).
Added SetFlags(B_CLOSE_ON_ESCAPE) or SetShortcut(index, B_ESCAPE) to BAlerts
depending if the result gets used later in the code, or if it's a one-button
BAlert.
* rename B_TRANSLATE_CONTEXT to B_TRANSLATION_CONTEXT and
B_TRANSLATE_WITH_CONTEXT to B_TRANSLATE_CONTEXT, squashing a TODO
* adjust all uses of both macros in Haiku's source tree
* use correct header guard for collecting/Catalog.h
The renamed macros require adjustments to all external applications
using catalogs.
The names of settings files should not be localized. Pointed by
Sergei Reznikov (Diver). Thanx!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40367 a95241bf-73f2-0310-859d-f6bbb57e9c96
Updated Haiku apps to use sentence-case. What a huge undertaking...
The files where I had to apply the patch manually (for mysterious
reasons) have also gotten a whitespace cleanup. I've proof-read
everything so hopefully there should be no problems.
This should be the final part of #5169.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35049 a95241bf-73f2-0310-859d-f6bbb57e9c96