From: Yu Watanabe Date: Tue, 7 Nov 2023 13:41:37 +0000 (+0900) Subject: sd-dhcp-client: gracefully ignore OFFER with Rapid Commit option X-Git-Tag: v255-rc2~98 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c4efe0e51e4e06da6dfed21dbf7efa5e4bcff64d;p=thirdparty%2Fsystemd.git sd-dhcp-client: gracefully ignore OFFER with Rapid Commit option Fixes #29904. --- diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c index 97250d47e84..8a94685ba7c 100644 --- a/src/libsystemd-network/sd-dhcp-client.c +++ b/src/libsystemd-network/sd-dhcp-client.c @@ -1609,9 +1609,13 @@ static int client_parse_message( return log_dhcp_client_errno(client, SYNTHETIC_ERRNO(ENOMSG), "received rapid ACK without Rapid Commit option, ignoring."); } else if (r == DHCP_OFFER) { - if (lease->rapid_commit) - return log_dhcp_client_errno(client, SYNTHETIC_ERRNO(ENOMSG), - "received OFFER with Rapid Commit option, ignoring"); + if (lease->rapid_commit) { + /* Some RFC incompliant servers provides an OFFER with a rapid commit option. + * See https://github.com/systemd/systemd/issues/29904. + * Let's support such servers gracefully. */ + log_dhcp_client(client, "received OFFER with Rapid Commit option, ignoring."); + lease->rapid_commit = false; + } if (lease->lifetime == 0 && client->fallback_lease_lifetime > 0) lease->lifetime = client->fallback_lease_lifetime; } else