]>
git.tdb.fi Git - libs/net.git/log
Mikko Rasa [Fri, 9 Dec 2022 22:18:32 +0000 (00:18 +0200)]
Prefer range-based for loops where possible
Mikko Rasa [Fri, 9 Dec 2022 22:04:07 +0000 (00:04 +0200)]
Use the override specifier when overriding
Mikko Rasa [Fri, 9 Dec 2022 22:03:22 +0000 (00:03 +0200)]
Mark special member functions as defaulted where appropriate
Mikko Rasa [Fri, 9 Dec 2022 21:00:40 +0000 (23:00 +0200)]
Use a static local variable for assigning packet IDs
This avoids the need of a definition for the static member variable of
a template class.
Mikko Rasa [Fri, 9 Dec 2022 19:51:20 +0000 (21:51 +0200)]
Use deque instead of list for resolver task queue
Mikko Rasa [Fri, 9 Dec 2022 18:35:24 +0000 (20:35 +0200)]
Add a function to close all HTTP connections
This can be useful for graceful shutdown at program exit.
Mikko Rasa [Fri, 9 Dec 2022 18:32:46 +0000 (20:32 +0200)]
Don't allow duplicate listen calls
Also add a function to check if the socket is already listening
Mikko Rasa [Fri, 9 Dec 2022 18:31:16 +0000 (20:31 +0200)]
Adjust exception classes and messages
Mikko Rasa [Fri, 9 Dec 2022 18:18:12 +0000 (20:18 +0200)]
Remove unnecessary destructors from exception classes
Mikko Rasa [Fri, 9 Dec 2022 17:54:16 +0000 (19:54 +0200)]
Reject HTTP messages starting with a linefeed
It would make str[lf-1] invalid. Also ignore the carriage return at the
end of the first line when parsing a response.
Mikko Rasa [Fri, 9 Dec 2022 17:26:55 +0000 (19:26 +0200)]
Emit signal_end_of_file after clearing events
This ensures that the state remains consistent even if a slot throws.
Mikko Rasa [Fri, 9 Dec 2022 16:48:23 +0000 (18:48 +0200)]
Use standard fixed-width integer types
Mikko Rasa [Fri, 9 Dec 2022 16:28:52 +0000 (18:28 +0200)]
Update getopt usage with positional arguments
Mikko Rasa [Fri, 9 Dec 2022 16:25:54 +0000 (18:25 +0200)]
Update hash function call
Mikko Rasa [Fri, 9 Dec 2022 16:25:09 +0000 (18:25 +0200)]
Use size_t to represent sizes
Mikko Rasa [Fri, 9 Dec 2022 16:04:59 +0000 (18:04 +0200)]
Bump the library version and C++ standard
Mikko Rasa [Fri, 27 Sep 2019 21:38:06 +0000 (00:38 +0300)]
Allow creating an Http::Server without immediately listening
Mikko Rasa [Fri, 27 Sep 2019 21:37:41 +0000 (00:37 +0300)]
Use an IPv6 socket for Http::Server
Mikko Rasa [Thu, 26 Sep 2019 23:03:57 +0000 (02:03 +0300)]
Fix several errors in FormData parsing
It was terminating early if a part happened to be of certain length.
Extra whitespace was included at the end of parts and there was also an
out-of-bounds memory access.
Mikko Rasa [Thu, 26 Sep 2019 20:55:01 +0000 (23:55 +0300)]
Improve error handling
Particularly of asynchronous operations
Mikko Rasa [Tue, 24 Sep 2019 22:37:00 +0000 (01:37 +0300)]
Add parsing for different styles of HTTP headers
Mikko Rasa [Mon, 23 Sep 2019 11:44:57 +0000 (14:44 +0300)]
Support serializing bool fields in Protocol
Mikko Rasa [Mon, 23 Sep 2019 11:42:04 +0000 (14:42 +0300)]
Allow the query part of a URL to be empty
This can happen when submitting an empty form with the GET method.
Mikko Rasa [Sat, 21 Sep 2019 15:23:01 +0000 (18:23 +0300)]
Prevent serializing packets without an ID
An attempt at such may arise from sending a structure intended to be used
as part of other packets, but not a packet on its own.
Mikko Rasa [Sat, 21 Sep 2019 15:06:36 +0000 (18:06 +0300)]
Fix the polarity of O_CLOEXEC for Socket
Mikko Rasa [Sat, 21 Sep 2019 14:53:29 +0000 (17:53 +0300)]
Provide more information about exceptions in Http::Server
Mikko Rasa [Sat, 21 Sep 2019 14:52:34 +0000 (17:52 +0300)]
Remove name from an unused variable
Mikko Rasa [Sat, 21 Sep 2019 14:52:14 +0000 (17:52 +0300)]
Update a deprecated header
Mikko Rasa [Thu, 24 Jan 2019 01:21:23 +0000 (03:21 +0200)]
Add method to query bound status of a socket
Mikko Rasa [Tue, 5 Dec 2017 06:40:46 +0000 (08:40 +0200)]
Implement the required virtual functions in Socket
Mikko Rasa [Tue, 5 Dec 2017 06:39:14 +0000 (08:39 +0200)]
Fix a flag handling bug in Socket::Private::set_block
Mikko Rasa [Tue, 1 Nov 2016 22:00:55 +0000 (00:00 +0200)]
Move the definition of PacketTypeDef<T>::class_id to a separate header
Defining it in protocol.h may cause multiple definitions to appear across
the program and there are cases where they don't get collapsed to one.
DLLs on Windows are one such case. The _impl header is to be included in
files that add packet definitions to a protocol and nowhere else.
Mikko Rasa [Wed, 12 Oct 2016 09:59:00 +0000 (12:59 +0300)]
Increase Communicator buffer size to 64k
This is the current maximum size for a packet, and there isn't really
any need to use a smaller buffer.
Mikko Rasa [Sun, 9 Oct 2016 17:34:33 +0000 (20:34 +0300)]
Some largely cosmetic touch-up
Mikko Rasa [Sun, 9 Oct 2016 17:30:03 +0000 (20:30 +0300)]
Support compound types in network packets
Mikko Rasa [Sun, 9 Oct 2016 15:08:38 +0000 (18:08 +0300)]
Fill in a missing parameter for check_sys_error
This was supposed to be in
b069cfc but somehow didn't make it into the
commit.
Mikko Rasa [Sun, 9 Oct 2016 15:03:24 +0000 (18:03 +0300)]
Acutally implement Protocol::get_hash
Also trigger an error in Communicator if the hashes don't match
Mikko Rasa [Sun, 9 Oct 2016 13:56:40 +0000 (16:56 +0300)]
Refactor most of Communicator::send to be in the .cpp file
Mikko Rasa [Sun, 9 Oct 2016 13:53:23 +0000 (16:53 +0300)]
Massive overhaul of the Protocol class
Makes the serialization machinery more flexible and reduces the number of
virtual function calls when de/serializing packets.
Mikko Rasa [Sun, 25 Sep 2016 22:35:31 +0000 (01:35 +0300)]
Add error check to accept
Mikko Rasa [Sun, 25 Sep 2016 22:28:16 +0000 (01:28 +0300)]
Move most platform-specific code into overlay directories
Unix socket addresses can now be constructed on Windows, but can't be
actually used with sockets.
Mikko Rasa [Wed, 14 Sep 2016 11:27:15 +0000 (14:27 +0300)]
Minor cleanup
Mikko Rasa [Wed, 14 Sep 2016 11:26:50 +0000 (14:26 +0300)]
Use the correct #ifdef for Windows
Mikko Rasa [Wed, 14 Sep 2016 10:51:56 +0000 (13:51 +0300)]
Support asynchronous name resolution in Http::Client
Mikko Rasa [Wed, 14 Sep 2016 10:50:29 +0000 (13:50 +0300)]
Implement an asynchronous name resolver class
Mikko Rasa [Mon, 16 May 2016 15:15:29 +0000 (18:15 +0300)]
Fix header name normalization logic
If the name begins with a hyphen, the following letter shall be
uppercased.
Mikko Rasa [Mon, 16 May 2016 15:15:10 +0000 (18:15 +0300)]
Use string::size_type to store string offsets
Mikko Rasa [Mon, 16 May 2016 15:13:38 +0000 (18:13 +0300)]
Add a class for parsing submitted form data
parse_query in utils.h already did it for query strings, but not for
POST requests.
Mikko Rasa [Mon, 16 May 2016 09:06:19 +0000 (12:06 +0300)]
Add a utility struct for parsing complex header values
It's not used to store headers in Message since not all headers follow
the same syntax. User-Agent in particular may have semicolons which are
not parameters separators.
Mikko Rasa [Wed, 20 Apr 2016 21:00:21 +0000 (00:00 +0300)]
Add the most common redirection statuses
Mikko Rasa [Tue, 19 Apr 2016 07:39:55 +0000 (10:39 +0300)]
Provide a method for the application to cancel connection keep-alive
Mikko Rasa [Tue, 19 Apr 2016 07:38:57 +0000 (10:38 +0300)]
Adhere to the spec with connection keep-alive
Recognize it case-insensitively and add the header on the response.
Mikko Rasa [Tue, 19 Apr 2016 07:34:42 +0000 (10:34 +0300)]
Use connection keepalive on async responses too
Mikko Rasa [Tue, 19 Apr 2016 07:31:27 +0000 (10:31 +0300)]
Hide Http::Server destructor in the library
Otherwise sigc::signal destructor will be emitted in the including file,
requiring explicit linking with libsigc++.
Mikko Rasa [Thu, 19 Nov 2015 08:17:18 +0000 (10:17 +0200)]
Use a typecast to avoid a signedness mismatch warning
Mikko Rasa [Fri, 10 Apr 2015 18:08:22 +0000 (21:08 +0300)]
Set event types on Windows if connect finished immediately
Mikko Rasa [Tue, 7 Apr 2015 10:58:25 +0000 (13:58 +0300)]
Include winsock2.h first
It wants to get included before windows.h
Mikko Rasa [Mon, 6 Apr 2015 22:24:18 +0000 (01:24 +0300)]
Reject requests with a relative path
As per the HTTP specification
Mikko Rasa [Mon, 6 Apr 2015 22:23:12 +0000 (01:23 +0300)]
Correct a typo in a multiple inclusion guard
Mikko Rasa [Mon, 6 Apr 2015 22:19:21 +0000 (01:19 +0300)]
Provide a signal to handle errors from Communicator
Since Communicator is typically used with an EventDispatcher, it can be
inconvenient to just throw exceptions out. Handling them would require
wrapping the EventDispatcher's tick call in a try block, and the exact
source of the exception would be lost.
Mikko Rasa [Thu, 22 Jan 2015 14:23:19 +0000 (16:23 +0200)]
Implement connection keep-alive in HttpServer
Mikko Rasa [Thu, 22 Jan 2015 14:20:00 +0000 (16:20 +0200)]
Make Request API consistent with itself and others
Request::from_url was incorrectly creating requests with unencoded URLs.
Mikko Rasa [Thu, 22 Jan 2015 14:16:14 +0000 (16:16 +0200)]
Add 405 (method not allowed) status
Since the HttpServer class allows either GET or POST and returns 501 (not
implemented) for others, programs using it may wish to further limit
processing to GET requests only.
Mikko Rasa [Thu, 22 Jan 2015 12:10:44 +0000 (14:10 +0200)]
Add shutdown support for client sockets
Mikko Rasa [Mon, 1 Apr 2013 18:32:19 +0000 (21:32 +0300)]
Fix 64-bit compilation
Mikko Rasa [Sat, 1 Dec 2012 10:00:59 +0000 (12:00 +0200)]
Add the target type to a lexical_cast invocation
Mikko Rasa [Mon, 15 Oct 2012 10:25:32 +0000 (13:25 +0300)]
Update Build and .gitignore files
Mikko Rasa [Mon, 15 Oct 2012 09:07:22 +0000 (12:07 +0300)]
Add support for AF_UNIX
Mikko Rasa [Mon, 8 Oct 2012 20:38:31 +0000 (23:38 +0300)]
Hide the set_option and get_option functions in socket_private.h
These depend on a system-specific type, so they can't be in a public
header.
Mikko Rasa [Mon, 8 Oct 2012 20:37:44 +0000 (23:37 +0300)]
Fix some compilation problems
Mikko Rasa [Mon, 31 Oct 2011 14:33:56 +0000 (16:33 +0200)]
Don't crash on errors without verbose mode
Mikko Rasa [Wed, 5 Oct 2011 08:30:41 +0000 (11:30 +0300)]
Fix some header names
Mikko Rasa [Wed, 10 Aug 2011 19:31:42 +0000 (22:31 +0300)]
Add an example of Http::Server usage
Mikko Rasa [Wed, 10 Aug 2011 19:31:26 +0000 (22:31 +0300)]
Make httpget handle socket errors
Mikko Rasa [Wed, 10 Aug 2011 19:30:52 +0000 (22:30 +0300)]
Don't generate a duplicate signal when the connection is closed
Mikko Rasa [Wed, 10 Aug 2011 19:30:29 +0000 (22:30 +0300)]
Fix storage order of InetAddr::addr
Mikko Rasa [Wed, 10 Aug 2011 19:18:46 +0000 (22:18 +0300)]
Fix URL regex
Mikko Rasa [Wed, 10 Aug 2011 19:18:26 +0000 (22:18 +0300)]
Change Client::signal_socket_error parameter to reference
Mikko Rasa [Wed, 10 Aug 2011 18:44:40 +0000 (21:44 +0300)]
Add example of Http::Client usage
Mikko Rasa [Wed, 10 Aug 2011 18:42:48 +0000 (21:42 +0300)]
Store pending responses in a map
Mikko Rasa [Wed, 10 Aug 2011 18:41:09 +0000 (21:41 +0300)]
One more exception change
Mikko Rasa [Wed, 10 Aug 2011 18:14:42 +0000 (21:14 +0300)]
Merge branch 'http-master'
Conflicts:
.gitignore
Build
Mikko Rasa [Wed, 10 Aug 2011 18:11:56 +0000 (21:11 +0300)]
Prepare for assimilating msphttp
Mikko Rasa [Wed, 10 Aug 2011 18:07:48 +0000 (21:07 +0300)]
Prepare for assimilation into mspnet
Mikko Rasa [Wed, 10 Aug 2011 18:07:08 +0000 (21:07 +0300)]
Change listen address construction
Mikko Rasa [Wed, 10 Aug 2011 18:05:52 +0000 (21:05 +0300)]
Use maputils.h
Mikko Rasa [Wed, 10 Aug 2011 18:05:29 +0000 (21:05 +0300)]
StreamListenSocket renamed as StreamServerSocket
Mikko Rasa [Wed, 10 Aug 2011 18:05:12 +0000 (21:05 +0300)]
Exception changes
Mikko Rasa [Wed, 10 Aug 2011 18:03:38 +0000 (21:03 +0300)]
Pass an exception to signal_socket_error instead of error code
Mikko Rasa [Wed, 10 Aug 2011 18:03:05 +0000 (21:03 +0300)]
Socket::close was removed
Mikko Rasa [Wed, 10 Aug 2011 17:49:39 +0000 (20:49 +0300)]
Add an overload for resolve that takes host and service separately
Mikko Rasa [Wed, 10 Aug 2011 16:30:16 +0000 (19:30 +0300)]
Add back get_port functions to InetAddr and Inet6Addr
Mikko Rasa [Wed, 10 Aug 2011 16:28:39 +0000 (19:28 +0300)]
Create wildcard addresses if * is passed as host
Mikko Rasa [Wed, 10 Aug 2011 15:18:27 +0000 (18:18 +0300)]
Add missing virtual keywords
Mikko Rasa [Wed, 10 Aug 2011 15:12:04 +0000 (18:12 +0300)]
Rename SockAddr::from_sys to new_from_sys
Mikko Rasa [Sun, 7 Aug 2011 08:45:44 +0000 (11:45 +0300)]
Don't let exceptions from the socket fall out of Client::data_available
Mikko Rasa [Sat, 6 Aug 2011 20:59:00 +0000 (23:59 +0300)]
Add linefeeds to error response content
Mikko Rasa [Sat, 6 Aug 2011 20:57:25 +0000 (23:57 +0300)]
Drop Id tags and copyright notices from source files
Mikko Rasa [Sat, 6 Aug 2011 20:53:52 +0000 (23:53 +0300)]
Style update: spaces around assignments
Mikko Rasa [Sat, 6 Aug 2011 21:02:13 +0000 (00:02 +0300)]
Pass an exception to signal_connect_finished