- 08 Mar, 2017 5 commits
-
-
Christopher Dykes authored
Summary: GCC & Clang allow the use of a non-captured constexpr local within a lambda, MSVC does not. All 3 compilers allow this when the local has static storage. Reviewed By: yfeldblum Differential Revision: D4675147 fbshipit-source-id: 3e07eb77731cbd3ebda6aee4b0b57ac19ac34de5
-
Christopher Dykes authored
Summary: With the way it is currently, if `jemalloc.h` is included after `folly/Malloc.h`, `jemalloc.h` ends up redefining these. This changes it to just include `jemalloc.h` if we know we're compiling with JEMalloc. Reviewed By: yfeldblum Differential Revision: D4660285 fbshipit-source-id: 814e36432676e89cf7ba2bc5247b7dde2bfdc14a
-
Anirudh Ramachandran authored
Summary: D4624754 broke mcrouter-oss because that uses older OpenSSL (1.0.1). Reviewed By: yfeldblum, jmswen Differential Revision: D4670767 fbshipit-source-id: f297c8d3e013525bb36bd059eb40c70f0c4c2dcc
-
Jon Maltiel Swenson authored
Summary: Title. Reviewed By: yfeldblum Differential Revision: D4674125 fbshipit-source-id: 71ad38d7a52ab1c27fcc7ff14d130978b0ece382
-
Andrii Grynenko authored
Summary: Make each EventBase have a defuault VirtualEventBase which is attached to it and is joined on destruction. Default VirtualEventBase is lazily created on first request. This makes it trivial to use code switched to VirtualEventBase both with VirtualEventBase and EventBase. Reviewed By: yfeldblum Differential Revision: D4644639 fbshipit-source-id: cf28a3632463a1c61404c225ce1186f5a4a062a3
-
- 07 Mar, 2017 2 commits
-
-
Alexander Blom authored
Summary: There is no need for EventBase to log every loop iteration on a relatively low VLOG level. Just move it up to 11 like the other verbose logging in EventBase.cpp Reviewed By: yfeldblum Differential Revision: D4642379 fbshipit-source-id: 351636afb186ba94b2447b206d7d1389cbdba110
-
Anirudh Ramachandran authored
Summary: Add a few more getters (subject, issuer, notbefore, notafter) to OpenSSLCertUtils. Also add an additional API to AsyncSSLSocket to add application-generated alert strings during the handshake, for e.g., during certificate verification Reviewed By: knekritz Differential Revision: D4624754 fbshipit-source-id: f01998b9e0e58b88ece8c6dc51ab590988bf0a8f
-
- 06 Mar, 2017 1 commit
-
-
Johannes Kopf authored
Summary: This file only compiles with MSVC after I made the change in this diff. The code was difficult to follow, so I am not sure if the template is needed here? Reviewed By: yfeldblum Differential Revision: D4656575 fbshipit-source-id: 19415623bdb1757b573f12cdc9d8544d716ce6f2
-
- 05 Mar, 2017 2 commits
-
-
Jim Meyering authored
Summary: Fix warnings exposed by gcc's -Wshadow-compatible-local. Don't use a hard-coded names that would cause shadowing with each nested use of this macro. This avoids errors like the following: folly/Foreach.h:94:18: error: declaration of 'FOR_EACH_privateCount' shadows a previous local [-Werror=shadow-compatible-local] folly/Foreach.h:91:12: error: shadowed declaration is here [-Werror=shadow-compatible-local] Reviewed By: yfeldblum Differential Revision: D4656783 fbshipit-source-id: d7cd820fb04ccd78242f7487e2b219dc300709b6
-
Subodh Iyengar authored
Summary: AsyncSSLSocket can be connected using connect with total timeouts. This adds a method to get the total timeout that was set. Reviewed By: ngoyal, yfeldblum Differential Revision: D4656331 fbshipit-source-id: a55ad9f081449d358b8133e9598a2063f625a2e6
-
- 04 Mar, 2017 1 commit
-
-
Marc Celani authored
Summary: It is not unusual to write a RequestData that will send a request to a backend service upon destruction (for example, to log the request data). This typically involves calling EventBase::runInEventBaseThread() to do the logging. Normally, if you wait until the RequestContext is destructing for this to happen, everything works fine. However, if you explicitly call clearContextData(), then this can cause a deadlock. clearContextData() holds the write lock on the data_. Imagine the NotificationQueue thread tries to set the context (for some other reason), and it is waiting on the read lock on the data_. It does so while holding a lock on its own queue. Now, the clearContextData() calls the destructor while holding the write lock on data_, and the destructor calls runInEventBaseThread, which grabs the queue's lock. Deadlock. This can either be fixed in NotificationQueue or RequestContext. I decided to fix it in RequestContext because there may be other deadlocks that don't involve NotificationQueue (see the test plan). There are other deadlocks in RequestContext if you call write methods in RequestData::onSet or onUnset. But fixing this would require a massive perf regression (I imagine using shared_ptr instead of unique_ptr, and copying the ptrs under readlock and calling the callbacks after releasing the lock - yuck!) So instead, warn people against doing that. Reviewed By: yfeldblum Differential Revision: D4655400 fbshipit-source-id: cfebe696953a19dc4dba49976bbcd0ec1363bc42
-
- 03 Mar, 2017 1 commit
-
-
Yedidya Feldblum authored
Summary: [Folly] Tweak size handling in `Endian`. Either multiply by 8 in one place, or divide by 8 in another place. Go with the latter, because `sizeof` in C++ emits byte sizes, not bit sizes. Reviewed By: simpkins Differential Revision: D4645020 fbshipit-source-id: cb78600ba4c20bebc66aed506d4b5d6c378fc998
-
- 02 Mar, 2017 3 commits
-
-
Christopher Dykes authored
Summary: This reverts commit 21b86944f513da0700039a3e3736937fd72e8887 Differential Revision: D4618623 fbshipit-source-id: 6ab6498a2ce22895d7052e258d1af216d46ca178
-
Subodh Iyengar authored
Summary: The current method to supply connect timeouts to AsyncSSLSocket is to supply only the max connect + ssl connect time. However in some cases when connect time is known, it is desirable to supply it so that if connect does not succeed in connect time we can error out quicker and retry. This adds a new method for connect time in addition to the total Connect time. An alternative to this would be to create a AsyncSocket, connect it and then pass it's fd to AsyncSSLSocket, however that approach does not work well when TFO is being used, because TFO State is a part of the AsyncSocket's state and that is not encapsulated with the fd transfer. We could move the state around, but that is error prone, and this is much simpler and isolated to AsyncSSLSocket. Reviewed By: knekritz Differential Revision: D4626924 fbshipit-source-id: d802d035efbced68873ab59314d9f0e661e5509b
-
Yedidya Feldblum authored
Summary: [Folly] Refactor `Endian`. Define `swap` for all types, instead of only declaring it for all types, but have its implementation call a function that only has a given set of non-template overloads for a given set of supported types. The effective change is that now `Endian::swap<std::string>` will fail to compile, rather than compile but fail to link. And support floating-point types. Reviewed By: nbronson Differential Revision: D4615706 fbshipit-source-id: 5034e1e4466b8118a258d917ce8f4094460ca01a
-
- 01 Mar, 2017 4 commits
-
-
Andrii Grynenko authored
Summary: detect_stack_use_after_return enables fake stack logic. Previous implementation was relying on fiber releasing its fake stack before switch, which is not safe, because that fake stack may actually be in use. This diff implements a hacky workaround by building a freeFakeStack function, which can release fake stack outside of the fiber. Ideally this function should be provided by ASAN itself. Reviewed By: yfeldblum Differential Revision: D4631962 fbshipit-source-id: 6213e2a6b3cbc35fae3793fcf86b0614dd8ff825
-
Andrii Grynenko authored
Summary: It doesn't work nicely with fake stacks (which are used with detect_stack_use_after_return). Reviewed By: yfeldblum Differential Revision: D4631995 fbshipit-source-id: f139041314f8f64c0cf0a15874d6a4710fb2a5b6
-
Nathan Bronson authored
Summary: Parameterizing Range by the template arg T is potentially confusing because it violates the typical container pattern of T being the value type. This diff uses Range<Iter> consistently in Range.h when the template arg refers to a fully general iterator. Reviewed By: yfeldblum Differential Revision: D4635270 fbshipit-source-id: f70bb2e3e23ab9875fba3dbf7b11492613a037b8
-
Philipp Unterbrunner authored
Summary: C++14 has no direct means of creating a std::weak_ptr, one must always create a (temporary) std::shared_ptr first. C++17 adds weak_from_this() to std::enable_shared_from_this to avoid that overhead. Alas code that is meant to compile under different language versions cannot rely on std::enable_shared_from_this::weak_from_this(). This new utility class uses SFINAE to call std::enable_shared_from_this<T>::weak_from_this() if available. Falls back to std::enable_shared_from_this<T>::shared_from_this() otherwise. Use as a drop-in replacement for std::enable_shared_from_this where weak_from_this() is desired. Reviewed By: yfeldblum Differential Revision: D4616394 fbshipit-source-id: 73bf6cd8852d4a33478a9280cc69c81e7ea73423
-
- 28 Feb, 2017 1 commit
-
-
Haijun Zhu authored
Summary: As title, convenient for debugging. Asked for from D4542856 Reviewed By: nkg- Differential Revision: D4618623 fbshipit-source-id: 21b86944f513da0700039a3e3736937fd72e8887
-
- 27 Feb, 2017 6 commits
-
-
Ted Percival authored
Summary: `make check` was failing because <gmock.h> is included but not supplied. Updating to googletest 1.8.0 includes both googletest & googlemock, so `make check` now runs (and passes). Closes https://github.com/facebook/folly/pull/547 Reviewed By: igorsugak Differential Revision: D4593403 Pulled By: Orvid fbshipit-source-id: 02f80e7b67e17562ff981e9c80a37f985eb685be
-
Kyle Nekritz authored
Summary: I think this ended up encompassing more than intended. Reviewed By: yfeldblum, maxgeorg Differential Revision: D4622645 fbshipit-source-id: 26597098a479b85d6ecc64abef2ecc53637ee759
-
Kyle Nekritz authored
Summary: Fixes "undefined behavior" in ubsan builds when using an empty ByteRange. Reviewed By: siyengar Differential Revision: D4613663 fbshipit-source-id: 4b53ba764609acc986340f10613f84585fa697cf
-
Christopher Dykes authored
Summary: They are checks that aren't actually used anywhere to guard anything, so kill them. Many are for things that have long since been standard, or aren't even used. Reviewed By: yfeldblum Differential Revision: D4615947 fbshipit-source-id: 2179caff4ef8583c89efedbff3136ae5fc552424
-
Christopher Dykes authored
Summary: This is the only place `inttypes.h` is used in Folly and it's used in a context where `cstdint` would have sufficed. Reviewed By: yfeldblum Differential Revision: D4619248 fbshipit-source-id: e67dccb7d8bf1ad5f7539d4b039590253e8d8c79
-
Christopher Dykes authored
Summary: These are the only includes of `sched.h` in Folly, and they really are unused: Reviewed By: yfeldblum Differential Revision: D4615501 fbshipit-source-id: 6a3a1aad7a91a92a322fd93d18e1284aa3f86b89
-
- 26 Feb, 2017 2 commits
-
-
Philip Pronin authored
Summary: It currently takes ~32kB of stack trace to run symbolizer, which is very close to ASan alt stack size (32 kB). If we exclude `demangle` (which can use unbound stack size in extreme cases), the heaviest path in symbolizer includes `FrameArray<100>` and three arrays of `PATH_MAX` (4 kB) size. This diff removes the former and one of the latters, reducing this code path from 32 kB to ~10 kB. Reviewed By: ot, yfeldblum Differential Revision: D4618467 fbshipit-source-id: e6a53b61b3d5f6e8b892216d2e9b839ed8430d0e
-
Christopher Dykes authored
Summary: It was only needed for GCC 4.7 support. GCC 4.8 and above support it. Reviewed By: yfeldblum Differential Revision: D4616044 fbshipit-source-id: 177d7b3b7090134f9d8084a3ba7a984446c87d5e
-
- 25 Feb, 2017 1 commit
-
-
Michael Lee authored
Summary: `last` was already passed in as a variable, so switch this so there isn't a local variable at all. Reviewed By: mlogan, yfeldblum Differential Revision: D4615206 fbshipit-source-id: dd8e3157e54dc2abe3dfd97837ce327371f4f7b2
-
- 24 Feb, 2017 2 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Drop support for gcc 4.7 with byteswap shim Reviewed By: igorsugak, Orvid Differential Revision: D4610746 fbshipit-source-id: 092cd432c7bda9ca5507d0230b6fcaa43b96c500
-
Giuseppe Ottaviano authored
Summary: `previousValue` makes the incorrect assumption that `outer_` is a multiple of the word size. This is incorrect because `skipToNext` can reposition at an arbitrary point. The bug is very rare because it can only happen if there is a gap larger than the skip quantum after the first element in the upper bits. Reviewed By: philippv Differential Revision: D4607270 fbshipit-source-id: ff016f09f3f1f87314b68370e3dc137b82694f45
-
- 23 Feb, 2017 1 commit
-
-
Mark Logan authored
Summary: antonl noticed that bulk_insert doesn't remove duplicates. We now run a std::unique() pass after merging. Reviewed By: yfeldblum Differential Revision: D4595304 fbshipit-source-id: 538364150aeea64b95488da158c09e07a6597e7c
-
- 21 Feb, 2017 1 commit
-
-
Michael Lee authored
Summary: `getCommonName` and `getSubjectAltName` are useful shared utility functions. Reviewed By: anirudhvr Differential Revision: D4546866 fbshipit-source-id: bcefc1ff3a02df93fbf0cd2d4f24569928bd1753
-
- 20 Feb, 2017 1 commit
-
-
Mark Williams authored
Summary: dbg and dbgo builds of hhvm with gcc-5 crash when generating backtraces using folly::Symbolizer, because the .debug_aranges for libc-2.23.so are SHF_COMPRESSED, and folly::Symbolizer doesn't recognize that. Just pretend that the section doesn't exist if it has SHF_COMPRESSED set. We might eventually want to support decompressing such sections under an option - but folly::Symbolizer's goal is to just mmap and walk the debug info without allocating memory (so that it can run while handling signals etc). Reviewed By: pixelb Differential Revision: D4586762 fbshipit-source-id: bef61ed670d1a80caa4f7aac1f80fd2a92cc4ba9
-
- 17 Feb, 2017 2 commits
-
-
Maged Michael authored
Summary: Added two variants of Baton by adding two Boolean template parameters with defaults that correspond to the original single poster blocking waiter version: - SinglePoster (single poster vs multiple posters). Default true. - Blocking (vs spinning). Default true. The multi-poster baton (SinglePoster = false) can be handed over by multiple concurrent posters, where redundant post()-s are idempotent but if a post() arrives after the baton is reset() then it unblocks the waiter. The nonblocking Baton (Blocking = false) has faster common case post(), by avoiding CAS in the critical path. It does so by disallowing waiter blocking and timed_wait(). Reviewed By: nbronson Differential Revision: D4506728 fbshipit-source-id: e5b65ad93e443fbba22164319c985ebc8424554a
-
Yedidya Feldblum authored
Summary: [Folly] Fix `exception_wrapper::throwException` when called before `main`. When the `exception_wrapper` is empty, then `throwException` emits a message to `std::cerr` and terminates. If called before `main` begins or after `main` ends, then `std::cerr` might not have been constructed yet or might have already been destructed. Bad. Segfault, etc. So we need to ensure that `std::cerr` is alive by holding an instance of `std::ios_base::Init`. Reviewed By: Orvid Differential Revision: D4576190 fbshipit-source-id: dd84b5e82eb6bd817d405baf530714e0f4c314c5
-
- 16 Feb, 2017 4 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Drop support for Clang < 3.9. Reviewed By: igorsugak Differential Revision: D4567233 fbshipit-source-id: cd94c711f0390d249b6736ab292721a477022b02
-
Christopher Dykes authored
Summary: MSVC 2015 has issues with templated `using` declarations using `decltype`, so adjust the definition to use constexpr evaluation to fill a template parameter of a base type instead. Reviewed By: yfeldblum Differential Revision: D4510155 fbshipit-source-id: cc2e33625b515085dff4e682971299810905fef0
-
Christopher Dykes authored
Summary: This includes both unused parameters (W4100) and conditional expression is constant (W4127). Reviewed By: yfeldblum Differential Revision: D4525057 fbshipit-source-id: 7c057dbe239d02fa2e3ce96373d53814591994ec
-
Christopher Dykes authored
Summary: They do the same thing, and the first is portable. Reviewed By: yfeldblum Differential Revision: D4569649 fbshipit-source-id: db0434766f674a7789d6e59335e122b4d2131e06
-