mirror of
https://github.com/RGBCube/serenity
synced 2025-07-31 18:27:34 +00:00
LibCore: Make UDPServer::receive() return ErrorOr<ByteBuffer>
This is a first step towards handling OOM errors instead of just crashing the program. Now UDPServer's method `receive()` return memory allocation errors explicitly with help of ErrorOr. This removes one FIXME and make a bunch of new ones. :(
This commit is contained in:
parent
9ae9d82a03
commit
767529ebf5
6 changed files with 19 additions and 17 deletions
|
@ -122,7 +122,8 @@ DHCPv4Client::DHCPv4Client(Vector<DeprecatedString> interfaces_with_dhcp_enabled
|
|||
{
|
||||
m_server = Core::UDPServer::construct(this);
|
||||
m_server->on_ready_to_receive = [this] {
|
||||
auto buffer = m_server->receive(sizeof(DHCPv4Packet));
|
||||
// TODO: we need to handle possible errors here somehow
|
||||
auto buffer = MUST(m_server->receive(sizeof(DHCPv4Packet)));
|
||||
dbgln_if(DHCPV4CLIENT_DEBUG, "Received {} bytes", buffer.size());
|
||||
if (buffer.size() < sizeof(DHCPv4Packet) - DHCPV4_OPTION_FIELD_MAX_LENGTH + 1 || buffer.size() > sizeof(DHCPv4Packet)) {
|
||||
dbgln("we expected {}-{} bytes, this is a bad packet", sizeof(DHCPv4Packet) - DHCPV4_OPTION_FIELD_MAX_LENGTH + 1, sizeof(DHCPv4Packet));
|
||||
|
|
|
@ -28,7 +28,7 @@ DNSServer::DNSServer(Object* parent)
|
|||
ErrorOr<void> DNSServer::handle_client()
|
||||
{
|
||||
sockaddr_in client_address;
|
||||
auto buffer = receive(1024, client_address);
|
||||
auto buffer = TRY(receive(1024, client_address));
|
||||
auto optional_request = Packet::from_raw_packet(buffer.data(), buffer.size());
|
||||
if (!optional_request.has_value()) {
|
||||
dbgln("Got an invalid DNS packet");
|
||||
|
|
|
@ -51,7 +51,8 @@ MulticastDNS::MulticastDNS(Object* parent)
|
|||
|
||||
void MulticastDNS::handle_packet()
|
||||
{
|
||||
auto buffer = receive(1024);
|
||||
// TODO: propagate the error somehow
|
||||
auto buffer = MUST(receive(1024));
|
||||
auto optional_packet = Packet::from_raw_packet(buffer.data(), buffer.size());
|
||||
if (!optional_packet.has_value()) {
|
||||
dbgln("Got an invalid mDNS packet");
|
||||
|
@ -167,7 +168,8 @@ Vector<Answer> MulticastDNS::lookup(Name const& name, RecordType record_type)
|
|||
return {};
|
||||
}
|
||||
|
||||
auto buffer = receive(1024);
|
||||
// TODO: propagate the error somehow
|
||||
auto buffer = MUST(receive(1024));
|
||||
if (buffer.is_empty())
|
||||
return {};
|
||||
auto optional_packet = Packet::from_raw_packet(buffer.data(), buffer.size());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue