diff --git a/maker/golang/xdb/maker.go b/maker/golang/xdb/maker.go index 8f5986b..c4558e3 100644 --- a/maker/golang/xdb/maker.go +++ b/maker/golang/xdb/maker.go @@ -285,7 +285,8 @@ func (m *Maker) Start() error { var dataLen = len(seg.Region) if dataLen < 1 { // @TODO: could this even be a case ? - return fmt.Errorf("empty region info for segment '%s'", seg) + // return fmt.Errorf("empty region info for segment '%s'", seg) + // Allow empty region info since 2024/09/24 } var _offset = 0 diff --git a/maker/golang/xdb/util.go b/maker/golang/xdb/util.go index e10d093..ae21b1d 100644 --- a/maker/golang/xdb/util.go +++ b/maker/golang/xdb/util.go @@ -142,9 +142,10 @@ func IterateSegments(handle *os.File, before func(l string), cb func(seg *Segmen return fmt.Errorf("start ip(%s) should not be greater than end ip(%s)", ps[0], ps[1]) } - if len(ps[2]) < 1 { - return fmt.Errorf("empty region info in segment line `%s`", l) - } + // Allow empty region info since 2024/09/24 + // if len(ps[2]) < 1 { + // return fmt.Errorf("empty region info in segment line `%s`", l) + // } var seg = &Segment{ StartIP: sip, diff --git a/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Maker.java b/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Maker.java index 4cd378e..eb793a6 100644 --- a/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Maker.java +++ b/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Maker.java @@ -178,9 +178,11 @@ public class Maker { // apply the field filtering final String region = Util.regionFiltering(seg.region, fields); - if (region.length() < 1) { - throw new Exception("empty region info for segment `"+seg+"`"); - } + + // allow empty region + // if (region.length() < 1) { + // throw new Exception("empty region info for segment `"+seg+"`"); + // } segments.add(new Segment(seg.startIP, seg.endIP, region)); last = seg; @@ -235,7 +237,8 @@ public class Maker { // get the utf-8 bytes of the region info final byte[] regionBuff = seg.region.getBytes(bytesCharset); if (regionBuff.length < 1) { - throw new Exception("empty region info for segment `"+seg+"`"); + // allow empty region info + // throw new Exception("empty region info for segment `"+seg+"`"); } else if (regionBuff.length > 0xFFFF) { throw new Exception("too long region info `"+seg.region+"`: should be less than 65535 bytes"); } diff --git a/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Segment.java b/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Segment.java index 853df5e..c051156 100644 --- a/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Segment.java +++ b/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Segment.java @@ -169,10 +169,11 @@ public class Segment { throw new Exception("start ip("+ps[0]+") should not be greater than end ip("+ps[1]+")"); } - if (ps[2].isEmpty()) { - br.close(); - throw new Exception("empty region info in segment line `"+ps[2]+"`"); - } + // allow empty region info + // if (ps[2].isEmpty()) { + // br.close(); + // throw new Exception("empty region info in segment line `"+ps[2]+"`"); + // } final Segment seg = new Segment(sip, eip, ps[2]); // check and set the last segment