diff options
author | lapshov <lapshov@yandex-team.ru> | 2022-02-10 16:49:39 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:49:39 +0300 |
commit | 1ef52da9919aaa7ec7e3c51da7fdaa637ab133b7 (patch) | |
tree | 5d5cb817648f650d76cf1076100726fd9b8448e8 | |
parent | 4f36f44b1e216dca1f44ada8d126e7b70f05da2f (diff) | |
download | ydb-1ef52da9919aaa7ec7e3c51da7fdaa637ab133b7.tar.gz |
Restoring authorship annotation for <lapshov@yandex-team.ru>. Commit 2 of 2.
37 files changed, 550 insertions, 550 deletions
diff --git a/library/cpp/cache/cache.h b/library/cpp/cache/cache.h index aa387ef110..6dc997076d 100644 --- a/library/cpp/cache/cache.h +++ b/library/cpp/cache/cache.h @@ -5,7 +5,7 @@ #include <util/generic/intrlist.h> #include <util/generic/hash_set.h> #include <util/generic/vector.h> -#include <util/generic/yexception.h> +#include <util/generic/yexception.h> #include <utility> template <class TValue> @@ -57,7 +57,7 @@ public: struct THash { size_t operator()(const TItem& item) const { - return ::THash<TKey>()(item.Key); + return ::THash<TKey>()(item.Key); } }; }; @@ -427,7 +427,7 @@ public: TCache(TListType&& list, bool multiValue = false) : Index() , List(std::move(list)) - , MultiValue(multiValue) + , MultiValue(multiValue) { } @@ -435,10 +435,10 @@ public: Clear(); } - size_t Size() const { - return Index.size(); - } - + size_t Size() const { + return Index.size(); + } + TIterator Begin() const { return TIterator(Index.begin()); } @@ -458,28 +458,28 @@ public: return TIterator(Index.find(TItem(key))); } - // note: it shouldn't touch 'value' if it returns false. + // note: it shouldn't touch 'value' if it returns false. bool PickOut(const TKey& key, TValue* value) { Y_ASSERT(value); - TIndexIterator it = Index.find(TItem(key)); - if (it == Index.end()) - return false; - *value = it->Value; - List.Erase(const_cast<TItem*>(&*it)); - Index.erase(it); + TIndexIterator it = Index.find(TItem(key)); + if (it == Index.end()) + return false; + *value = it->Value; + List.Erase(const_cast<TItem*>(&*it)); + Index.erase(it); Y_ASSERT(Index.size() == List.GetSize()); - return true; - } - + return true; + } + bool Insert(const std::pair<TKey, TValue>& p) { return Insert(p.first, p.second); } bool Insert(const TKey& key, const TValue& value) { - TItem tmpItem(key, value); - if (!MultiValue && Index.find(tmpItem) != Index.end()) - return false; - TIndexIterator it = Index.insert(tmpItem); + TItem tmpItem(key, value); + if (!MultiValue && Index.find(tmpItem) != Index.end()) + return false; + TIndexIterator it = Index.insert(tmpItem); TItem* insertedItem = const_cast<TItem*>(&*it); auto removedItem = List.Insert(insertedItem); @@ -497,8 +497,8 @@ public: } void Update(const TKey& key, const TValue& value) { - if (MultiValue) - ythrow yexception() << "TCache: can't \"Update\" in multicache"; + if (MultiValue) + ythrow yexception() << "TCache: can't \"Update\" in multicache"; TIterator it = Find(key); if (it != End()) { Erase(it); @@ -548,23 +548,23 @@ public: protected: TIndex Index; TListType List; - bool MultiValue; + bool MultiValue; TIterator FindByItem(TItem* item) { std::pair<TIndexIterator, TIndexIterator> p = Index.equal_range(*item); - // we have to delete the exact unlinked item (there may be multiple items for one key) - TIndexIterator it; + // we have to delete the exact unlinked item (there may be multiple items for one key) + TIndexIterator it; for (it = p.first; it != p.second; ++it) - if (&*it == item) - break; + if (&*it == item) + break; return (it == p.second ? End() : TIterator(it)); - } - + } + void EraseFromIndex(TItem* item) { TDeleter::Destroy(item->Value); - TIterator it = FindByItem(item); + TIterator it = FindByItem(item); Y_ASSERT(it != End()); - Index.erase(it.Iter); + Index.erase(it.Iter); } }; @@ -579,7 +579,7 @@ class TLRUCache: public TCache<TKey, TValue, TLRUList<TKey, TValue, TSizeProvide using TListType = TLRUList<TKey, TValue, TSizeProvider>; typedef TCache<TKey, TValue, TListType, TDeleter> TBase; -public: +public: TLRUCache(size_t maxSize, bool multiValue = false, const TSizeProvider& sizeProvider = TSizeProvider()) : TBase(TListType(maxSize, sizeProvider), multiValue) { @@ -591,10 +591,10 @@ public: TValue& GetOldest() { return TBase::List.GetOldest()->Value; } - - TIterator FindOldest() { + + TIterator FindOldest() { return TBase::Empty() ? TBase::End() : this->FindByItem(TBase::List.GetOldest()); - } + } size_t TotalSize() const { return TBase::List.GetTotalSize(); diff --git a/library/cpp/cache/ut/cache_ut.cpp b/library/cpp/cache/ut/cache_ut.cpp index 3f54a232a0..329872cfde 100644 --- a/library/cpp/cache/ut/cache_ut.cpp +++ b/library/cpp/cache/ut/cache_ut.cpp @@ -313,17 +313,17 @@ Y_UNIT_TEST_SUITE(TCacheTest) { Y_UNIT_TEST(MultiCacheTest) { typedef TLRUCache<int, TString> TCache; - TCache s(3, true); - UNIT_ASSERT(s.Insert(1, "abcd")); - UNIT_ASSERT(s.Insert(1, "bcde")); - UNIT_ASSERT(s.Insert(2, "fghi")); - UNIT_ASSERT(s.Insert(2, "ghij")); - // (1, "abcd") will be deleted - UNIT_ASSERT(*s.Find(1) == "bcde"); - // (1, "bcde") will be promoted - UNIT_ASSERT(*s.FindOldest() == "fghi"); + TCache s(3, true); + UNIT_ASSERT(s.Insert(1, "abcd")); + UNIT_ASSERT(s.Insert(1, "bcde")); + UNIT_ASSERT(s.Insert(2, "fghi")); + UNIT_ASSERT(s.Insert(2, "ghij")); + // (1, "abcd") will be deleted + UNIT_ASSERT(*s.Find(1) == "bcde"); + // (1, "bcde") will be promoted + UNIT_ASSERT(*s.FindOldest() == "fghi"); } - + struct TMyDelete { static int count; template <typename T> diff --git a/library/cpp/charset/doccodes.h b/library/cpp/charset/doccodes.h index 2181aeb4c9..75c87adf9e 100644 --- a/library/cpp/charset/doccodes.h +++ b/library/cpp/charset/doccodes.h @@ -49,7 +49,7 @@ enum ECharset { CODES_CP1129, CODES_CP1131, CODES_CP1133, - CODES_CP1161, // [40] + CODES_CP1161, // [40] CODES_CP1162, CODES_CP1163, CODES_CP1258, @@ -59,7 +59,7 @@ enum ECharset { CODES_CP850, CODES_CP852, CODES_CP853, - CODES_CP856, // [50] + CODES_CP856, // [50] CODES_CP857, CODES_CP858, CODES_CP860, @@ -69,7 +69,7 @@ enum ECharset { CODES_CP864, CODES_CP865, CODES_CP869, - CODES_CP874, // [60] + CODES_CP874, // [60] CODES_CP922, CODES_HP_ROMAN8, CODES_ISO646_CN, @@ -79,7 +79,7 @@ enum ECharset { CODES_ISO8859_14, CODES_JISX0201, CODES_KOI8_T, - CODES_MAC_ARABIC, // [70] + CODES_MAC_ARABIC, // [70] CODES_MAC_CENTRALEUROPE, CODES_MAC_CROATIAN, CODES_MAC_GREEK, @@ -89,7 +89,7 @@ enum ECharset { CODES_MAC_ROMAN, CODES_MAC_THAI, CODES_MAC_TURKISH, - CODES_RESERVED_2, // [80] reserved code: use it for new encodings before adding them to the end of the list + CODES_RESERVED_2, // [80] reserved code: use it for new encodings before adding them to the end of the list CODES_MULELAO, CODES_NEXTSTEP, CODES_PT154, @@ -101,7 +101,7 @@ enum ECharset { CODES_VISCII, // libiconv multibyte codepages - CODES_BIG5, // [90] + CODES_BIG5, // [90] CODES_BIG5_HKSCS, CODES_BIG5_HKSCS_1999, CODES_BIG5_HKSCS_2001, @@ -111,7 +111,7 @@ enum ECharset { CODES_CP950, CODES_EUC_CN, CODES_EUC_JP, - CODES_EUC_KR, // [100] + CODES_EUC_KR, // [100] CODES_EUC_TW, CODES_GB18030, CODES_GBK, @@ -121,7 +121,7 @@ enum ECharset { CODES_ISO_2022_JP, CODES_ISO_2022_JP_1, CODES_ISO_2022_JP_2, - CODES_ISO_2022_KR, // [110] + CODES_ISO_2022_KR, // [110] CODES_JOHAB, CODES_SHIFT_JIS, diff --git a/library/cpp/containers/comptrie/comptrie_builder.inl b/library/cpp/containers/comptrie/comptrie_builder.inl index dd683bc96f..f273fa6571 100644 --- a/library/cpp/containers/comptrie/comptrie_builder.inl +++ b/library/cpp/containers/comptrie/comptrie_builder.inl @@ -453,10 +453,10 @@ bool TCompactTrieBuilder<T, D, S>::Find(const TSymbol* key, size_t keylen, TData template <class T, class D, class S> bool TCompactTrieBuilder<T, D, S>::FindLongestPrefix( const TSymbol* key, size_t keylen, size_t* prefixlen, TData* value) const { - return Impl->FindLongestPrefix(key, keylen, prefixlen, value); -} - -template <class T, class D, class S> + return Impl->FindLongestPrefix(key, keylen, prefixlen, value); +} + +template <class T, class D, class S> size_t TCompactTrieBuilder<T, D, S>::Save(IOutputStream& os) const { return Impl->Save(os); } @@ -686,8 +686,8 @@ bool TCompactTrieBuilder<T, D, S>::TCompactTrieBuilderImpl::FindEntryImpl(const template <class T, class D, class S> bool TCompactTrieBuilder<T, D, S>::TCompactTrieBuilderImpl::FindLongestPrefix( const TSymbol* key, size_t keylen, size_t* prefixlen, TData* value) const { - using namespace NCompactTrie; - + using namespace NCompactTrie; + if (!keylen) { const char zero = '\0'; const bool ret = FindLongestPrefixImpl(&zero, 1, prefixlen, value); @@ -703,14 +703,14 @@ bool TCompactTrieBuilder<T, D, S>::TCompactTrieBuilderImpl::FindLongestPrefix( *prefixlen = 0; // if we have found empty key, set prefixlen to zero else if (!ret) // try to find value with empty key, because empty key is prefix of a every key ret = FindLongestPrefix(nullptr, 0, prefixlen, value); - + if (ret && prefixlen) *prefixlen /= sizeof(TSymbol); - + return ret; - } + } } - + template <class T, class D, class S> bool TCompactTrieBuilder<T, D, S>::TCompactTrieBuilderImpl::FindLongestPrefixImpl(const char* keyptr, size_t keylen, size_t* prefixLen, TData* value) const { const TNode* node = Root; @@ -722,24 +722,24 @@ bool TCompactTrieBuilder<T, D, S>::TCompactTrieBuilderImpl::FindLongestPrefixImp while (keyTail && (node = node->Subtree()->FindLongestPrefix(keyTail, value, endResult, Packer))) { if (endResult) // no more ways to find prefix and prefix has been found break; - + if (node->IsFinal()) { lastFinalNode = node; lastFinalKeyTail = keyTail; - } - } + } + } if (!endResult && lastFinalNode) { - if (value) + if (value) Packer.UnpackLeaf(lastFinalNode->GetPayload(), *value); keyTail = lastFinalKeyTail; endResult = true; - } + } if (endResult && prefixLen) *prefixLen = keyTail ? key.size() - keyTail.size() : key.size(); return endResult; -} - -template <class T, class D, class S> +} + +template <class T, class D, class S> void TCompactTrieBuilder<T, D, S>::TCompactTrieBuilderImpl::Clear() { DestroyNode(Root); Pool.Clear(); diff --git a/library/cpp/http/fetch/exthttpcodes.cpp b/library/cpp/http/fetch/exthttpcodes.cpp index ce9d683412..acc05650c8 100644 --- a/library/cpp/http/fetch/exthttpcodes.cpp +++ b/library/cpp/http/fetch/exthttpcodes.cpp @@ -158,8 +158,8 @@ static ui16* prepare_flags(http_flag* arg) { // для стандартных кодов ошибок берем флаги из первого кода каждой группы и проставляем их // всем кодам не перечисленным в таблице выше - for (size_t group = 0; group < 1000; group += 100) - for (size_t j = group + 1; j < group + 100; ++j) + for (size_t group = 0; group < 1000; group += 100) + for (size_t j = group + 1; j < group + 100; ++j) flags[j] = flags[group]; // предыдущий цикл затер некоторые флаги перечисленные в таблице выше @@ -171,12 +171,12 @@ static ui16* prepare_flags(http_flag* arg) { } ui16* http2status = prepare_flags(HTTP_FLAG); - + TStringBuf ExtHttpCodeStr(int code) noexcept { - if (code < HTTP_CODE_MAX) { + if (code < HTTP_CODE_MAX) { return HttpCodeStr(code); - } - switch (code) { + } + switch (code) { case HTTP_BAD_RESPONSE_HEADER: return TStringBuf("Bad response header"); case HTTP_CONNECTION_LOST: @@ -257,10 +257,10 @@ TStringBuf ExtHttpCodeStr(int code) noexcept { return TStringBuf("Cached copy for the url is not available"); case HTTP_TIMEDOUT_WHILE_BYTES_RECEIVING: return TStringBuf("Timed out while bytes receiving"); - + // TODO: messages for >2000 codes - + default: return TStringBuf("Unknown HTTP code"); - } -} + } +} diff --git a/library/cpp/http/fetch/exthttpcodes.h b/library/cpp/http/fetch/exthttpcodes.h index a6a0aa31be..6b525052cd 100644 --- a/library/cpp/http/fetch/exthttpcodes.h +++ b/library/cpp/http/fetch/exthttpcodes.h @@ -4,7 +4,7 @@ #include <library/cpp/http/misc/httpcodes.h> enum ExtHttpCodes { - // Custom + // Custom HTTP_EXTENDED = 1000, HTTP_BAD_RESPONSE_HEADER = 1000, HTTP_CONNECTION_LOST = 1001, @@ -137,5 +137,5 @@ static inline int Http2Status(int code) { extern ui16* http2status; return http2status[code & (EXT_HTTP_CODE_MAX - 1)]; } - + TStringBuf ExtHttpCodeStr(int code) noexcept; diff --git a/library/cpp/http/fetch/httpfetcher.h b/library/cpp/http/fetch/httpfetcher.h index 8e1efdc0c2..7fc251afd2 100644 --- a/library/cpp/http/fetch/httpfetcher.h +++ b/library/cpp/http/fetch/httpfetcher.h @@ -52,7 +52,7 @@ public: THttpParser<TCheck>::Init(header, head_request); const char* scheme = HttpUrlSchemeKindToString((THttpURL::TSchemeKind)TAgent::GetScheme()); - size_t schemelen = strlen(scheme); + size_t schemelen = strlen(scheme); if (*path == '/') { header->base = TStringBuf(scheme, schemelen); header->base += TStringBuf("://", 3); @@ -123,8 +123,8 @@ public: header->error = HTTP_HEADER_TOO_LARGE; break; } - } - if (!inheader) { + } + if (!inheader) { maxsize = TCheck::GetMaxBodySize(header); } if (header->http_status >= HTTP_EXTENDED) diff --git a/library/cpp/http/fetch/httpfsm.h b/library/cpp/http/fetch/httpfsm.h index 9d4262f88f..c4abdcd0d2 100644 --- a/library/cpp/http/fetch/httpfsm.h +++ b/library/cpp/http/fetch/httpfsm.h @@ -5,8 +5,8 @@ #include <util/system/maxlen.h> #include <util/datetime/parser.h> -#include <time.h> - +#include <time.h> + struct THttpHeaderParser { static constexpr int ErrFirstlineTypeMismatch = -3; static constexpr int ErrHeader = -2; diff --git a/library/cpp/http/fetch/httpfsm.rl6 b/library/cpp/http/fetch/httpfsm.rl6 index 79fc390efb..eab0328b18 100644 --- a/library/cpp/http/fetch/httpfsm.rl6 +++ b/library/cpp/http/fetch/httpfsm.rl6 @@ -128,8 +128,8 @@ connection = "connection"i def %beg_connection c_tokenlist eoh %set_connect ################# content-encoding ################ action beg_content_encoding { I = HTTP_COMPRESSION_ERROR; } action set_content_encoding { base_hd->compression_method = - ((base_hd->compression_method == HTTP_COMPRESSION_UNSET || - base_hd->compression_method == I) ? + ((base_hd->compression_method == HTTP_COMPRESSION_UNSET || + base_hd->compression_method == I) ? I : (int)HTTP_COMPRESSION_ERROR); } ce_tokenlist = "identity"i %{c(HTTP_COMPRESSION_IDENTITY)} @@ -189,49 +189,49 @@ action set_charset { } } -mime_type = "text/plain"i %{c(MIME_TEXT)} - | "text/html"i %{c(MIME_HTML)} - | "application/pdf"i %{c(MIME_PDF)} - | "application/rtf"i %{c(MIME_RTF)} - | "text/rtf"i %{c(MIME_RTF)} - | "application/msword"i %{c(MIME_DOC)} - | "audio/mpeg"i %{c(MIME_MPEG)} - | "text/xml"i %{c(MIME_XML)} - | "application/xml"i %{c(MIME_XML)} - | "application/rss+xml"i %{c(MIME_RSS)} - | "application/rdf+xml"i %{c(MIME_RSS)} - | "application/atom+xml"i %{c(MIME_RSS)} - | "text/vnd.wap.wml"i %{c(MIME_WML)} - | "application/x-shockwave-flash"i %{c(MIME_SWF)} - | "application/vnd.ms-excel"i %{c(MIME_XLS)} - | "application/vnd.ms-powerpoint"i %{c(MIME_PPT)} - | "image/jpeg"i %{c(MIME_IMAGE_JPG)} - | "image/jpg"i %{c(MIME_IMAGE_JPG)} - | "image/pjpeg"i %{c(MIME_IMAGE_PJPG)} - | "image/png"i %{c(MIME_IMAGE_PNG)} - | "image/gif"i %{c(MIME_IMAGE_GIF)} - | "application/xhtml+xml"i %{c(MIME_XHTMLXML)} - | "application/vnd.openxmlformats-officedocument.wordprocessingml.document"i %{c(MIME_DOCX)} - | "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"i %{c(MIME_XLSX)} - | "application/vnd.openxmlformats-officedocument.presentationml.presentation"i %{c(MIME_PPTX)} - | "application/vnd.oasis.opendocument.text"i %{c(MIME_ODT)} - | "application/vnd.oasis.opendocument.presentation"i %{c(MIME_ODP)} - | "application/vnd.oasis.opendocument.spreadsheet"i %{c(MIME_ODS)} - | "application/vnd.oasis.opendocument.graphics"i %{c(MIME_ODG)} - | "image/x-ms-bmp"i %{c(MIME_IMAGE_BMP)} - | "image/bmp"i %{c(MIME_IMAGE_BMP)} - | "audio/x-wav"i %{c(MIME_WAV)} - | ( "application/x-tar"i | "application/x-ustar"i | "application/x-gtar"i | "application/zip"i | "application/x-archive"i - | "application/x-bzip2"i | "application/x-rar"i ) %{c(MIME_ARCHIVE)} - | "application/x-dosexec"i %{c(MIME_EXE)} +mime_type = "text/plain"i %{c(MIME_TEXT)} + | "text/html"i %{c(MIME_HTML)} + | "application/pdf"i %{c(MIME_PDF)} + | "application/rtf"i %{c(MIME_RTF)} + | "text/rtf"i %{c(MIME_RTF)} + | "application/msword"i %{c(MIME_DOC)} + | "audio/mpeg"i %{c(MIME_MPEG)} + | "text/xml"i %{c(MIME_XML)} + | "application/xml"i %{c(MIME_XML)} + | "application/rss+xml"i %{c(MIME_RSS)} + | "application/rdf+xml"i %{c(MIME_RSS)} + | "application/atom+xml"i %{c(MIME_RSS)} + | "text/vnd.wap.wml"i %{c(MIME_WML)} + | "application/x-shockwave-flash"i %{c(MIME_SWF)} + | "application/vnd.ms-excel"i %{c(MIME_XLS)} + | "application/vnd.ms-powerpoint"i %{c(MIME_PPT)} + | "image/jpeg"i %{c(MIME_IMAGE_JPG)} + | "image/jpg"i %{c(MIME_IMAGE_JPG)} + | "image/pjpeg"i %{c(MIME_IMAGE_PJPG)} + | "image/png"i %{c(MIME_IMAGE_PNG)} + | "image/gif"i %{c(MIME_IMAGE_GIF)} + | "application/xhtml+xml"i %{c(MIME_XHTMLXML)} + | "application/vnd.openxmlformats-officedocument.wordprocessingml.document"i %{c(MIME_DOCX)} + | "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"i %{c(MIME_XLSX)} + | "application/vnd.openxmlformats-officedocument.presentationml.presentation"i %{c(MIME_PPTX)} + | "application/vnd.oasis.opendocument.text"i %{c(MIME_ODT)} + | "application/vnd.oasis.opendocument.presentation"i %{c(MIME_ODP)} + | "application/vnd.oasis.opendocument.spreadsheet"i %{c(MIME_ODS)} + | "application/vnd.oasis.opendocument.graphics"i %{c(MIME_ODG)} + | "image/x-ms-bmp"i %{c(MIME_IMAGE_BMP)} + | "image/bmp"i %{c(MIME_IMAGE_BMP)} + | "audio/x-wav"i %{c(MIME_WAV)} + | ( "application/x-tar"i | "application/x-ustar"i | "application/x-gtar"i | "application/zip"i | "application/x-archive"i + | "application/x-bzip2"i | "application/x-rar"i ) %{c(MIME_ARCHIVE)} + | "application/x-dosexec"i %{c(MIME_EXE)} | "application/x-gzip"i %{c(MIME_GZIP)} | "application/json"i %{c(MIME_JSON)} | ("application/javascript"i | "text/javascript"i) %{c(MIME_JAVASCRIPT)} | "application/vnd.android.package-archive"i %{c(MIME_APK)} | ("image/x-icon"i | "image/vnd.microsoft.icon"i) %{c(MIME_IMAGE_ICON)} ; - - + + charset_name = token_char+ >clear_buf $update_buf; mime_param = "charset"i ws* '=' ws* '"'? charset_name '"'? %set_charset @2 | token ws* '=' ws* '"'? token '"'? @1 @@ -249,9 +249,9 @@ last_modified = "last-modified"i def %beg_modtime http_date eoh %set_modtime; ################# location ######################## action set_location { - while (buflen > 0 && (buf[buflen - 1] == ' ' || buf[buflen - 1] == '\t')) { - buflen --; - } + while (buflen > 0 && (buf[buflen - 1] == ' ' || buf[buflen - 1] == '\t')) { + buflen --; + } if (hd && buflen < FETCHER_URL_MAX) { hd->location = TStringBuf(buf, buflen); } @@ -259,34 +259,34 @@ action set_location { action set_status_303{ if (hd) hd->http_status = 303; } -url = url_char+ >clear_buf $update_buf; -loc_url = any_text_char+ >clear_buf $update_buf; -location = "location"i def loc_url eoh %set_location; +url = url_char+ >clear_buf $update_buf; +loc_url = any_text_char+ >clear_buf $update_buf; +location = "location"i def loc_url eoh %set_location; refresh = "refresh"i def int ';' lws "url="i loc_url eoh %set_location; ################# x-robots-tag ################ action set_x_robots { if (hd && AcceptingXRobots) { - if (I > 0) - hd->x_robots_tag |= I; - - int pos = (I > 0 ? I : -I); - for (size_t i = 0; i < 5; ++i) - if (abs(pos) & (1 << i)) // permissive flags take priority - hd->x_robots_state[i] = (I < 0) ? '1' : (hd->x_robots_state[i] != '1') ? '0' : '1'; - } + if (I > 0) + hd->x_robots_tag |= I; + + int pos = (I > 0 ? I : -I); + for (size_t i = 0; i < 5; ++i) + if (abs(pos) & (1 << i)) // permissive flags take priority + hd->x_robots_state[i] = (I < 0) ? '1' : (hd->x_robots_state[i] != '1') ? '0' : '1'; + } } action accept_x_robots { AcceptingXRobots = (bool)I; } -x_robots_directive = "none"i %{c(3)} | "all"i %{c(-3)} - | "noindex"i %{c(1)} | "index"i %{c(-1)} - | "nofollow"i %{c(2)} | "follow"i %{c(-2)} - | "noarchive"i %{c(4)} | "archive"i %{c(-4)} +x_robots_directive = "none"i %{c(3)} | "all"i %{c(-3)} + | "noindex"i %{c(1)} | "index"i %{c(-1)} + | "nofollow"i %{c(2)} | "follow"i %{c(-2)} + | "noarchive"i %{c(4)} | "archive"i %{c(-4)} | "noyaca"i %{c(16)} - | "noodp"i %{c(8)}; + | "noodp"i %{c(8)}; any_value = (any_text_char - [, \t])+ (lws (any_text_char - [, \t])+)*; any_key = (any_text_char - [:, \t])+ (lws (any_text_char - [:, \t])+)*; @@ -311,12 +311,12 @@ action set_canonical { rel_canonical = "link"i def '<' url ">;"i lws "rel"i lws '=' lws "\"canonical\"" eoh %set_canonical; ################# hreflang ############### action set_hreflang { - bool first = (hreflangpos == hd->hreflangs); + bool first = (hreflangpos == hd->hreflangs); size_t len2 = (first ? 0 : 1) + langlen + 1 + buflen; if (langlen && len2 < hreflangspace) { - if (!first) { - *(hreflangpos++) = '\t'; - } + if (!first) { + *(hreflangpos++) = '\t'; + } memcpy(hreflangpos, langstart, langlen); hreflangpos += langlen; *(hreflangpos++) = ' '; @@ -342,13 +342,13 @@ hreflang = "link"i def '<' url '>' lws ";" lws ( ( "rel"i lws '=' lws quote "alternate" quote lws ';' lws "hreflang"i lws '=' lws quote lang quote ) | ( "hreflang"i lws '=' lws quote lang quote lws ';' lws "rel"i lws '=' lws quote "alternate" quote ) ) eoh %set_hreflang; -################# squid_error ################# -action set_squid_error { - hd->squid_error = 1; -} - -squid_error = "X-Yandex-Squid-Error"i def any_text eoh %set_squid_error; - +################# squid_error ################# +action set_squid_error { + hd->squid_error = 1; +} + +squid_error = "X-Yandex-Squid-Error"i def any_text eoh %set_squid_error; + ################# auth ######################## action init_auth { if (auth_hd) @@ -441,20 +441,20 @@ action set_user_agent { user_agent = any_text_char* >clear_buf $update_buf; user_agent_header = "user-agent"i def user_agent eoh %set_user_agent; -############### x-yandex-langregion ################ -action set_langregion { - if (request_hd && buflen < MAX_LANGREGION_LEN) { - buf[buflen++] = 0; - if (request_hd->x_yandex_langregion[0] != 0) { - return -2; - } - memcpy(request_hd->x_yandex_langregion, buf, buflen); - } -} - -langregion = any_text_char* >clear_buf $update_buf; -langregion_header = "x-yandex-langregion"i def langregion eoh %set_langregion; - +############### x-yandex-langregion ################ +action set_langregion { + if (request_hd && buflen < MAX_LANGREGION_LEN) { + buf[buflen++] = 0; + if (request_hd->x_yandex_langregion[0] != 0) { + return -2; + } + memcpy(request_hd->x_yandex_langregion, buf, buflen); + } +} + +langregion = any_text_char* >clear_buf $update_buf; +langregion_header = "x-yandex-langregion"i def langregion eoh %set_langregion; + ############### x-yandex-sourcename ################ action set_sourcename { if (request_hd && buflen < MAXWORD_LEN) { @@ -469,34 +469,34 @@ action set_sourcename { sourcename = any_text_char* >clear_buf $update_buf; sourcename_header = "x-yandex-sourcename"i def sourcename eoh %set_sourcename; -############### x-yandex-requesttype ############### -action set_requesttype { - if (request_hd && buflen < MAXWORD_LEN) { - buf[buflen++] = 0; - if (request_hd->x_yandex_requesttype[0] != 0) { - return -2; - } - memcpy(request_hd->x_yandex_requesttype, buf, buflen); - } -} - -requesttype = any_text_char* >clear_buf $update_buf; -requesttype_header = "x-yandex-requesttype"i def requesttype eoh %set_requesttype; - -################ x-yandex-fetchoptions ############### -action set_fetchoptions { - if (request_hd && buflen < MAXWORD_LEN) { - buf[buflen++] = 0; - if (request_hd->x_yandex_fetchoptions[0] != 0) { - return -2; - } - memcpy(request_hd->x_yandex_fetchoptions, buf, buflen); - } -} - -fetchoptions = any_text_char* >clear_buf $update_buf; -fetchoptions_header = "x-yandex-fetchoptions"i def fetchoptions eoh %set_fetchoptions; - +############### x-yandex-requesttype ############### +action set_requesttype { + if (request_hd && buflen < MAXWORD_LEN) { + buf[buflen++] = 0; + if (request_hd->x_yandex_requesttype[0] != 0) { + return -2; + } + memcpy(request_hd->x_yandex_requesttype, buf, buflen); + } +} + +requesttype = any_text_char* >clear_buf $update_buf; +requesttype_header = "x-yandex-requesttype"i def requesttype eoh %set_requesttype; + +################ x-yandex-fetchoptions ############### +action set_fetchoptions { + if (request_hd && buflen < MAXWORD_LEN) { + buf[buflen++] = 0; + if (request_hd->x_yandex_fetchoptions[0] != 0) { + return -2; + } + memcpy(request_hd->x_yandex_fetchoptions, buf, buflen); + } +} + +fetchoptions = any_text_char* >clear_buf $update_buf; +fetchoptions_header = "x-yandex-fetchoptions"i def fetchoptions eoh %set_fetchoptions; + ################ if-modified-since ################ action set_if_modified_since { if (request_hd) { @@ -576,7 +576,7 @@ message_header = other_header $0 response_header = message_header $0 | auth @1 | accept_ranges @1 - | location @1 + | location @1 | x_robots_tag @1 | rel_canonical @1 | hreflang @1 @@ -588,9 +588,9 @@ request_header = message_header $0 | host_header @1 | user_agent_header @1 | sourcename_header @1 - | requesttype_header @1 - | langregion_header @1 - | fetchoptions_header @1 + | requesttype_header @1 + | langregion_header @1 + | fetchoptions_header @1 | if_modified_since @1 | request_cache_control @1 | response_timeout @1 diff --git a/library/cpp/http/fetch/httpfsm_ut.cpp b/library/cpp/http/fetch/httpfsm_ut.cpp index 05fede5a02..b018e80101 100644 --- a/library/cpp/http/fetch/httpfsm_ut.cpp +++ b/library/cpp/http/fetch/httpfsm_ut.cpp @@ -17,19 +17,19 @@ class THttpHeaderParserTestSuite: public TTestBase { UNIT_TEST(TestLastModifiedCorrupted); UNIT_TEST(TestResponseHeaderOnRequest); UNIT_TEST(TestRequestHeaderOnResponse); - UNIT_TEST(TestXRobotsTagUnknownTags); + UNIT_TEST(TestXRobotsTagUnknownTags); UNIT_TEST(TestXRobotsTagMyBot); UNIT_TEST(TestXRobotsTagOtherBot); UNIT_TEST(TestXRobotsTagUnavailableAfterAware); UNIT_TEST(TestXRobotsTagUnavailableAfterWorks); - UNIT_TEST(TestXRobotsTagOverridePriority); + UNIT_TEST(TestXRobotsTagOverridePriority); UNIT_TEST(TestXRobotsTagDoesNotBreakCharset); UNIT_TEST(TestXRobotsTagAllowsMultiline); UNIT_TEST(TestRelCanonical); UNIT_TEST(TestHreflang); UNIT_TEST(TestHreflangOnLongInput); UNIT_TEST(TestMimeType); - UNIT_TEST(TestRepeatedContentEncoding); + UNIT_TEST(TestRepeatedContentEncoding); UNIT_TEST_SUITE_END(); private: @@ -49,19 +49,19 @@ public: void TestLastModifiedCorrupted(); void TestResponseHeaderOnRequest(); void TestRequestHeaderOnResponse(); - void TestXRobotsTagUnknownTags(); + void TestXRobotsTagUnknownTags(); void TestXRobotsTagMyBot(); void TestXRobotsTagOtherBot(); void TestXRobotsTagUnavailableAfterAware(); void TestXRobotsTagUnavailableAfterWorks(); - void TestXRobotsTagOverridePriority(); + void TestXRobotsTagOverridePriority(); void TestXRobotsTagDoesNotBreakCharset(); void TestXRobotsTagAllowsMultiline(); void TestRelCanonical(); void TestHreflang(); void TestHreflangOnLongInput(); void TestMimeType(); - void TestRepeatedContentEncoding(); + void TestRepeatedContentEncoding(); }; void THttpHeaderParserTestSuite::TestStart() { @@ -91,8 +91,8 @@ void THttpHeaderParserTestSuite::TestRequestHeader() { UNIT_ASSERT_EQUAL(httpRequestHeader.x_yandex_request_priority, DEFAULT_REQUEST_PRIORITY); UNIT_ASSERT_EQUAL(strcmp(httpRequestHeader.x_yandex_sourcename, ""), 0); - UNIT_ASSERT_EQUAL(strcmp(httpRequestHeader.x_yandex_requesttype, ""), 0); - UNIT_ASSERT_EQUAL(strcmp(httpRequestHeader.x_yandex_fetchoptions, ""), 0); + UNIT_ASSERT_EQUAL(strcmp(httpRequestHeader.x_yandex_requesttype, ""), 0); + UNIT_ASSERT_EQUAL(strcmp(httpRequestHeader.x_yandex_fetchoptions, ""), 0); TestFinish(); UNIT_ASSERT_EQUAL(httpRequestHeader.max_age, DEFAULT_MAX_AGE); } @@ -161,8 +161,8 @@ void THttpHeaderParserTestSuite::TestProxyRequestHeader() { "X-Yandex-Response-Timeout: 1000\r\n" "X-Yandex-Request-Priority: 2\r\n" "X-Yandex-Sourcename: orange\r\n" - "X-Yandex-Requesttype: userproxy\r\n" - "X-Yandex-FetchOptions: d;c\r\n" + "X-Yandex-Requesttype: userproxy\r\n" + "X-Yandex-FetchOptions: d;c\r\n" "Cache-control: max-age=100\r\n" "If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT\r\n" "User-Agent: Yandex/1.01.001 (compatible; Win16; I)\r\n" @@ -172,9 +172,9 @@ void THttpHeaderParserTestSuite::TestProxyRequestHeader() { UNIT_ASSERT_EQUAL(httpRequestHeader.http_method, HTTP_METHOD_GET); UNIT_ASSERT_EQUAL(httpRequestHeader.x_yandex_response_timeout, 1000); UNIT_ASSERT_EQUAL(httpRequestHeader.x_yandex_request_priority, 2); - UNIT_ASSERT_EQUAL(strcmp(httpRequestHeader.x_yandex_sourcename, "orange"), 0); - UNIT_ASSERT_EQUAL(strcmp(httpRequestHeader.x_yandex_requesttype, "userproxy"), 0); - UNIT_ASSERT_EQUAL(strcmp(httpRequestHeader.x_yandex_fetchoptions, "d;c"), 0); + UNIT_ASSERT_EQUAL(strcmp(httpRequestHeader.x_yandex_sourcename, "orange"), 0); + UNIT_ASSERT_EQUAL(strcmp(httpRequestHeader.x_yandex_requesttype, "userproxy"), 0); + UNIT_ASSERT_EQUAL(strcmp(httpRequestHeader.x_yandex_fetchoptions, "d;c"), 0); UNIT_ASSERT_EQUAL(httpRequestHeader.max_age, 100); UNIT_ASSERT_VALUES_EQUAL(httpRequestHeader.if_modified_since, TInstant::ParseIso8601Deprecated("1994-10-29 19:43:31Z").TimeT()); @@ -231,7 +231,7 @@ void THttpHeaderParserTestSuite::TestLastModifiedCorrupted() { TestFinish(); } -void THttpHeaderParserTestSuite::TestXRobotsTagUnknownTags() { +void THttpHeaderParserTestSuite::TestXRobotsTagUnknownTags() { TestStart(); THttpHeader httpHeader; httpHeaderParser->Init(&httpHeader); @@ -312,21 +312,21 @@ void THttpHeaderParserTestSuite::TestXRobotsTagUnavailableAfterWorks() { TestFinish(); } -void THttpHeaderParserTestSuite::TestXRobotsTagOverridePriority() { - TestStart(); - THttpHeader httpHeader; - httpHeaderParser->Init(&httpHeader); - const char* headers = - "HTTP/1.1 200 OK\r\n" - "Content-Type: text/html\r\n" - "x-robots-tag: all, none\r\n\r\n"; - i32 result = httpHeaderParser->Execute(headers, strlen(headers)); - UNIT_ASSERT_EQUAL(result, 2); - UNIT_ASSERT_EQUAL(httpHeader.x_robots_state, "11xxx"); - UNIT_ASSERT_EQUAL(httpHeader.x_robots_tag, 3); // NOTE legacy behavior, should be 0 as `all` overrides - TestFinish(); -} - +void THttpHeaderParserTestSuite::TestXRobotsTagOverridePriority() { + TestStart(); + THttpHeader httpHeader; + httpHeaderParser->Init(&httpHeader); + const char* headers = + "HTTP/1.1 200 OK\r\n" + "Content-Type: text/html\r\n" + "x-robots-tag: all, none\r\n\r\n"; + i32 result = httpHeaderParser->Execute(headers, strlen(headers)); + UNIT_ASSERT_EQUAL(result, 2); + UNIT_ASSERT_EQUAL(httpHeader.x_robots_state, "11xxx"); + UNIT_ASSERT_EQUAL(httpHeader.x_robots_tag, 3); // NOTE legacy behavior, should be 0 as `all` overrides + TestFinish(); +} + void THttpHeaderParserTestSuite::TestXRobotsTagDoesNotBreakCharset() { TestStart(); THttpHeader httpHeader; @@ -394,7 +394,7 @@ void THttpHeaderParserTestSuite::TestHreflang() { i32 result = httpHeaderParser->Execute(headers, strlen(headers)); UNIT_ASSERT_VALUES_EQUAL(result, 2); // UNIT_ASSERT_VALUES_EQUAL(strcmp(httpHeader.hreflangs, "x-default http://www.high.ru/;"), 0); - UNIT_ASSERT_VALUES_EQUAL(httpHeader.hreflangs, "x-default http://www.high.ru/\ten_GB http://www.high.ru/en.html\tru_RU.KOI8-r http://www.high.ru/ru.html"); + UNIT_ASSERT_VALUES_EQUAL(httpHeader.hreflangs, "x-default http://www.high.ru/\ten_GB http://www.high.ru/en.html\tru_RU.KOI8-r http://www.high.ru/ru.html"); TestFinish(); } @@ -461,31 +461,31 @@ void THttpHeaderParserTestSuite::TestMimeType() { TestFinish(); } -void THttpHeaderParserTestSuite::TestRepeatedContentEncoding() { - TestStart(); - THttpHeader httpHeader; - httpHeaderParser->Init(&httpHeader); - const char *headers = - "HTTP/1.1 200 OK\r\n" - "Server: nginx\r\n" - "Date: Mon, 15 Oct 2018 10:40:44 GMT\r\n" - "Content-Type: text/plain\r\n" - "Transfer-Encoding: chunked\r\n" - "Connection: keep-alive\r\n" - "Last-Modified: Mon, 15 Oct 2018 03:48:54 GMT\r\n" - "ETag: W/\"5bc40e26-a956d\"\r\n" - "X-Autoru-LB: lb-03-sas.prod.vertis.yandex.net\r\n" - "Content-Encoding: gzip\r\n" - "Content-Encoding: gzip\r\n" - "X-UA-Bot: 1\r\n" - "\r\n"; - i32 result = httpHeaderParser->Execute(headers, strlen(headers)); - UNIT_ASSERT_EQUAL(result, 2); - UNIT_ASSERT_EQUAL(httpHeader.error, 0); - UNIT_ASSERT_EQUAL(httpHeader.compression_method, 3); - TestFinish(); -} - +void THttpHeaderParserTestSuite::TestRepeatedContentEncoding() { + TestStart(); + THttpHeader httpHeader; + httpHeaderParser->Init(&httpHeader); + const char *headers = + "HTTP/1.1 200 OK\r\n" + "Server: nginx\r\n" + "Date: Mon, 15 Oct 2018 10:40:44 GMT\r\n" + "Content-Type: text/plain\r\n" + "Transfer-Encoding: chunked\r\n" + "Connection: keep-alive\r\n" + "Last-Modified: Mon, 15 Oct 2018 03:48:54 GMT\r\n" + "ETag: W/\"5bc40e26-a956d\"\r\n" + "X-Autoru-LB: lb-03-sas.prod.vertis.yandex.net\r\n" + "Content-Encoding: gzip\r\n" + "Content-Encoding: gzip\r\n" + "X-UA-Bot: 1\r\n" + "\r\n"; + i32 result = httpHeaderParser->Execute(headers, strlen(headers)); + UNIT_ASSERT_EQUAL(result, 2); + UNIT_ASSERT_EQUAL(httpHeader.error, 0); + UNIT_ASSERT_EQUAL(httpHeader.compression_method, 3); + TestFinish(); +} + UNIT_TEST_SUITE_REGISTRATION(THttpHeaderParserTestSuite); Y_UNIT_TEST_SUITE(TestHttpChunkParser) { diff --git a/library/cpp/http/fetch/httpheader.h b/library/cpp/http/fetch/httpheader.h index ef4519ead4..b2810bbd41 100644 --- a/library/cpp/http/fetch/httpheader.h +++ b/library/cpp/http/fetch/httpheader.h @@ -5,9 +5,9 @@ #include <library/cpp/mime/types/mime.h> #include <util/system/defaults.h> -#include <util/system/compat.h> +#include <util/system/compat.h> #include <util/generic/string.h> -#include <util/generic/ylimits.h> +#include <util/generic/ylimits.h> #include <util/system/maxlen.h> #include <ctime> @@ -26,9 +26,9 @@ extern const i8 DEFAULT_REQUEST_PRIORITY; /// == -1 extern const i32 DEFAULT_RESPONSE_TIMEOUT; /// == -1 #define HTTP_PREFIX "http://" -#define MAX_LANGREGION_LEN 4 +#define MAX_LANGREGION_LEN 4 #define MAXWORD_LEN 55 - + enum HTTP_COMPRESSION { HTTP_COMPRESSION_UNSET = 0, HTTP_COMPRESSION_ERROR = 1, @@ -105,9 +105,9 @@ public: printf("compression_method: %" PRIi8 "\n", compression_method); printf("transfer_chunked: %" PRIi8 "\n", transfer_chunked); printf("connection_closed: %" PRIi8 "\n", connection_closed); - printf("content_range_start: %" PRIi64 "\n", content_range_start); - printf("content_range_end: %" PRIi64 "\n", content_range_end); - printf("content_range_entity_length: %" PRIi64 "\n", content_range_entity_length); + printf("content_range_start: %" PRIi64 "\n", content_range_start); + printf("content_range_end: %" PRIi64 "\n", content_range_end); + printf("content_range_entity_length: %" PRIi64 "\n", content_range_entity_length); printf("base: \"%s\"\n", base.c_str()); printf("error: %" PRIi16 "\n", error); } @@ -132,26 +132,26 @@ struct THttpHeader: public THttpBaseHeader { public: i8 accept_ranges; i8 squid_error; - i8 x_robots_tag; // deprecated, use x_robots_state instead + i8 x_robots_tag; // deprecated, use x_robots_state instead i16 http_status; TString location; TString rel_canonical; char hreflangs[HREFLANG_MAX]; i64 retry_after; - TString x_robots_state; // 'xxxxx' format, see `library/html/zoneconf/parsefunc.cpp` + TString x_robots_state; // 'xxxxx' format, see `library/html/zoneconf/parsefunc.cpp` public: void Init() { THttpBaseHeader::Init(); accept_ranges = -1; - squid_error = 0; + squid_error = 0; x_robots_tag = 0; rel_canonical.clear(); http_status = -1; location.clear(); hreflangs[0] = 0; retry_after = DEFAULT_RETRY_AFTER; - x_robots_state = "xxxxx"; + x_robots_state = "xxxxx"; } void Print() const { @@ -170,10 +170,10 @@ public: char host[HOST_MAX]; char from[MAXWORD_LEN]; char user_agent[MAXWORD_LEN]; - char x_yandex_langregion[MAX_LANGREGION_LEN]; + char x_yandex_langregion[MAX_LANGREGION_LEN]; char x_yandex_sourcename[MAXWORD_LEN]; - char x_yandex_requesttype[MAXWORD_LEN]; - char x_yandex_fetchoptions[MAXWORD_LEN]; + char x_yandex_requesttype[MAXWORD_LEN]; + char x_yandex_fetchoptions[MAXWORD_LEN]; i8 http_method; i8 x_yandex_request_priority; i32 x_yandex_response_timeout; @@ -190,10 +190,10 @@ public: host[0] = 0; from[0] = 0; user_agent[0] = 0; - x_yandex_langregion[0] = 0; + x_yandex_langregion[0] = 0; x_yandex_sourcename[0] = 0; - x_yandex_requesttype[0] = 0; - x_yandex_fetchoptions[0] = 0; + x_yandex_requesttype[0] = 0; + x_yandex_fetchoptions[0] = 0; http_method = HTTP_METHOD_UNDEFINED; x_yandex_request_priority = DEFAULT_REQUEST_PRIORITY; x_yandex_response_timeout = DEFAULT_RESPONSE_TIMEOUT; diff --git a/library/cpp/http/fetch/httpparser.h b/library/cpp/http/fetch/httpparser.h index 25a5b4385c..769828e4ae 100644 --- a/library/cpp/http/fetch/httpparser.h +++ b/library/cpp/http/fetch/httpparser.h @@ -4,7 +4,7 @@ #include "httpheader.h" #include <library/cpp/mime/types/mime.h> -#include <util/system/yassert.h> +#include <util/system/yassert.h> #include <library/cpp/http/misc/httpcodes.h> template <size_t headermax = 100 << 10, size_t bodymax = 1 << 20> @@ -294,7 +294,7 @@ public: Header = H; Eoferr = 1; Size = 0; - AssumeConnectionClosed = assumeConnectionClosed; + AssumeConnectionClosed = assumeConnectionClosed; HeadRequest = headRequest; return parsHeader ? ParseHeader() : SkipHeader(); } diff --git a/library/cpp/http/fetch/httpzreader.h b/library/cpp/http/fetch/httpzreader.h index fcb95baa56..68eb00853d 100644 --- a/library/cpp/http/fetch/httpzreader.h +++ b/library/cpp/http/fetch/httpzreader.h @@ -4,9 +4,9 @@ #include "httpparser.h" #include "exthttpcodes.h" -#include <util/system/defaults.h> -#include <util/generic/yexception.h> - +#include <util/system/defaults.h> +#include <util/generic/yexception.h> + #include <contrib/libs/zlib/zlib.h> #include <errno.h> @@ -35,8 +35,8 @@ public: , MaxContSize(0) , Buf(nullptr) , ZErr(0) - , ConnectionClosed(0) - , IgnoreTrailingGarbage(true) + , ConnectionClosed(0) + , IgnoreTrailingGarbage(true) { memset(&Stream, 0, sizeof(Stream)); } @@ -50,14 +50,14 @@ public: } } - void SetConnectionClosed(int cc) { - ConnectionClosed = cc; - } - - void SetIgnoreTrailingGarbage(bool ignore) { - IgnoreTrailingGarbage = ignore; - } - + void SetConnectionClosed(int cc) { + ConnectionClosed = cc; + } + + void SetIgnoreTrailingGarbage(bool ignore) { + IgnoreTrailingGarbage = ignore; + } + int Init( THttpHeader* H, int parsHeader, @@ -122,11 +122,11 @@ public: return -1; } if (!IgnoreTrailingGarbage && BufSize == Stream.avail_out && Stream.avail_in > 0) { - Header->error = EXT_HTTP_GZIPERROR; - ZErr = EFAULT; + Header->error = EXT_HTTP_GZIPERROR; + ZErr = EFAULT; Stream.msg = (char*)"trailing garbage"; - return -1; - } + return -1; + } return long(BufSize - Stream.avail_out); case Z_NEED_DICT: @@ -236,8 +236,8 @@ protected: size_t CurContSize, MaxContSize; ui8* Buf; int ZErr; - int ConnectionClosed; - bool IgnoreTrailingGarbage; + int ConnectionClosed; + bool IgnoreTrailingGarbage; }; class zlib_exception: public yexception { diff --git a/library/cpp/http/fetch/ut/ya.make b/library/cpp/http/fetch/ut/ya.make index 42392f2ee0..7486986b36 100644 --- a/library/cpp/http/fetch/ut/ya.make +++ b/library/cpp/http/fetch/ut/ya.make @@ -1,7 +1,7 @@ UNITTEST_FOR(library/cpp/http/fetch) OWNER( - g:zora + g:zora ) SRCS( diff --git a/library/cpp/http/fetch/ya.make b/library/cpp/http/fetch/ya.make index 99cf53da03..7737127463 100644 --- a/library/cpp/http/fetch/ya.make +++ b/library/cpp/http/fetch/ya.make @@ -1,7 +1,7 @@ LIBRARY() OWNER( - g:zora + g:zora ) PEERDIR( @@ -26,7 +26,7 @@ SRCS( httpheader.h httpparser.h httpzreader.h - sockhandler.h + sockhandler.h ) GENERATE_ENUM_SERIALIZATION(httpheader.h) diff --git a/library/cpp/http/misc/httpdate.cpp b/library/cpp/http/misc/httpdate.cpp index 74f024d97f..4a3031bbf4 100644 --- a/library/cpp/http/misc/httpdate.cpp +++ b/library/cpp/http/misc/httpdate.cpp @@ -49,18 +49,18 @@ static const char *months[] = { "Nov", "Dec" }; -int format_http_date(char buf[], size_t size, time_t when) { +int format_http_date(char buf[], size_t size, time_t when) { struct tm tms; - GmTimeR(&when, &tms); + GmTimeR(&when, &tms); #ifndef HTTP_DATE_ISO_8601 return snprintf(buf, size, "%s, %02d %s %04d %02d:%02d:%02d GMT", - wkdays[tms.tm_wday], tms.tm_mday, months[tms.tm_mon], - tms.tm_year + 1900, tms.tm_hour, tms.tm_min, tms.tm_sec); + wkdays[tms.tm_wday], tms.tm_mday, months[tms.tm_mon], + tms.tm_year + 1900, tms.tm_hour, tms.tm_min, tms.tm_sec); #else /* ISO 8601 */ return snprintf(buf, size, "%04d%02d%02dT%02d%02d%02d+0000", - tms.tm_year + 1900, tms.tm_mon + 1, tms.tm_mday, - tms.tm_hour, tms.tm_min, tms.tm_sec); + tms.tm_year + 1900, tms.tm_mon + 1, tms.tm_mday, + tms.tm_hour, tms.tm_min, tms.tm_sec); #endif } diff --git a/library/cpp/ipv6_address/ipv6_address.cpp b/library/cpp/ipv6_address/ipv6_address.cpp index 48c9e8c860..be8fcbae13 100644 --- a/library/cpp/ipv6_address/ipv6_address.cpp +++ b/library/cpp/ipv6_address/ipv6_address.cpp @@ -122,17 +122,17 @@ TString TIpv6Address::ToString(bool PrintScopeId, bool* ok) const noexcept { in_addr addr; ToInAddr(addr); isOk = inet_ntop(AF_INET, &addr, result.begin(), INET_ADDRSTRLEN); - result.resize(result.find('\0')); + result.resize(result.find('\0')); } else if (Type_ == TIpv6Address::Ipv6) { result.resize(INET6_ADDRSTRLEN + 2); in6_addr addr; ToIn6Addr(addr); isOk = inet_ntop(AF_INET6, &addr, result.begin(), INET6_ADDRSTRLEN); - result.resize(result.find('\0')); + result.resize(result.find('\0')); if (PrintScopeId) result += "%" + ::ToString(ScopeId_); - } else { - result = "null"; + } else { + result = "null"; isOk = true; } diff --git a/library/cpp/ipv6_address/ipv6_address.h b/library/cpp/ipv6_address/ipv6_address.h index 6b1b106dfe..1d7eb0b65f 100644 --- a/library/cpp/ipv6_address/ipv6_address.h +++ b/library/cpp/ipv6_address/ipv6_address.h @@ -97,21 +97,21 @@ public: constexpr bool operator<(const TIpv6Address& other) const noexcept { if (Type_ != other.Type_) - return Type_ > other.Type_; - else - return Ip < other.Ip; + return Type_ > other.Type_; + else + return Ip < other.Ip; } constexpr bool operator>(const TIpv6Address& other) const noexcept { if (Type_ != other.Type_) - return Type_ < other.Type_; - else - return Ip > other.Ip; + return Type_ < other.Type_; + else + return Ip > other.Ip; } constexpr bool operator==(const TIpv6Address& other) const noexcept { - return Type_ == other.Type_ && Ip == other.Ip; + return Type_ == other.Type_ && Ip == other.Ip; } constexpr bool operator!=(const TIpv6Address& other) const noexcept { - return Type_ != other.Type_ || Ip != other.Ip; + return Type_ != other.Type_ || Ip != other.Ip; } constexpr bool operator<=(const TIpv6Address& other) const noexcept { diff --git a/library/cpp/monlib/counters/counters.cpp b/library/cpp/monlib/counters/counters.cpp index 726b8b9944..50dca4c577 100644 --- a/library/cpp/monlib/counters/counters.cpp +++ b/library/cpp/monlib/counters/counters.cpp @@ -3,7 +3,7 @@ namespace NMonitoring { char* PrettyNumShort(i64 val, char* buf, size_t size) { - static const char shorts[] = {' ', 'K', 'M', 'G', 'T', 'P', 'E'}; + static const char shorts[] = {' ', 'K', 'M', 'G', 'T', 'P', 'E'}; unsigned i = 0; i64 major = val; i64 minor = 0; diff --git a/library/cpp/monlib/service/service.cpp b/library/cpp/monlib/service/service.cpp index 172398b78f..929efbf816 100644 --- a/library/cpp/monlib/service/service.cpp +++ b/library/cpp/monlib/service/service.cpp @@ -31,9 +31,9 @@ namespace NMonitoring { } TString path = GetPath(); if (!path.StartsWith('/')) { - out << "HTTP/1.1 400 Bad request\r\nConnection: Close\r\n\r\n"; - return; - } + out << "HTTP/1.1 400 Bad request\r\nConnection: Close\r\n\r\n"; + return; + } Headers = &in.Headers(); CgiParams.Scan(Url.Get(THttpURL::FieldQuery)); } catch (...) { @@ -43,7 +43,7 @@ namespace NMonitoring { if (Header.http_method == HTTP_METHOD_POST) TransferData(&in, &PostContent); - + Handler(out, *this); out.Finish(); } catch (...) { @@ -66,8 +66,8 @@ namespace NMonitoring { const TCgiParameters& GetPostParams() const override { if (PostParams.empty() && !PostContent.Buffer().Empty()) const_cast<THttpClient*>(this)->ScanPostParams(); - return PostParams; - } + return PostParams; + } TStringBuf GetPostContent() const override { return TStringBuf(PostContent.Buffer().Data(), PostContent.Buffer().Size()); } @@ -95,7 +95,7 @@ namespace NMonitoring { const THttpHeaders* Headers = nullptr; THttpURL Url; TCgiParameters CgiParams; - TCgiParameters PostParams; + TCgiParameters PostParams; TBufferOutput PostContent; const NAddr::IRemoteAddr* RemoteAddr = nullptr; }; @@ -140,11 +140,11 @@ namespace NMonitoring { , BindAddr(bindAddr) , Port(port) { - try { - Listener.Bind(TIpAddress(bindAddr, port)); - } catch (yexception e) { + try { + Listener.Bind(TIpAddress(bindAddr, port)); + } catch (yexception e) { Y_FAIL("TCoHttpServer::TCoHttpServer: couldn't bind to %s:%d\n", bindAddr.data(), port); - } + } } void TCoHttpServer::Start() { diff --git a/library/cpp/monlib/service/service.h b/library/cpp/monlib/service/service.h index 07f1df9c3a..2f66dddaf8 100644 --- a/library/cpp/monlib/service/service.h +++ b/library/cpp/monlib/service/service.h @@ -20,7 +20,7 @@ namespace NMonitoring { virtual const char* GetURI() const = 0; virtual const char* GetPath() const = 0; virtual const TCgiParameters& GetParams() const = 0; - virtual const TCgiParameters& GetPostParams() const = 0; + virtual const TCgiParameters& GetPostParams() const = 0; virtual TStringBuf GetPostContent() const = 0; virtual HTTP_METHOD GetMethod() const = 0; virtual const THttpHeaders& GetHeaders() const = 0; diff --git a/library/cpp/string_utils/url/url.cpp b/library/cpp/string_utils/url/url.cpp index 94ca7511de..85f4ac5d69 100644 --- a/library/cpp/string_utils/url/url.cpp +++ b/library/cpp/string_utils/url/url.cpp @@ -376,12 +376,12 @@ size_t NormalizeHostName(char* dest, const TStringBuf source, size_t dest_size, size_t len = Min(dest_size - 1, source.length()); memcpy(dest, source.data(), len); dest[len] = 0; - char buf[8] = ":"; - size_t buflen = 1 + ToString(defport, buf + 1, sizeof(buf) - 2); - buf[buflen] = '\0'; + char buf[8] = ":"; + size_t buflen = 1 + ToString(defport, buf + 1, sizeof(buf) - 2); + buf[buflen] = '\0'; char* ptr = strstr(dest, buf); if (ptr && ptr[buflen] == 0) { - len -= buflen; + len -= buflen; *ptr = 0; } strlwr(dest); diff --git a/library/cpp/uri/common.cpp b/library/cpp/uri/common.cpp index b4917023e2..05af1e57d1 100644 --- a/library/cpp/uri/common.cpp +++ b/library/cpp/uri/common.cpp @@ -112,4 +112,4 @@ namespace NUri { return TScheme::SchemeEmpty == t ? "empty" : "unknown"; } -} +} diff --git a/library/cpp/uri/common.h b/library/cpp/uri/common.h index 682c8b6387..8025357763 100644 --- a/library/cpp/uri/common.h +++ b/library/cpp/uri/common.h @@ -145,7 +145,7 @@ namespace NUri { // Cases interpreted for processing (if required): // (effects on result of Parse method) //============================== - + // path needs normalization // (simplification of directory tree: /../, /./, etc. FEATURE_NAME(PathOperation), diff --git a/library/cpp/uri/parsefsm.rl6 b/library/cpp/uri/parsefsm.rl6 index c79e537326..7097723650 100644 --- a/library/cpp/uri/parsefsm.rl6 +++ b/library/cpp/uri/parsefsm.rl6 @@ -458,7 +458,7 @@ ) ; - write data; + write data; }%% @@ -469,7 +469,7 @@ bool TParser::doParse(const char* str_beg, size_t length) const char* p = str_beg; const char* pe = str_beg + length; const char* eof = pe; - int cs; + int cs; #define BEG(ptr, fld) startSection (ptr, TField::Field ## fld); #define END(ptr, fld) finishSection(ptr, TField::Field ## fld); diff --git a/library/cpp/uri/uri.h b/library/cpp/uri/uri.h index 422c95cd61..3b6c19fe4a 100644 --- a/library/cpp/uri/uri.h +++ b/library/cpp/uri/uri.h @@ -432,7 +432,7 @@ namespace NUri { // Info methods int Compare(const TUri& A, int flags = FlagUrlFields) const; - + int CompareField(EField fld, const TUri& url) const; const TStringBuf& GetField(EField fld) const { diff --git a/library/cpp/uri/uri_ut.cpp b/library/cpp/uri/uri_ut.cpp index bac723e523..2ebd83fc93 100644 --- a/library/cpp/uri/uri_ut.cpp +++ b/library/cpp/uri/uri_ut.cpp @@ -264,21 +264,21 @@ namespace NUri { TUri url; URL_TEST(url, test); } - + Y_UNIT_TEST(test02) { TTest test = { "http://host", TFeature::FeaturesAll, TState::ParsedOK, "http", "", "", "host", 80, "/", "", ""}; TUri url; URL_TEST(url, test); } - + Y_UNIT_TEST(test03) { TTest test = { "https://host", TFeature::FeatureSchemeFlexible | TFeature::FeatureAllowHostIDN, TState::ParsedOK, "https", "", "", "host", 443, "/", "", ""}; TUri url; URL_TEST(url, test); } - + Y_UNIT_TEST(test04) { TTest test = { "user:pass@host:8080", TFeature::FeaturesAll | TFeature::FeatureNoRelPath | TFeature::FeatureAllowRootless, TState::ParsedOK, "user", "", "", "", 0, "pass@host:8080", "", ""}; @@ -288,7 +288,7 @@ namespace NUri { CMP_URL(url2, test); URL_EQ(url, url2); } - + Y_UNIT_TEST(test05) { TTest test = { "host:8080", TFeature::FeaturesAll | TFeature::FeatureNoRelPath | TFeature::FeatureAllowRootless, TState::ParsedOK, "host", "", "", "", 0, "8080", "", ""}; diff --git a/util/datetime/base.h b/util/datetime/base.h index bf6257594f..5e902b8f63 100644 --- a/util/datetime/base.h +++ b/util/datetime/base.h @@ -75,8 +75,8 @@ bool ParseRFC822DateTime(const char* date, time_t& utcTime); bool ParseRFC822DateTime(const char* date, size_t dateLen, time_t& utcTime); bool ParseHTTPDateTime(const char* date, time_t& utcTime); bool ParseHTTPDateTime(const char* date, size_t dateLen, time_t& utcTime); -bool ParseX509ValidityDateTime(const char* date, time_t& utcTime); -bool ParseX509ValidityDateTime(const char* date, size_t dateLen, time_t& utcTime); +bool ParseX509ValidityDateTime(const char* date, time_t& utcTime); +bool ParseX509ValidityDateTime(const char* date, size_t dateLen, time_t& utcTime); constexpr long TVdiff(timeval r1, timeval r2) { return (1000000 * (r2.tv_sec - r1.tv_sec) + (r2.tv_usec - r1.tv_usec)); @@ -440,7 +440,7 @@ public: inline struct tm* GmTime(struct tm* tm) const noexcept { time_t clock = Seconds(); - return GmTimeR(&clock, tm); + return GmTimeR(&clock, tm); } /** diff --git a/util/datetime/base_ut.cpp b/util/datetime/base_ut.cpp index 4fc70131bb..afc3f802eb 100644 --- a/util/datetime/base_ut.cpp +++ b/util/datetime/base_ut.cpp @@ -335,7 +335,7 @@ Y_UNIT_TEST_SUITE(TDateTimeTest) { UNIT_ASSERT_EQUAL(ptm1, &tms1); UNIT_ASSERT(CompareTMFull(ptm0, ptm1)); } - } + } } Y_UNIT_TEST_SUITE(DateTimeTest) { diff --git a/util/datetime/parser.h b/util/datetime/parser.h index a87b08b8d8..f0c1b4a0c7 100644 --- a/util/datetime/parser.h +++ b/util/datetime/parser.h @@ -87,7 +87,7 @@ struct TDateTimeFields { tm.tm_hour = Hour; tm.tm_min = Minute; tm.tm_sec = Second; - time_t tt = TimeGM(&tm); + time_t tt = TimeGM(&tm); if (tt == -1) return defaultValue; return tt - ZoneOffsetMinutes * 60; @@ -134,8 +134,8 @@ protected: DECLARE_PARSER(TIso8601DateTimeParser) DECLARE_PARSER(TRfc822DateTimeParser) DECLARE_PARSER(THttpDateTimeParser) -DECLARE_PARSER(TX509ValidityDateTimeParser) -DECLARE_PARSER(TX509Validity4yDateTimeParser) +DECLARE_PARSER(TX509ValidityDateTimeParser) +DECLARE_PARSER(TX509Validity4yDateTimeParser) #undef DECLARE_PARSER diff --git a/util/datetime/parser.rl6 b/util/datetime/parser.rl6 index 0b0fd3ffaf..931f09eae1 100644 --- a/util/datetime/parser.rl6 +++ b/util/datetime/parser.rl6 @@ -303,40 +303,40 @@ bool THttpDateTimeParser::ParsePart(const char* input, size_t len) { return cs != %%{ write error; }%%; } -%%{ - -machine X509ValidityDateTimeParser; - -include DateTimeParserCommon; - -################# X.509 certificate validity time (see rfc5280 4.1.2.5.*) ################# - -year = int2 @{ DateTimeFields.Year = (I < 50 ? I + 2000 : I + 1900); }; -month = int2 @set_month; -day = int2 @set_day; -hour = int2 @set_hour; -minute = int2 @set_minute; -second = int2 @set_second; -zone = 'Z' @set_zone_utc; - -main := year . month . day . hour . minute . second . zone; - -write data noerror; - -}%% - +%%{ + +machine X509ValidityDateTimeParser; + +include DateTimeParserCommon; + +################# X.509 certificate validity time (see rfc5280 4.1.2.5.*) ################# + +year = int2 @{ DateTimeFields.Year = (I < 50 ? I + 2000 : I + 1900); }; +month = int2 @set_month; +day = int2 @set_day; +hour = int2 @set_hour; +minute = int2 @set_minute; +second = int2 @set_second; +zone = 'Z' @set_zone_utc; + +main := year . month . day . hour . minute . second . zone; + +write data noerror; + +}%% + TX509ValidityDateTimeParserDeprecated::TX509ValidityDateTimeParserDeprecated() { - %% write init; -} - + %% write init; +} + bool TX509ValidityDateTimeParserDeprecated::ParsePart(const char *input, size_t len) { - const char *p = input; - const char *pe = input + len; - - %% write exec; + const char *p = input; + const char *pe = input + len; + + %% write exec; return cs != %%{ write error; }%%; -} - +} + TX509ValidityDateTimeParser::TX509ValidityDateTimeParser() { %% write init; } @@ -349,39 +349,39 @@ bool TX509ValidityDateTimeParser::ParsePart(const char *input, size_t len) { return cs != %%{ write error; }%%; } -%%{ - -machine X509Validity4yDateTimeParser; - -include DateTimeParserCommon; - -year = int4 @{ DateTimeFields.Year = I; }; -month = int2 @set_month; -day = int2 @set_day; -hour = int2 @set_hour; -minute = int2 @set_minute; -second = int2 @set_second; -zone = 'Z' @set_zone_utc; - - -main := year . month . day . hour . minute . second . zone; - -write data noerror; - -}%% - +%%{ + +machine X509Validity4yDateTimeParser; + +include DateTimeParserCommon; + +year = int4 @{ DateTimeFields.Year = I; }; +month = int2 @set_month; +day = int2 @set_day; +hour = int2 @set_hour; +minute = int2 @set_minute; +second = int2 @set_second; +zone = 'Z' @set_zone_utc; + + +main := year . month . day . hour . minute . second . zone; + +write data noerror; + +}%% + TX509Validity4yDateTimeParserDeprecated::TX509Validity4yDateTimeParserDeprecated() { - %% write init; -} - + %% write init; +} + bool TX509Validity4yDateTimeParserDeprecated::ParsePart(const char *input, size_t len) { - const char *p = input; - const char *pe = input + len; - - %% write exec; + const char *p = input; + const char *pe = input + len; + + %% write exec; return cs != %%{ write error; }%%; -} - +} + TX509Validity4yDateTimeParser::TX509Validity4yDateTimeParser() { %% write init; } @@ -412,13 +412,13 @@ TInstant THttpDateTimeParserDeprecated::GetResult(TInstant defaultValue) const { TInstant TX509ValidityDateTimeParserDeprecated::GetResult(TInstant defaultValue) const { Y_UNUSED(X509ValidityDateTimeParser_en_main); return TDateTimeParserBaseDeprecated::GetResult(X509ValidityDateTimeParser_first_final, defaultValue); -} +} TInstant TX509Validity4yDateTimeParserDeprecated::GetResult(TInstant defaultValue) const { Y_UNUSED(X509Validity4yDateTimeParser_en_main); return TDateTimeParserBaseDeprecated::GetResult(X509Validity4yDateTimeParser_first_final, defaultValue); -} - +} + TInstant TIso8601DateTimeParser::GetResult(TInstant defaultValue) const { Y_UNUSED(ISO8601DateTimeParser_en_main); return TDateTimeParserBase::GetResult(ISO8601DateTimeParser_first_final, defaultValue); @@ -474,14 +474,14 @@ TInstant TInstant::ParseHttpDeprecated(const TStringBuf input) { TInstant TInstant::ParseX509ValidityDeprecated(const TStringBuf input) { switch (input.size()) { - case 13: + case 13: return ParseUnsafe<TX509ValidityDateTimeParserDeprecated, TInstant>(input.data(), 13); - case 15: + case 15: return ParseUnsafe<TX509Validity4yDateTimeParserDeprecated, TInstant>(input.data(), 15); - default: + default: ythrow TDateTimeParseException(); - } -} + } +} bool TInstant::TryParseIso8601Deprecated(const TStringBuf input, TInstant& instant) { const auto parsed = ParseUnsafe<TIso8601DateTimeParserDeprecated, TInstant, false>(input.data(), input.size()); @@ -491,7 +491,7 @@ bool TInstant::TryParseIso8601Deprecated(const TStringBuf input, TInstant& insta instant = parsed; return true; } - + bool TInstant::TryParseRfc822Deprecated(const TStringBuf input, TInstant& instant) { const auto parsed = ParseUnsafe<TRfc822DateTimeParserDeprecated, TInstant, false>(input.data(), input.size()); if (TInstant::Max() == parsed) { @@ -671,9 +671,9 @@ bool ParseHTTPDateTime(const char* input, time_t& utcTime) { return ParseHTTPDateTime(input, strlen(input), utcTime); } -bool ParseX509ValidityDateTime(const char* input, time_t& utcTime) { - return ParseX509ValidityDateTime(input, strlen(input), utcTime); -} +bool ParseX509ValidityDateTime(const char* input, time_t& utcTime) { + return ParseX509ValidityDateTime(input, strlen(input), utcTime); +} bool ParseRFC822DateTime(const char* input, size_t inputLen, time_t& utcTime) { try { @@ -701,25 +701,25 @@ bool ParseHTTPDateTime(const char* input, size_t inputLen, time_t& utcTime) { return false; } } - -bool ParseX509ValidityDateTime(const char* input, size_t inputLen, time_t& utcTime) { - TInstant r; - switch (inputLen) { - case 13: + +bool ParseX509ValidityDateTime(const char* input, size_t inputLen, time_t& utcTime) { + TInstant r; + switch (inputLen) { + case 13: r = Parse<TX509ValidityDateTimeParser, TInstant>(input, 13, TInstant::Max()); - break; - case 15: + break; + case 15: r = Parse<TX509Validity4yDateTimeParser, TInstant>(input, 15, TInstant::Max()); - break; - default: - return false; - } - if (r == TInstant::Max()) - return false; - utcTime = r.TimeT(); - return true; -} - + break; + default: + return false; + } + if (r == TInstant::Max()) + return false; + utcTime = r.TimeT(); + return true; +} + %%{ machine TDurationParser; diff --git a/util/datetime/parser_ut.cpp b/util/datetime/parser_ut.cpp index 243f83d564..61364af997 100644 --- a/util/datetime/parser_ut.cpp +++ b/util/datetime/parser_ut.cpp @@ -492,27 +492,27 @@ Y_UNIT_TEST_SUITE(TDateTimeParseTest) { ret = ParseHTTPDateTime("1990-03-15T15:16:17Z", t); UNIT_ASSERT(!ret); } - + Y_UNIT_TEST(TestX509ValidityTime) { - UNIT_ASSERT_VALUES_EQUAL( + UNIT_ASSERT_VALUES_EQUAL( TInstant::ParseX509Validity("20091014165533Z"), TInstant::ParseRfc822("Wed, 14 Oct 2009 16:55:33 GMT")); - UNIT_ASSERT_VALUES_EQUAL( + UNIT_ASSERT_VALUES_EQUAL( TInstant::ParseX509Validity("990104074212Z"), TInstant::ParseRfc822("4 Jan 1999 07:42:12 GMT")); - UNIT_ASSERT_VALUES_EQUAL( + UNIT_ASSERT_VALUES_EQUAL( TInstant::ParseX509Validity("191231235959Z"), TInstant::ParseRfc822("31 Dec 2019 23:59:59 GMT")); - } - + } + Y_UNIT_TEST(TestX509ValidityTimeIncorrect) { - bool ret; - time_t t = 0; + bool ret; + time_t t = 0; ret = ParseX509ValidityDateTime("500101000000Z", t); - UNIT_ASSERT(!ret); + UNIT_ASSERT(!ret); ret = ParseX509ValidityDateTime("091014165533+0300", t); - UNIT_ASSERT(!ret); - } + UNIT_ASSERT(!ret); + } Y_UNIT_TEST(TestTInstantTryParse) { { diff --git a/util/datetime/systime.cpp b/util/datetime/systime.cpp index 12ceab1831..6ee7e8fc6e 100644 --- a/util/datetime/systime.cpp +++ b/util/datetime/systime.cpp @@ -46,8 +46,8 @@ char* ctime_r(const time_t* clock, char* buf) { return 0; } -#endif /* _win_ */ - +#endif /* _win_ */ + #define YEAR0 1900 #define EPOCH_YR 1970 #define SECS_DAY (24L * 60L * 60L) @@ -86,51 +86,51 @@ time_t TimeGM(const struct tm* t) { } struct tm* GmTimeR(const time_t* timer, struct tm* tmbuf) { - static const int _ytab[2][12] = { - {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, + static const int _ytab[2][12] = { + {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}}; i64 time = static_cast<i64>(*timer); - ui64 dayclock, dayno; - int year = EPOCH_YR; - - if (time < 0) { - ui64 shift = (ui64)(-time - 1) / ((ui64)FOURCENTURIES * SECS_DAY) + 1; - time += shift * ((ui64)FOURCENTURIES * SECS_DAY); - year -= shift * 400; - } - + ui64 dayclock, dayno; + int year = EPOCH_YR; + + if (time < 0) { + ui64 shift = (ui64)(-time - 1) / ((ui64)FOURCENTURIES * SECS_DAY) + 1; + time += shift * ((ui64)FOURCENTURIES * SECS_DAY); + year -= shift * 400; + } + dayclock = (ui64)time % SECS_DAY; dayno = (ui64)time / SECS_DAY; - - year += 400 * (dayno / FOURCENTURIES); - dayno = dayno % FOURCENTURIES; - - tmbuf->tm_sec = dayclock % 60; - tmbuf->tm_min = (dayclock % 3600) / 60; - tmbuf->tm_hour = dayclock / 3600; - tmbuf->tm_wday = (dayno + 4) % 7; // Day 0 was a thursday + + year += 400 * (dayno / FOURCENTURIES); + dayno = dayno % FOURCENTURIES; + + tmbuf->tm_sec = dayclock % 60; + tmbuf->tm_min = (dayclock % 3600) / 60; + tmbuf->tm_hour = dayclock / 3600; + tmbuf->tm_wday = (dayno + 4) % 7; // Day 0 was a thursday while (dayno >= (ui64)YEARSIZE(year)) { - dayno -= YEARSIZE(year); + dayno -= YEARSIZE(year); ++year; - } - tmbuf->tm_year = year - YEAR0; - tmbuf->tm_yday = dayno; - tmbuf->tm_mon = 0; + } + tmbuf->tm_year = year - YEAR0; + tmbuf->tm_yday = dayno; + tmbuf->tm_mon = 0; while (dayno >= (ui64)_ytab[LEAPYEAR(year)][tmbuf->tm_mon]) { - dayno -= _ytab[LEAPYEAR(year)][tmbuf->tm_mon]; + dayno -= _ytab[LEAPYEAR(year)][tmbuf->tm_mon]; ++tmbuf->tm_mon; - } - tmbuf->tm_mday = dayno + 1; - tmbuf->tm_isdst = 0; -#ifndef _win_ - tmbuf->tm_gmtoff = 0; + } + tmbuf->tm_mday = dayno + 1; + tmbuf->tm_isdst = 0; +#ifndef _win_ + tmbuf->tm_gmtoff = 0; tmbuf->tm_zone = (char*)"UTC"; -#endif - - return tmbuf; -} +#endif + + return tmbuf; +} TString CTimeR(const time_t* timer) { char sTime[32]; diff --git a/util/datetime/systime.h b/util/datetime/systime.h index 9b3d5f622c..491d36e802 100644 --- a/util/datetime/systime.h +++ b/util/datetime/systime.h @@ -5,12 +5,12 @@ #include <ctime> -// timegm and gmtime_r versions that don't need access to filesystem or a big stack +// timegm and gmtime_r versions that don't need access to filesystem or a big stack time_t TimeGM(const struct tm* t); struct tm* GmTimeR(const time_t* timer, struct tm* tmbuf); // safe version of ctime, convinient version of ctime_r TString CTimeR(const time_t* timer); - + #ifdef _win_ #include <util/system/winint.h> #include <winsock2.h> @@ -28,12 +28,12 @@ char* ctime_r(const time_t* clock, char* buf); inline time_t timegm(struct tm* t) { return TimeGM(t); } - + char* strptime(const char* buf, const char* fmt, struct tm* tm); // strptime.cpp #else #include <sys/time.h> #endif - + #ifndef timersub #define timersub(tvp, uvp, vvp) \ do { \ diff --git a/util/generic/algorithm.h b/util/generic/algorithm.h index e473d0ac0b..badfb88993 100644 --- a/util/generic/algorithm.h +++ b/util/generic/algorithm.h @@ -103,16 +103,16 @@ static inline void PartialSort(T f, T m, T l, C c) { std::partial_sort(f, m, l, c); } -template <class T, class R> -static inline R PartialSortCopy(T f, T l, R of, R ol) { +template <class T, class R> +static inline R PartialSortCopy(T f, T l, R of, R ol) { return std::partial_sort_copy(f, l, of, ol); -} - -template <class T, class R, class C> -static inline R PartialSortCopy(T f, T l, R of, R ol, C c) { +} + +template <class T, class R, class C> +static inline R PartialSortCopy(T f, T l, R of, R ol, C c) { return std::partial_sort_copy(f, l, of, ol, c); -} - +} + template <class I, class T> static inline I Find(I f, I l, const T& v) { return std::find(f, l, v); diff --git a/util/network/sock.h b/util/network/sock.h index bfc23cc996..b10be2f715 100644 --- a/util/network/sock.h +++ b/util/network/sock.h @@ -534,7 +534,7 @@ public: { } }; - + class TInet6StreamSocket: public TStreamSocket { public: TInet6StreamSocket(SOCKET fd) @@ -549,60 +549,60 @@ public: }; class TStreamSocketInput: public IInputStream { -public: +public: TStreamSocketInput(TStreamSocket* socket) - : Socket(socket) - { - } + : Socket(socket) + { + } void SetSocket(TStreamSocket* socket) { - Socket = socket; - } - -protected: + Socket = socket; + } + +protected: TStreamSocket* Socket; - + size_t DoRead(void* buf, size_t len) override { Y_VERIFY(Socket, "TStreamSocketInput: socket isn't set"); - const ssize_t ret = Socket->Recv(buf, len); - - if (ret >= 0) { - return (size_t)ret; - } - + const ssize_t ret = Socket->Recv(buf, len); + + if (ret >= 0) { + return (size_t)ret; + } + ythrow TSystemError(-(int)ret) << "can not read from socket input stream"; - } -}; - + } +}; + class TStreamSocketOutput: public IOutputStream { -public: +public: TStreamSocketOutput(TStreamSocket* socket) - : Socket(socket) - { - } + : Socket(socket) + { + } void SetSocket(TStreamSocket* socket) { - Socket = socket; - } - + Socket = socket; + } + TStreamSocketOutput(TStreamSocketOutput&&) noexcept = default; TStreamSocketOutput& operator=(TStreamSocketOutput&&) noexcept = default; -protected: +protected: TStreamSocket* Socket; - + void DoWrite(const void* buf, size_t len) override { Y_VERIFY(Socket, "TStreamSocketOutput: socket isn't set"); - + const char* ptr = (const char*)buf; - while (len) { - const ssize_t ret = Socket->Send(ptr, len); - - if (ret < 0) { + while (len) { + const ssize_t ret = Socket->Send(ptr, len); + + if (ret < 0) { ythrow TSystemError(-(int)ret) << "can not write to socket output stream"; - } - + } + Y_ASSERT((size_t)ret <= len); - len -= (size_t)ret; - ptr += (size_t)ret; - } - } -}; + len -= (size_t)ret; + ptr += (size_t)ret; + } + } +}; diff --git a/ydb/core/protos/services.proto b/ydb/core/protos/services.proto index 746737e456..c17c8a7dc3 100644 --- a/ydb/core/protos/services.proto +++ b/ydb/core/protos/services.proto @@ -245,16 +245,16 @@ enum EServiceKikimr { SEQUENCESHARD = 602; SEQUENCEPROXY = 603; - YF_JOB_SERVICE = 701; - YF_JOB_RUNNER = 702; - YF_JOB_AGENT = 703; - YF_GATEWAY = 704; - YF_GATEWAY_SERVICE = 705; - YF_SERVICE = 706; - YF_MON_SERVICE = 707; - YF_CALL_BALANCER = 708; - YF_DESCRIPTIONS_SERVICE = 709; - YF_WORKER = 710; + YF_JOB_SERVICE = 701; + YF_JOB_RUNNER = 702; + YF_JOB_AGENT = 703; + YF_GATEWAY = 704; + YF_GATEWAY_SERVICE = 705; + YF_SERVICE = 706; + YF_MON_SERVICE = 707; + YF_CALL_BALANCER = 708; + YF_DESCRIPTIONS_SERVICE = 709; + YF_WORKER = 710; NET_CLASSIFIER = 711; |