diff --git a/web/package/agama-web-ui.changes b/web/package/agama-web-ui.changes index f32f71c230..398cf686d1 100644 --- a/web/package/agama-web-ui.changes +++ b/web/package/agama-web-ui.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Fri Dec 20 12:53:41 UTC 2024 - David Diaz + +- Fix netmask handling to avoid a silent connection form error + (gh#agama-project/agama#1846). + ------------------------------------------------------------------- Tue Dec 10 14:43:08 UTC 2024 - David Diaz diff --git a/web/src/utils/network.test.ts b/web/src/utils/network.test.ts index bef4e87528..d4f4deb3a8 100644 --- a/web/src/utils/network.test.ts +++ b/web/src/utils/network.test.ts @@ -81,6 +81,7 @@ describe("#ip4_from_text", () => { describe("formatIp", () => { it("returns the given IPv4 address in the X.X.X.X/YY format", () => { expect(formatIp({ address: "1.2.3.4", prefix: 24 })).toEqual("1.2.3.4/24"); + expect(formatIp({ address: "1.2.3.4", prefix: "255.255.255.0" })).toEqual("1.2.3.4/24"); }); }); diff --git a/web/src/utils/network.ts b/web/src/utils/network.ts index 1f9a037082..c0189076be 100644 --- a/web/src/utils/network.ts +++ b/web/src/utils/network.ts @@ -78,7 +78,9 @@ const isValidIpPrefix = (value: IPAddress["prefix"]) => { * @param value - An netmask or a network prefix * @return prefix for the given netmask or prefix */ -const ipPrefixFor = (value: string): number => { +const ipPrefixFor = (value: string | number): number => { + if (typeof value === "number") return value; + if (value.match(/^\d+$/)) { return parseInt(value); } else { @@ -132,7 +134,7 @@ const formatIp = (addr: IPAddress): string => { if (addr.prefix === undefined) { return `${addr.address}`; } else { - return `${addr.address}/${addr.prefix}`; + return `${addr.address}/${ipPrefixFor(addr.prefix)}`; } };