aboutsummaryrefslogtreecommitdiff
path: root/contrib/epee/include/storages (follow)
AgeCommit message (Collapse)AuthorFilesLines
2023-09-22storages: change error log category to serializationselsta2-0/+6
2023-05-08fix missing <cstdint> includestobtoht1-0/+1
2022-05-17src, epee: fix a couple compiler warningsselsta1-1/+0
2022-05-10Merge pull request #8226luigi11113-5/+5
002bf9c Fix typo: SERIALIZE_TYPE_DUOBLE (Jeffrey)
2022-04-18Refactor out pragma_comp_defsJeffrey1-10/+4
Relevant commits on the old cleanup PR: 36933c7f5c7778e2d7fbfea5361c11fb41070467 21e43de0f300ee47b7e597098908601bf591950b 3c678bb1cedfd7b865ac2e7aaf014de4bfb3eb3d
2022-04-18Trimming FatJeffrey1-48/+0
Remove unused include statements or unused definitions.
2022-04-18Boring Old DeletesJeffrey2-130/+0
Here lies dozens of unused files. This commit is ONLY file deletions except for the removing of a couple of #includes and removing filenames from CmakeLists where appropriate.
2022-04-06Merge pull request #8228luigi11111-39/+1
1ce9e9c Remove dead code from parserse_base_utils and fix unit tests (Jeffrey)
2022-04-06Merge pull request #8197luigi11111-1/+1
da9aa1f Copyright: Update to 2022 (mj-xmr)
2022-03-30Remove dead code from parserse_base_utils and fix unit testsJeffrey1-39/+1
* Remove `match_string()`, `match_number()`, and `match_word()` * Remove `match_word_with_extrasymb()` and `match_word_til_equal_mark()` * Adapt unit test for `match_number()` to `match_number2()` * Adapt unit test for `match_string()` to `match_string2()` Note: the unit tests were testing for the old version of the functions, and the interfaces for these functions changed slightly, so I had to also edit the tests. As of writing, this PR has no merge conflicts with #8211 Additional changes during review: * Explicitly set up is_[float/signed]_val to be changed before each call * Structify the tests and fix uninitialized variables
2022-03-25Fix typo: SERIALIZE_TYPE_DUOBLEJeffrey3-5/+5
2022-03-04Copyright: Update to 2022mj-xmr1-1/+1
2022-02-19Undefined behaviour fixesSChernykh1-0/+12
Fixes issues reported in #8120
2021-06-11Compil time: move epee storages/parserse_base_utils.h to parserse_base_utils.cppmj-xmr1-232/+8
2021-05-24Fix boost 1.76.0 compatibilityloqs1-0/+2
Add missing header boost/mpl/contains.hpp monero-project/monero/issues/7728
2021-01-19Remove payload copy in all outgoing p2p messagesLee Clagett3-35/+41
2021-04-16Revert "Merge pull request #7136"luigi11113-41/+35
This reverts commit 63c7ca07fba2f063c760f786a986fb3e02fb040e, reversing changes made to 2218e23e84a89e9a1e4c0be5d50f891ab836754f.
2021-04-16Merge pull request #7136luigi11113-35/+41
23aae55 Remove payload copy in all outgoing p2p messages (Lee Clagett)
2021-03-28Reduce compilation time of epee/portable_storage_template_helper.hmj-xmr1-1/+1
2021-02-06Reduce compilation time of epee/portable_storage.hmj-xmr6-203/+15
2021-01-16Remove payload copy in all outgoing p2p messagesLee Clagett3-35/+41
2021-01-07storages: overridable limits for loading portable_storage from binarymoneromooo-monero5-33/+63
2021-01-06Merge pull request #7281luigi11111-1/+11
b9092dd epee: also limit number of strings in portable_storage (moneromooo-monero)
2021-01-05epee: also limit number of strings in portable_storagemoneromooo-monero1-1/+11
They require at least 24 bytes
2021-01-02portable_storage: better sanity checkingmoneromooo-monero1-2/+7
2021-01-01Merge pull request #7243Alexander Blair1-1/+6
8e2caf3fb portable_storage: check object limit where appropriate (moneromooo)
2021-01-01Merge pull request #7220Alexander Blair3-0/+3
20bdbd7aa portable_storage: forbid unnamed sections (xiphon)
2020-12-31portable_storage: check object limit where appropriatemoneromooo1-1/+6
also fix pedantic off by one in check
2020-12-28portable_storage: forbid unnamed sectionsxiphon3-0/+3
2020-12-28portable_storage: remove array element limitmoneromooo-monero1-5/+0
some people don't want it
2020-12-27portable_storage: remove overly aggressive cutoffmoneromooo-monero1-2/+0
2020-12-26portable_storage: add some sanity checks on data sizemoneromooo-monero1-1/+35
especially when allocated size is >> serialized data size
2020-12-20Restrict duplicate keys in epee binary formatLee Clagett1-1/+4
2020-10-10Change epee binary output from std::stringstream to byte_streamLee Clagett4-40/+29
2020-08-02epee: further defending against exceptions in command handlersmoneromooo-monero1-0/+7
2020-07-19Merge pull request #6512Alexander Blair1-1/+1
5ef0607da Update copyright year to 2020 (SomaticFanatic)
2020-06-21epee: fix array underflow in unicode parsingmoneromooo-monero1-1/+1
Reported by minerscan Also independently found by OSS-Fuzz just recently
2020-05-31Fix boost <1.60 compilation and fix boost 1.73+ warningsLee Clagett1-4/+5
2020-05-14build: fix boost 1.73 compatibilityselsta1-4/+4
2020-05-06Update copyright year to 2020SomaticFanatic1-1/+1
Update copyright year to 2020
2020-04-15Allow wallet2.h to run in WebAssemblywoodser1-5/+5
- Add abstract_http_client.h which http_client.h extends. - Replace simple_http_client with abstract_http_client in wallet2, message_store, message_transporter, and node_rpc_proxy. - Import and export wallet data in wallet2. - Use #if defined __EMSCRIPTEN__ directives to skip incompatible code.
2020-04-04Merge pull request #6351luigi11111-0/+2
81c5943 Remove temporary std::string creation in some hex->bin calls (vtnerd) 5fcc23a Move hex->bin conversion to monero copyright files and with less includes (vtnerd) 3387f0e Reduce template bloat in hex->bin for ZMQ json (vtnerd)
2020-03-31Merge pull request #6311luigi11111-0/+7
5002a03 Explicitly define copy assignment operator (omartijn)
2020-03-09Move hex->bin conversion to monero copyright files and with less includesLee Clagett1-0/+2
2020-02-28Merge pull request #6220Alexander Blair5-39/+46
a9bdc6e4 Improved performance for epee serialization: (Lee Clagett)
2020-01-28Explicitly define copy assignment operatorMartijn Otto1-0/+7
The implicit copy assignment operator was deprecated because the class has an explicit copy constructor. According to the standard: The generation of the implicitly-defined copy assignment operator is deprecated (since C++11) if T has a user-declared destructor or user-declared copy constructor. Recent versions of gcc (9.1+) and clang (10.0) warn about this.
2020-01-26network: log traffic and add a simple traffic analysis scriptmoneromooo-monero1-5/+43
2019-11-04Improved performance for epee serialization:Lee Clagett5-39/+46
- Removed copy of field names in binary deserialization - Removed copy of array values in binary deserialization - Removed copy of string values in json deserialization - Removed unhelpful allocation in json string value parsing - Removed copy of blob data on binary and json serialization
2019-10-25daemon, wallet: new pay for RPC use systemmoneromooo-monero1-1/+10
Daemons intended for public use can be set up to require payment in the form of hashes in exchange for RPC service. This enables public daemons to receive payment for their work over a large number of calls. This system behaves similarly to a pool, so payment takes the form of valid blocks every so often, yielding a large one off payment, rather than constant micropayments. This system can also be used by third parties as a "paywall" layer, where users of a service can pay for use by mining Monero to the service provider's address. An example of this for web site access is Primo, a Monero mining based website "paywall": https://github.com/selene-kovri/primo This has some advantages: - incentive to run a node providing RPC services, thereby promoting the availability of third party nodes for those who can't run their own - incentive to run your own node instead of using a third party's, thereby promoting decentralization - decentralized: payment is done between a client and server, with no third party needed - private: since the system is "pay as you go", you don't need to identify yourself to claim a long lived balance - no payment occurs on the blockchain, so there is no extra transactional load - one may mine with a beefy server, and use those credits from a phone, by reusing the client ID (at the cost of some privacy) - no barrier to entry: anyone may run a RPC node, and your expected revenue depends on how much work you do - Sybil resistant: if you run 1000 idle RPC nodes, you don't magically get more revenue - no large credit balance maintained on servers, so they have no incentive to exit scam - you can use any/many node(s), since there's little cost in switching servers - market based prices: competition between servers to lower costs - incentive for a distributed third party node system: if some public nodes are overused/slow, traffic can move to others - increases network security - helps counteract mining pools' share of the network hash rate - zero incentive for a payer to "double spend" since a reorg does not give any money back to the miner And some disadvantages: - low power clients will have difficulty mining (but one can optionally mine in advance and/or with a faster machine) - payment is "random", so a server might go a long time without a block before getting one - a public node's overall expected payment may be small Public nodes are expected to compete to find a suitable level for cost of service. The daemon can be set up this way to require payment for RPC services: monerod --rpc-payment-address 4xxxxxx \ --rpc-payment-credits 250 --rpc-payment-difficulty 1000 These values are an example only. The --rpc-payment-difficulty switch selects how hard each "share" should be, similar to a mining pool. The higher the difficulty, the fewer shares a client will find. The --rpc-payment-credits switch selects how many credits are awarded for each share a client finds. Considering both options, clients will be awarded credits/difficulty credits for every hash they calculate. For example, in the command line above, 0.25 credits per hash. A client mining at 100 H/s will therefore get an average of 25 credits per second. For reference, in the current implementation, a credit is enough to sync 20 blocks, so a 100 H/s client that's just starting to use Monero and uses this daemon will be able to sync 500 blocks per second. The wallet can be set to automatically mine if connected to a daemon which requires payment for RPC usage. It will try to keep a balance of 50000 credits, stopping mining when it's at this level, and starting again as credits are spent. With the example above, a new client will mine this much credits in about half an hour, and this target is enough to sync 500000 blocks (currently about a third of the monero blockchain). There are three new settings in the wallet: - credits-target: this is the amount of credits a wallet will try to reach before stopping mining. The default of 0 means 50000 credits. - auto-mine-for-rpc-payment-threshold: this controls the minimum credit rate which the wallet considers worth mining for. If the daemon credits less than this ratio, the wallet will consider mining to be not worth it. In the example above, the rate is 0.25 - persistent-rpc-client-id: if set, this allows the wallet to reuse a client id across runs. This means a public node can tell a wallet that's connecting is the same as one that connected previously, but allows a wallet to keep their credit balance from one run to the other. Since the wallet only mines to keep a small credit balance, this is not normally worth doing. However, someone may want to mine on a fast server, and use that credit balance on a low power device such as a phone. If left unset, a new client ID is generated at each wallet start, for privacy reasons. To mine and use a credit balance on two different devices, you can use the --rpc-client-secret-key switch. A wallet's client secret key can be found using the new rpc_payments command in the wallet. Note: anyone knowing your RPC client secret key is able to use your credit balance. The wallet has a few new commands too: - start_mining_for_rpc: start mining to acquire more credits, regardless of the auto mining settings - stop_mining_for_rpc: stop mining to acquire more credits - rpc_payments: display information about current credits with the currently selected daemon The node has an extra command: - rpc_payments: display information about clients and their balances The node will forget about any balance for clients which have been inactive for 6 months. Balances carry over on node restart.
2019-09-04storages: fix "portable" storage on big endianmoneromooo-monero3-3/+57
2019-09-04storages: fix writing varints on big endianmoneromooo-monero1-1/+1
2019-08-16epee: support unicode in parsed stringsmoneromooo-monero1-0/+59
2019-06-14epee: basic sanity check on allocation size from untrusted sourcemoneromooo-monero1-0/+1
Reported by guidov
2019-04-06Merge pull request #5348Riccardo Spagni2-4/+5
59776a64 epee: some more minor JSON parsing speedup (moneromooo-monero)
2019-03-25epee: some more minor JSON parsing speedupmoneromooo-monero2-4/+5
2019-03-18Implement array_entry_t copy constructorGuido Vranken1-0/+1
Manually initialize the array_entry_t iterator to ensure it points to the correct m_array, thereby preventing a potential use-after-free situation. Signed-off-by: Guido Vranken <guidovranken@gmail.com>
2019-01-16epee: speedup word/number matchingmoneromooo-monero2-45/+89
Number matching semantics are slightly changed: since this is used as a filter to check whether a number is signed and/or floating point, we can speed this up further. strto* functions are called afterwards and will error out where necessary. We now also accept numbers like .4 which were not accepted before. The strto* calls on a boost::string_ref will not access unallocated memory since the parsers always stop at the first bad character, and the original string is zero terminated. in arbitrary time measurement units for some arbitrary test case: match_number2: 235 -> 70 match_word2: 330 -> 108
2019-01-16Merge pull request #5021Riccardo Spagni2-3/+13
b82efa32 epee: speed up json parsing (moneromooo-monero)
2019-01-16Merge pull request #4976Riccardo Spagni4-14/+23
85665003 epee: better network buffer data structure (moneromooo-monero)
2019-01-06Merge pull request #4938Riccardo Spagni1-2/+6
a13eb0a1 epee: speed up string matching a bit (moneromooo-monero) 3a3858dc epee: avoid string allocation when parsing a pod from string (moneromooo-monero)
2018-12-27epee: speed up json parsingmoneromooo-monero2-3/+13
2018-12-23epee: better network buffer data structuremoneromooo-monero4-14/+23
avoids pointless allocs and memcpy
2018-12-08epee: speed up string matching a bitmoneromooo-monero1-2/+6
2018-12-04epee: fix network packet header field endiannessmoneromooo-monero1-4/+5
2018-11-16Merge pull request #4775Riccardo Spagni1-11/+41
741e4a11 epee: speed up json number parsing (moneromooo-monero)
2018-11-01epee: speed up json number parsingmoneromooo-monero1-11/+41
2018-10-24epee: some minor speedup in parsingmoneromooo-monero1-2/+4
2018-09-25epee: fix stack overflow on crafted inputmoneromooo-monero1-5/+8
2018-09-25epee: fix invalid memory write reading an array entrymoneromooo-monero1-0/+8
Reported by Lilith Wyatt at Talos. Since this is not needed in normal operation, I just let this error out.
2018-08-19epee: some speedup in parsingmoneromooo-monero1-1/+8
2018-02-16Merge pull request #3226Riccardo Spagni1-1/+1
e4646379 keccak: fix mdlen bounds sanity checking (moneromooo-monero) 2e3e90ac pass large parameters by const ref, not value (moneromooo-monero) 61defd89 blockchain: sanity check number of precomputed hash of hash blocks (moneromooo-monero) 9af6b2d1 ringct: fix infinite loop in unused h2b function (moneromooo-monero) 8cea8d0c simplewallet: double check a new multisig wallet is multisig (moneromooo-monero) 9b98a6ac threadpool: catch exceptions in dtor, to avoid terminate (moneromooo-monero) 24803ed9 blockchain_export: fix buffer overflow in exporter (moneromooo-monero) f3f7da62 perf_timer: rewrite to make it clear there is no division by zero (moneromooo-monero) c6ea3df0 performance_tests: remove add_arg call stray extra param (moneromooo-monero) fa6b4566 fuzz_tests: fix an uninitialized var in setup (moneromooo-monero) 03887f11 keccak: fix sanity check bounds test (moneromooo-monero) ad11db91 blockchain_db: initialize m_open in base class ctor (moneromooo-monero) bece67f9 miner: restore std::cout precision after modification (moneromooo-monero) 1aabd14c db_lmdb: check hard fork info drop succeeded (moneromooo-monero)
2018-02-02pass large parameters by const ref, not valuemoneromooo-monero1-1/+1
Coverity 136394 136397 136409 136526 136529 136533 175302
2018-01-29Fix method name in invoke_http_json_rpcErik de Castro Lopo1-1/+1
Previously, the method name was printed as an exmpty string because the input string had already been moved with `std::move`.
2018-01-25Merge pull request #3012Riccardo Spagni1-8/+18
e4bbeff2 epee: check some error return values (moneromooo-monero)
2018-01-11epee: detect strptime, use std::get_time as fallbackmoneromooo-monero1-0/+6
2017-12-27epee: check some error return valuesmoneromooo-monero1-8/+18
2017-12-21epee: use strptime instead of std::get_time, for compatibilitymoneromooo-monero1-3/+3
2017-12-16move includes around to lessen overall loadmoneromooo-monero3-2/+5
2017-11-14epee: don't disable -Wtautological-constant-out-of-range-compare on GCCmoneromooo-monero1-0/+2
It's a CLANG only option, and causes GCC to error out
2017-10-28epee: disable a spurious warning for a storage functionmoneromooo-monero1-0/+1
2017-10-15Serializer: string to integer conversion for MyMonero compatibilityJaquee1-0/+27
mymonero timestamp conversion
2017-10-15epee http_client SSL supportJaquee1-1/+4
2017-08-15Merge pull request #2253Riccardo Spagni1-2/+2
51ebedb8 epee: remove a couple unused locals (moneromooo-monero)
2017-08-05epee: remove a couple unused localsmoneromooo-monero1-2/+2
2017-07-05Fix spelling errorsErik de Castro Lopo1-1/+1
2017-02-24Updated default RPC timeout from 5 seconds to 15 secondsLee Clagett1-4/+4
2017-02-06Add server auth to monerod, and client auth to wallet-cli and wallet-rpcLee Clagett1-4/+7
2017-01-25Updates to epee HTTP client codeLee Clagett1-17/+17
- http_simple_client now uses std::chrono for timeouts - http_simple_client accepts timeouts per connect / invoke call - shortened names of epee http invoke functions - invoke command functions only take relative path, connection is not automatically performed
2017-01-20removing some unsed epee filesmoneroexamples1-132/+0
2017-01-16Change logging to easylogging++moneromooo-monero2-4/+7
This replaces the epee and data_loggers logging systems with a single one, and also adds filename:line and explicit severity levels. Categories may be defined, and logging severity set by category (or set of categories). epee style 0-4 log level maps to a sensible severity configuration. Log files now also rotate when reaching 100 MB. To select which logs to output, use the MONERO_LOGS environment variable, with a comma separated list of categories (globs are supported), with their requested severity level after a colon. If a log matches more than one such setting, the last one in the configuration string applies. A few examples: This one is (mostly) silent, only outputting fatal errors: MONERO_LOGS=*:FATAL This one is very verbose: MONERO_LOGS=*:TRACE This one is totally silent (logwise): MONERO_LOGS="" This one outputs all errors and warnings, except for the "verify" category, which prints just fatal errors (the verify category is used for logs about incoming transactions and blocks, and it is expected that some/many will fail to verify, hence we don't want the spam): MONERO_LOGS=*:WARNING,verify:FATAL Log levels are, in decreasing order of priority: FATAL, ERROR, WARNING, INFO, DEBUG, TRACE Subcategories may be added using prefixes and globs. This example will output net.p2p logs at the TRACE level, but all other net* logs only at INFO: MONERO_LOGS=*:ERROR,net*:INFO,net.p2p:TRACE Logs which are intended for the user (which Monero was using a lot through epee, but really isn't a nice way to go things) should use the "global" category. There are a few helper macros for using this category, eg: MGINFO("this shows up by default") or MGINFO_RED("this is red"), to try to keep a similar look and feel for now. Existing epee log macros still exist, and map to the new log levels, but since they're used as a "user facing" UI element as much as a logging system, they often don't map well to log severities (ie, a log level 0 log may be an error, or may be something we want the user to see, such as an important info). In those cases, I tried to use the new macros. In other cases, I left the existing macros in. When modifying logs, it is probably best to switch to the new macros with explicit levels. The --log-level options and set_log commands now also accept category settings, in addition to the epee style log levels.
2016-10-27Unkonown -> unknownNanoAkron1-1/+1
2016-05-18contrib: epee: add exception spec to throwing destructorsredfish1-1/+1
The destructors get a noexcept(true) spec by default, but these destructors in fact throw exceptions. An alternative fix might be to not throw (most if not all of these throws are non-essential error-reporting/logging).
2016-03-25remove unecessary and bad std::move from portable_storage_template_helper.hRiccardo Spagni1-2/+2
2016-03-21Revert "Print stack trace upon exceptions"moneromooo-monero1-2/+2
Ain't nobody got time for link/cmake skullduggery. This reverts commit fff238ec94ac6d45fc18c315d7bc590ddfaad63d.
2016-03-19Print stack trace upon exceptionsmoneromooo-monero1-2/+2
Useful for debugging users' logs
2015-05-25Fix compile for GCC 5.1.0warptangent1-1/+1
Add fix for compile error with multiple uses of peerid_type (uint64_t) variable in lambda expression. - known GCC issue: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65843 epee: replace return value of nullptr for expected boolean with false. Fixes #231.
2015-02-202014 network limit 1.1 +utils +toc -doc -drmonerorfree2monero1-2/+2
Update of the PR with network limits works very well for all speeds (but remember that low download speed can stop upload because we then slow down downloading of blockchain requests too) more debug options fixed pedantic warnings in our code should work again on Mac OS X and FreeBSD fixed warning about size_t tested on Debian, Ubuntu, Windows(testing now) TCP options and ToS (QoS) flag FIXED peer number limit FIXED some spikes in ingress/download FIXED problems when other up and down limit
2015-01-02year updated in licenseRiccardo Spagni10-10/+10
2014-07-25move modified epee code to new classes, revert licensefluffypony14-353/+316
2014-07-23License updated to BSD 3-clausefluffypony14-316/+353
2014-05-250.8.8updatemydesktop3-41/+53
2014-04-30mac osx building fixesmydesktop1-1/+1
2014-04-30various fixes to allow mac osx compilationmydesktop1-1/+1
2014-04-07Improvements in JSON RPCAntonio Juarez1-1/+17
2014-04-02json rpc for wallet and bugfixAntonio Juarez1-2/+2
2014-03-20some fixesAntonio Juarez1-1/+1
2014-03-03moved all stuff to githubAntonio Juarez14-0/+2893