Started work on tests for fr::HttpRequest.
Fixed the final POST data variable containing header data it shouldn't (\r\n\r\n).
Fixed fr::Http::header_exists, and family, not converting things to lowercase first.
fr::HttpSocket has been removed.
fr::Sendable has been added. Classes can inherit this if they want to be sendable through sockets. Both fr::Http (which is inherited by fr::HttpRequest and fr::HttpResponse), and fr::Packet inherit this, to allow them to be sent through fr::Socket::send()/fr::Socket::receive().
Fixed broken fr::SocketSelector and fr::SocketReactor, as they no longer accepted fr::Listener's due to fr::Listener no longer inheriting fr::Socket.
Fixed Content-Length header being added to Http responses even if there's a pre-existing one.
Fixed header parsing sometimes adding a carriage return to the header value.
Removed useless copy/move constructors from HttpResponse, causing issues.
fr::TcpSocket checked if the recv response was greater than 0, which created issues as 0 is a valid result if no data was received and no error occurred.
fr::HttpResponse::construct() now adds in a content-length header.
fr::HttpResponse::parse trims the body if it's larger than content length.
fr::Http::set_uri() now prepends a '/' if one's not provided.
Fixed fr::Http::parse_header from cutting off the end of headers.
Build errors have been fixed, but there are build warnings remaining about unsafe conversions, because Visual C++'s network conversion functions have a differing return type to mine. To be fixed in the future.
fr::Listener's destructor wasn't virtual, so children's destructors weren't being called.
fr::TcpListener did not have a destructor, and so did not close its socket on destruction.
fr::SSLListener now uses fr::TcpListener's 'listen' function instead of its own, as a temporary hack, as mbedtls does not support setting the address families.
Added get/set functions to the listeners for their socket descriptors.
Allows the parsing of full URLs into easy chunks. Added as a helper class for users of the library dealing with URLs, and to potentially replace some of the HTTP parsing code in the future.
fr::Http::get_mimetype(filename) will return the mimetype of a given filename or file extention. This should be used to set the 'content-type' header when creating fr::HttpResponses.
Can be used by inheriting the 'pack' and 'unpack' members of fr::Packetable. The 'pack' function should add your class members to the packet, and the 'unpack' function should take them back out.
Fixed deadlock in fr::Socket::receive.
Fixed fr::Packet's second constructor not delegating to first, causing it's intenal buffer to remain unitialised.
Greatly improvded fr::Packet>> performance.
Added buffer overflow protection to fr::Packet>>.
Added fr::Packet::reset_read_cursor to reset the packet data read position back to the beginning.