1. 09 Aug, 2017 4 commits
    • Nick Jiang's avatar
      fix sorted_vector_{set,map} bulk_insert deduplication · ae32b8a5
      Nick Jiang authored
      Summary: this fixes the case where bulk inserting a range where the smallest element is equal to the largest element of the current set/map fails to deduplicate that element.
      
      Reviewed By: mlogan, yfeldblum
      
      Differential Revision: D5593284
      
      fbshipit-source-id: 487500ee7a5e33f27c24321ad4a3c07a669fc26c
      ae32b8a5
    • Yedidya Feldblum's avatar
      Explicitly handle gcc in FOLLY_MAYBE_UNUSED · eb8f3c3c
      Yedidya Feldblum authored
      Summary:
      [Folly] Explicitly handle gcc in `FOLLY_MAYBE_UNUSED`.
      
      Fixes build break from {D5562220}.
      
      Reviewed By: Orvid
      
      Differential Revision: D5594288
      
      fbshipit-source-id: 5aa2dcb6133d53a0eb20d34b67c8e4407dd2b7ca
      eb8f3c3c
    • Yedidya Feldblum's avatar
      Cut unnecessary parens in IPAddress.h · 13f2e056
      Yedidya Feldblum authored
      Summary: [Folly] Cut unnecessary parens in `IPAddress.h`.
      
      Reviewed By: meyering
      
      Differential Revision: D5589756
      
      fbshipit-source-id: 6499e0db2aeb232356e2808fc59a35869b5dad0a
      13f2e056
    • Yedidya Feldblum's avatar
      Let IPAddressV4::bitCount and IPAddressV6::bitCount be constexpr · 9432d632
      Yedidya Feldblum authored
      Summary: [Folly] Let `IPAddressV4::bitCount` and `IPAddressV6::bitCount` be `constexpr`.
      
      Reviewed By: meyering
      
      Differential Revision: D5589954
      
      fbshipit-source-id: f4208efd62e71f47a7c87bdc8ddd421f93413c29
      9432d632
  2. 08 Aug, 2017 2 commits
    • Yedidya Feldblum's avatar
      Apply clang-format to folly/**/*Address*.* · 0b856bd5
      Yedidya Feldblum authored
      Summary: [Folly] Apply `clang-format` to `folly/**/*Address*.*`.
      
      Reviewed By: Orvid
      
      Differential Revision: D5581523
      
      fbshipit-source-id: 97b5270e43e279e7deb9606524d5fee844a50649
      0b856bd5
    • Phil Willoughby's avatar
      Add a UDL suffix to define a StringPiece · d44f36ab
      Phil Willoughby authored
      Summary:
      Use it like this:
      ```
      using namespace folly::string_piece_literals;
      StringPiece p = "A literal string"_sp;
      ```
      
      In some compilation environments it can be more efficient than the implicit
      conversion from `char const *` to `StringPiece`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5562782
      
      fbshipit-source-id: ce715edc65b1510761e127bf89a6936370253a68
      d44f36ab
  3. 07 Aug, 2017 1 commit
    • Sargun Vohra's avatar
      Don't allow Future::onError([](exception_wrapper&){}) to compile · 148df69f
      Sargun Vohra authored
      Summary: `Future::onError` does not work with a function that takes `exception_wrapper&`, so it should not compile. `exception_wrapper`, `const exception_wrapper&`, and `exception_wrapper&&` are unaffected.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5556083
      
      fbshipit-source-id: 45d096d9fee00322eeec6b9b9b1dcbef55cced03
      148df69f
  4. 06 Aug, 2017 2 commits
    • Yedidya Feldblum's avatar
      Consistent use of sformat in address-related files · d7d34a09
      Yedidya Feldblum authored
      Summary:
      [Folly] Consistent use of `sformat` in address-related files.
      
      V.s. `format(/*...*/).str()` and v.s. `to<std::string>`.
      
      Reviewed By: meyering
      
      Differential Revision: D5570334
      
      fbshipit-source-id: 83aedf9a694721fb209e62e94f1a5c5ecd355e81
      d7d34a09
    • Yedidya Feldblum's avatar
      Apply clang-format to folly/**/*Range*.* · fc10d0b8
      Yedidya Feldblum authored
      Summary: [Folly] Apply `clang-format` to `folly/**/*Range*.*`.
      
      Reviewed By: meyering
      
      Differential Revision: D5570553
      
      fbshipit-source-id: 230aa8557c2d402d741aaa541f96f4634dd13d3b
      fc10d0b8
  5. 04 Aug, 2017 3 commits
    • Xiangyu Bu's avatar
      Test server-side getPeerCert(). · e4c892c7
      Xiangyu Bu authored
      Summary: Make sure server can get client cert using AsyncSSLSocket::getPeerCert() call.
      
      Reviewed By: anirudhvr
      
      Differential Revision: D5557303
      
      fbshipit-source-id: d95696f592e3b3f67acba9f92add32b91c29a000
      e4c892c7
    • Xiangyu Bu's avatar
      Clang-format AsyncSSLSocketTest.cpp. · b6a67aee
      Xiangyu Bu authored
      Summary: ... as titled.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5558742
      
      fbshipit-source-id: b63b121cde8db93de4cabc80563539297611d600
      b6a67aee
    • Marko Novakovic's avatar
      Replacing instances of __CLANG__ with __clang__ · 647dba2f
      Marko Novakovic authored
      Summary:
      Clang compiler does not define `__CLANG__` macro and
      only defines `__clang__`, but we use `__CLANG__` in a
      few places in the code which was probably done by mistake.
      This should make the code behave in the intended way.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5542162
      
      fbshipit-source-id: 74d24ba9464d8faec160d73e6c582967d3c80c19
      647dba2f
  6. 03 Aug, 2017 2 commits
    • Alex Guzman's avatar
      Add X509_EXTENSION unique pointer · d0f5d850
      Alex Guzman authored
      Summary: Adds unique pointer type for X509_EXTENSION
      
      Reviewed By: knekritz
      
      Differential Revision: D5556504
      
      fbshipit-source-id: b84190f20dd0a2ee9f5f07f197caf53a9a063af7
      d0f5d850
    • Adam Norton's avatar
      Reduce Code Duplication In NotificationQueue With Universal Reference · 11a44379
      Adam Norton authored
      Summary: Remove a bunch of identical code that only exists to provide interfaces for both `const MessageT&` and `MessageT&&` arguments.
      
      Reviewed By: ot
      
      Differential Revision: D5540560
      
      fbshipit-source-id: ae7b9345b64130fc748033be2e0587c4f83345a7
      11a44379
  7. 02 Aug, 2017 2 commits
  8. 01 Aug, 2017 6 commits
    • Alex Guzman's avatar
      Create X509_STORE ptr type · b01e4d75
      Alex Guzman authored
      Summary: What it says on tin
      
      Reviewed By: knekritz
      
      Differential Revision: D5533819
      
      fbshipit-source-id: e3ba89f02d20d171fbcb8ed2853267d37bd86756
      b01e4d75
    • Yedidya Feldblum's avatar
      Cut debugging code from SocketAddress · 6065a18c
      Yedidya Feldblum authored
      Summary:
      [Folly] Cut debugging code from `SocketAddress`.
      
      Specifically from its `ExternalUnixAddr` helper class, which is probably not broken.
      
      Reviewed By: simpkins
      
      Differential Revision: D5530685
      
      fbshipit-source-id: adfc46ec1c1a142e9914051e8a97b39f41d71630
      6065a18c
    • Phil Willoughby's avatar
      C++11 support for Replaceable · ccb56f3c
      Phil Willoughby authored
      Summary: Also add tests for the `is_replaceable` trait.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5526317
      
      fbshipit-source-id: 92559d55fbb8d115856ef9e8f86b42e327f74e56
      ccb56f3c
    • Neel Goyal's avatar
      Add TLS 1.2+ version for contexts · b669462b
      Neel Goyal authored
      Summary: Add an SSL Version that specifies only TLS 1.2 and up.  This prevents any client with less than TLS 1.2 from connecting.
      
      Reviewed By: knekritz
      
      Differential Revision: D5537423
      
      fbshipit-source-id: 131f5b124af379eaa2b443052be9b43290c41820
      b669462b
    • Neel Goyal's avatar
      Change AsyncUDP's readCallback to be protected. · 432d60d6
      Neel Goyal authored
      Summary: Change AsyncUDPSocket's ReadCallback to be protected so that subclasses can have access to it.
      
      Reviewed By: yangchi
      
      Differential Revision: D5376012
      
      fbshipit-source-id: 7ec21d9bfe6bde525253adea7abf5dea15fb7fa0
      432d60d6
    • Yedidya Feldblum's avatar
      DRY some methods in IPAddress · 6a3a9eb0
      Yedidya Feldblum authored
      Summary:
      [Folly] DRY some methods in `IPAddress`.
      
      Specifically, the ones which just delegate to either `asV4()` or to `asV6()`.
      
      Reviewed By: mzlee
      
      Differential Revision: D5529797
      
      fbshipit-source-id: 4dd3dc893ab19281325700b85400c1c1aadfd77f
      6a3a9eb0
  9. 31 Jul, 2017 6 commits
    • Yang Chi's avatar
      Make sendmsg in AsyncUDPSocket overridable · 53b24a32
      Yang Chi authored
      Summary: Add a protected virtual sendmsg method to AsyncUDPSocket. And make it default to call the system sendmsg function. This enables subclasses of AsyncUDPSocket to be able to override the behavior of sendmseg, also makes AsyncUDPSocket easier to mock and test.
      
      Reviewed By: afrind
      
      Differential Revision: D5459745
      
      fbshipit-source-id: b0227bf7503b1096cb1f0bfc8b9c784db2f2e45d
      53b24a32
    • Yedidya Feldblum's avatar
      No need for strncpy in passwordCallback · e74ceef6
      Yedidya Feldblum authored
      Summary:
      [Folly] No need for `strncpy` in `passwordCallback`.
      
      Careful reading of the documentation:
      
      > The pem_passwd_cb must write the password into the provided buffer `buf` which is of size `size`.
      >
      > https://wiki.openssl.org/index.php?title=Manual:SSL_CTX_set_default_passwd_cb(3)&oldid=761
      
      No mention is made of a requirement on the password being written into `buf` that it be null-terminated.
      
      Reviewed By: knekritz, meyering
      
      Differential Revision: D5524814
      
      fbshipit-source-id: 6cfc588cdf3675281ffe39e6af376f3f0631d1b0
      e74ceef6
    • Phil Willoughby's avatar
      Remove template helper constants · ea815395
      Phil Willoughby authored
      Summary: Not supported by some environments.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5526180
      
      fbshipit-source-id: 2c2b6f7627860c5f896532b90601c817530e6b69
      ea815395
    • Yedidya Feldblum's avatar
      Consistency in namespace-closing comments · d4aacd24
      Yedidya Feldblum authored
      Summary: [Folly] Consistency in namespace-closing comments.
      
      Reviewed By: Orvid
      
      Differential Revision: D5524744
      
      fbshipit-source-id: ced4dd2398ed6baa3ad5b68b74eee6a5d6b2b103
      d4aacd24
    • Yedidya Feldblum's avatar
      Formatting for template parameters · adf4a5ac
      Yedidya Feldblum authored
      Summary: [Folly] Formatting for template parameters.
      
      Reviewed By: Orvid
      
      Differential Revision: D5525123
      
      fbshipit-source-id: 4feb772300cfdd6ae3168fe9f59f5a951fb85d0e
      adf4a5ac
    • Yedidya Feldblum's avatar
      Simplify the StateSize helper in Random · da591fe6
      Yedidya Feldblum authored
      Summary:
      [Folly] Simplify the `StateSize` helper in `Random`.
      
      * Using member type aliases rather than class constants means we can remove definitions.
      * Partially specializing over all RNG types with `state_size` class constants means we can remove the `mersenne_twister` specializations, which have many template parameters and are a pain.
      
      Reviewed By: Orvid
      
      Differential Revision: D5525144
      
      fbshipit-source-id: bc27f112ed0d9b55befe9dabe08c4d345a402435
      da591fe6
  10. 30 Jul, 2017 5 commits
    • Yedidya Feldblum's avatar
      Outline throw statements in format · 2562ef37
      Yedidya Feldblum authored
      Summary: [Folly] Outline `throw` statements in `format`.
      
      Reviewed By: Orvid
      
      Differential Revision: D5523933
      
      fbshipit-source-id: 371c9ecc707e48dcc05fa4aab4fd326111466161
      2562ef37
    • Yedidya Feldblum's avatar
      Let MacAddress use a helper hex-table · a961f2cd
      Yedidya Feldblum authored
      Summary:
      [Folly] Let `MacAddress` use a helper hex-table.
      
      The table is in the `folly::detail` namespace so it is non-public to users of folly, but the rules may not be quite as strict in at least some cases within folly.
      
      Also the helper `unhex` function that this replaces is not `clang-format`-clean, so this lets us sidestep that.
      
      Reviewed By: Orvid
      
      Differential Revision: D5524229
      
      fbshipit-source-id: 21d6938e20cd675e65499a5b64d2af934f980222
      a961f2cd
    • Yedidya Feldblum's avatar
      Consistent indentation for class visibility labels · 83b9f93f
      Yedidya Feldblum authored
      Summary: [Folly] Consistent indentation for class visibility labels (`public:`, `protected:`, `private:`). Style is +1 column relative to the `class` keyword.
      
      Reviewed By: andrewjcg
      
      Differential Revision: D5524869
      
      fbshipit-source-id: 53e4b6cbda10d5b63bafbd535794a8b7ae01a8e0
      83b9f93f
    • Yedidya Feldblum's avatar
      template< -> template < · fbfe1059
      Yedidya Feldblum authored
      Summary:
      [Folly] `template<` -> `template <`.
      
      And then apply `clang-format` style to affected `template <...>` lines.
      
      Reviewed By: andrewjcg
      
      Differential Revision: D5524792
      
      fbshipit-source-id: 6614eecf384bf3e3ccc2f0cc7c5334a0cb9c76af
      fbfe1059
    • Yedidya Feldblum's avatar
      Mark two implicit ctors as explicit · 92d9e7f7
      Yedidya Feldblum authored
      Summary:
      [Folly] Mark two implicit ctors as `explicit`.
      
      They did not need to be implicit.
      
      Reviewed By: andrewjcg
      
      Differential Revision: D5524798
      
      fbshipit-source-id: a50bc6bfc9da2642891faf0aa38a19f46e75b9da
      92d9e7f7
  11. 29 Jul, 2017 5 commits
    • Yedidya Feldblum's avatar
      Define IPAddressV6 comparison ops in terms of its fields · 4927f087
      Yedidya Feldblum authored
      Summary: [Folly] Define `IPAddressV6` comparison ops in terms of its fields using `std::tie`.
      
      Reviewed By: andrewjcg
      
      Differential Revision: D5524248
      
      fbshipit-source-id: 5f5f2acd6e9cfd6dfd148cc7d95bda720bf81ee9
      4927f087
    • Yedidya Feldblum's avatar
      Merge IPAddressTest.h into the IPAddressTest.cpp · 21099baa
      Yedidya Feldblum authored
      Summary:
      [Folly] Merge `IPAddressTest.h` into the `IPAddressTest.cpp`.
      
      There is no real need to split anything out into a header file.
      
      Reviewed By: andrewjcg
      
      Differential Revision: D5524267
      
      fbshipit-source-id: e128c69c7da38663f19d0ccd73edaae36c3f469a
      21099baa
    • Yedidya Feldblum's avatar
      Outline throw statements in folly/futures/ · 063b4a3d
      Yedidya Feldblum authored
      Summary: [Folly] Outline `throw` statements in `folly/futures/`.
      
      Reviewed By: ericniebler
      
      Differential Revision: D5522791
      
      fbshipit-source-id: 545185bc580ea8628075b9ecae46c2f19308e937
      063b4a3d
    • Yedidya Feldblum's avatar
      Compute masks in IPAddressV4 · 9ab15578
      Yedidya Feldblum authored
      Summary: [Folly] Compute masks in `IPAddressV4`. Just like in `IPAddressV6`.
      
      Reviewed By: WillerZ
      
      Differential Revision: D5524197
      
      fbshipit-source-id: ebeeab28304bff4f6150cf76216d170908e62aa4
      9ab15578
    • Phil Willoughby's avatar
      Fix the copy constructor in Replaceable · efc4ca1e
      Phil Willoughby authored
      Summary:
      Fix the copy constructor, and add the missing testcase which would have found
      this problem.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D5516628
      
      fbshipit-source-id: 3e688c34f061511df5b68243111fecb83483d79d
      efc4ca1e
  12. 28 Jul, 2017 2 commits
    • Yedidya Feldblum's avatar
      Optimal make_integer_sequence · 890625b2
      Yedidya Feldblum authored
      Summary:
      [Folly] Optimal `make_integer_sequence`.
      
      When the builtin `__make_integer_seq` is available, use that. It is the most optimal implementation.
      
      Otherwise, use a tweaked divide-and-conquer implementation. Designed to reuse more template instantiations than the straightforward divide-and-conquer approach in libstdc++ >= 6. And definitely not linearly recursive as in libstdc++ < 6.
      
      Illustrating with an example. Let `M` be whatever template type implements `make_integer_sequence`. For `M<17>`, libstdc++ < 6 does linear recursion (least optimal), instantiating `M<16>`, `M<15>`, ..., `M<1>`. libstdc++ >= 6 does straightforward divide-and-conquer recursion, instantiating `M<8>` and `M<9>`, recursing into `M<4>` and `M<5>`, recursing into `M<2>` and `M<3>`, recursing into `M<1>`. Our implementation does a variant of divide-and-conquer recursion to maximize reuse, instantiating `M<8>` and `M<1>`, recursing into `M<4>`, recursing into `M<2>`.
      
      Implementation derived from `fatal/type/sequence.h`.
      
      Reviewed By: ericniebler
      
      Differential Revision: D5496975
      
      fbshipit-source-id: 449b4e0a1c7b4a5b602752c1d3dd8914bf9a8e71
      890625b2
    • stryku's avatar
      Prevent IsOneOf unused template specialization instantiation · 160f868c
      stryku authored
      Summary:
      Current `IsOneOf` implementation does unnecessary work because it instantiates all of the possible template specializations, even if type is same as the first of the tested ones. E.g.
      `IsOneOf<char, char, int, float>` will instantiate:
      ```
      IsOneOf<char, char, int, float>
      IsOneOf<char, char, int>
      IsOneOf<char, char>
      IsOneOf<char>
      ```
      
      With the proposed inheritance, compiler will stop initializing at the first match.
      Closes https://github.com/facebook/folly/pull/643
      
      Reviewed By: ericniebler
      
      Differential Revision: D5482783
      
      Pulled By: yfeldblum
      
      fbshipit-source-id: 3d04c750ce72fa9b19b4d0588cccfb396a9e0715
      160f868c