Skip to content

Commit ba6dbad

Browse files
author
Vadim Averin
committed
Final cleanup
1 parent 27daa3c commit ba6dbad

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

ydb/library/yql/udfs/common/ip_base/lib/ip_base_udf.h

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ namespace {
4646
return addr;
4747
}
4848

49-
TMaybe<TString> SerializeAddress(const TIpv6Address& addr) {
49+
TString SerializeAddress(const TIpv6Address& addr) {
50+
Y_ENSURE(addr.Type() == TIpv6Address::Ipv4 || addr.Type() == TIpv6Address::Ipv6);
5051
TString res;
5152
ui128 x = addr;
5253
if (addr.Type() == TIpv6Address::Ipv4) {
@@ -69,16 +70,16 @@ namespace {
6970
ui8(x >> 8 & 0xff), ui8(x & 0xff)
7071
};
7172
res = TString(reinterpret_cast<const char *>(&addr6), sizeof addr6);
72-
} else {
73-
return Nothing();
7473
}
7574
return res;
7675
}
7776

7877
SIMPLE_STRICT_UDF(TFromString, TOptionalString(TAutoMapString)) {
7978
TIpv6Address addr = TIpv6Address::FromString(args[0].AsStringRef());
80-
auto res = SerializeAddress(addr);
81-
return res ? valueBuilder->NewString(res.GetRef()) : TUnboxedValue();
79+
if (addr.Type() != TIpv6Address::Ipv4 && addr.Type() != TIpv6Address::Ipv6) {
80+
return TUnboxedValue();
81+
}
82+
return valueBuilder->NewString(SerializeAddress(addr));
8283
}
8384

8485
SIMPLE_UDF(TToString, char*(TAutoMapString)) {
@@ -124,7 +125,7 @@ namespace {
124125
} else if (ref.Size() == 4) {
125126
TIpv6Address addr4 = DeserializeAddress(ref);
126127
auto addr6 = TIpv6Address(ui128(addr4) | ui128(0xFFFF) << 32, TIpv6Address::Ipv6);
127-
return valueBuilder->NewString(SerializeAddress(addr6).GetRef());
128+
return valueBuilder->NewString(SerializeAddress(addr6));
128129
} else {
129130
ythrow yexception() << "Incorrect size of input, expected "
130131
<< "4 or 16, got " << ref.Size();
@@ -154,7 +155,7 @@ namespace {
154155
<< "4 or 16, got " << ref.Size();
155156
}
156157
TIpv6Address beg = LowerBoundForPrefix(addr, subnetSize);
157-
return valueBuilder->NewString(SerializeAddress(beg).GetRef());
158+
return valueBuilder->NewString(SerializeAddress(beg));
158159
}
159160

160161
#define EXPORTED_IP_BASE_UDF \

0 commit comments

Comments
 (0)