Commit Graph

295 Commits

Author SHA1 Message Date
Péter Szilágyi
ccbb56b4f2 cmd/geth, eth, ethdb: monitor database compactions 2015-06-30 00:51:29 +02:00
Péter Szilágyi
803b3c4a82 eth, ethdb: measure database operation latencies too 2015-06-24 18:34:05 +03:00
Péter Szilágyi
0609fcf030 eth: make sure dbs are lvldb before instrumenting 2015-06-24 18:34:04 +03:00
Péter Szilágyi
792b0ddccd core, eth, eth/fetcher, ethdb: polish metrics gathering a bit 2015-06-24 18:34:04 +03:00
Péter Szilágyi
b91b581b80 eth, eth/fetcher: propagate after header verify, announce only on insert 2015-06-18 18:00:19 +03:00
Jeffrey Wilcke
cc0b451119 Merge pull request #1260 from obscuren/tx-drop-low-tx
core: drop low gas tx
2015-06-15 09:09:44 -07:00
Jeffrey Wilcke
f2a2164184 Merge pull request #990 from zsfelfoldi/gasprice
eth: add GasPriceOracle
2015-06-15 08:44:25 -07:00
zsfelfoldi
3f94d09c1f fixed saving receipts 2015-06-15 15:55:38 +02:00
obscuren
6d817e16c1 core, miner: tx pool drops txs below ask price 2015-06-15 11:33:08 +02:00
Péter Szilágyi
66d3dc8690 eth, eth/downloader: move peer removal into downloader 2015-06-15 09:22:36 +03:00
obscuren
90c4493a10 eth, core: interupt the chain processing on stop
Added an additional channel which is used to interupt the chain manager
when it's processing blocks.
2015-06-12 13:41:34 +02:00
obscuren
65a48f9cd8 core: fixed race condition in the transaction pool
Removed `Stop/Start` mechanism from the transaction pool.
2015-06-10 17:13:32 +02:00
obscuren
a5b977aa90 core: write accounts to statedb. Closes #1210 2015-06-09 11:37:01 +02:00
obscuren
6244b10a8f core: settable genesis nonce
You can set the nonce of the block with `--genesisnonce`. When the
genesis nonce changes and it doesn't match with the first block in your
database it will fail. A new `datadir` must be given if the nonce of the
genesis block changes.
2015-06-08 18:33:43 +02:00
obscuren
d09a6e5421 core, eth, miner: moved nonce management to tx pool.
Removed the managed tx state from the chain manager to the transaction
pool where it's much easier to keep track of nonces (and manage them).
The transaction pool now also uses the queue and pending txs differently
where queued txs are now moved over to the pending queue (i.e. txs ready
for processing and propagation).
2015-06-03 22:43:23 +02:00
Felix Lange
5197aed7db cmd/utils, eth: core.NewBlockProcessor no longer needs TxPool 2015-06-03 22:43:23 +02:00
Taylor Gerring
057d36b049 Update bootnode 2015-05-31 13:48:27 -05:00
Péter Szilágyi
e1a0ee8fc5 cmd/geth, cmd/utils, eth, p2p: pass and honor a no discovery flag 2015-05-26 19:07:24 +03:00
Péter Szilágyi
278183c7e7 eth, p2p: start the p2p server even if maxpeers == 0 2015-05-26 17:49:37 +03:00
Felix Lange
2f249fea44 eth: stop p2p.Server on shutdown 2015-05-25 01:17:14 +02:00
zelig
bed80133e0 automatic DAG pregeneration for smooth epoch transitions
- backend: AutoDAG bool flag passed from cli/eth.Config to ethereum, autoDAG loop started if true
- backend: autoDAG loop start/stop, remove previous DAG
- cli: AutoDAG bool flag, off by default, but automatically ON if mining
- admin jsre: add startAutoDAG stopAutoDAG and makeDAG in miner section
- switch on/off DAG autogeneration when miner started/stopped on console
2015-05-21 15:53:42 +01:00
obscuren
207bd55751 eth: reduced max open files for LevelDB 2015-05-21 11:45:35 +02:00
zelig
22b694ee1e solc now in ethereum, fixes solc path setting; setSolc() didnt work 2015-05-20 02:47:13 +01:00
obscuren
c67424ecc8 core: parallelise nonce checking when processing blocks
ChainManager now uses a parallel approach to block processing where all
nonces are checked seperatly from the block processing process. This
speeds up the process by about 3 times on my i7
2015-05-18 13:59:22 +02:00
obscuren
55d85d60fd eth, cmd/geth: start mining from console respects CLI flag 2015-05-15 20:26:15 +02:00
obscuren
b71091e337 eth, eth/downloader, miner: use download events to check miner start 2015-05-15 00:43:10 +02:00
Gustav Simonsson
8754f2b768 Fix common.Address / []byte type conversions 2015-05-12 17:19:39 +02:00
Gustav Simonsson
da9fe951da Use common.Address type for accounts.Address 2015-05-12 17:19:39 +02:00
Jeffrey Wilcke
58d6ec689f Merge pull request #933 from bas-vk/issue928
replaced path with platform aware filepath module
2015-05-12 08:23:46 -07:00
Bas van Kervel
b79dd188d9 replaced several path.* with filepath.* which is platform independent 2015-05-12 14:24:11 +02:00
obscuren
96d4a7d087 eth, ethdb: lower the amount of open files & improve err messages for db
Closes #880
2015-05-12 14:14:56 +02:00
obscuren
13f8f65a58 eth, ethdb: lower the amount of open files & improve err messages for db
Closes #880
2015-05-12 11:28:55 +02:00
obscuren
21e52efdfe cmd/geth, miner, backend, xeth: Fixed miner threads to be settable
Miner threads are now settable through the admin interface (closes #897)
and specify 0 CPU worker threads when eth_getWork is called (closes #916)
2015-05-11 17:21:22 +02:00
obscuren
a2919b5e17 core, eth, miner: improved tx removal & fatal error on db sync err
* core: Added GasPriceChange event
* eth: When one of the DB flush methods error a fatal error log message
  is given. Hopefully this will prevent corrupted databases from
  occuring.
* miner: remove transactions with low gas price. Closes #906, #903
2015-05-11 11:39:33 +02:00
obscuren
cb1fa523e4 cmd/geth, cmd/mist, eth, flags: renamed loglevel to verbosity 2015-05-09 12:00:51 +02:00
Péter Szilágyi
4d5a719f25 cmd, eth, p2p: introduce pending peer cli arg, add tests 2015-05-07 15:30:56 +03:00
obscuren
062fa049d0 fixed merge issue 2015-05-06 22:54:21 +02:00
Jeffrey Wilcke
24d44f35f2 Merge pull request #791 from fjl/discover-sha3-distance
p2p/discover: sha3-based node distance
2015-05-06 13:48:57 -07:00
Gustav Simonsson
b1cc9cdc74 Integrate new ethash API and change geth makedag cmd 2015-05-05 08:24:15 +02:00
Péter Szilágyi
4accc187d5 eth, p2p: add trusted node list beside static list 2015-05-04 13:59:51 +03:00
obscuren
016f152b36 eth, eth/downloader: Moved block processing & graceful shutdown
The downloader is no longer responsible for processing blocks. The
eth-protocol handler now takes care of this instead.

Added graceful shutdown during block processing. Closes #846
2015-05-01 15:58:44 +02:00
Péter Szilágyi
413ace37d3 eth, p2p: rename trusted nodes to static, drop inbound extra slots 2015-04-30 19:32:48 +03:00
obscuren
15873fafc0 core: added a wait group to chain manager for graceful shutdown 2015-04-30 17:50:47 +02:00
Péter Szilágyi
701591b403 cmd, eth, p2p: fix review issues enumerated by Felix 2015-04-30 16:15:29 +03:00
Péter Szilágyi
679c90b873 cmd/geth, cmd/utils, eth: internalize trusted node config file 2015-04-30 16:03:47 +03:00
Péter Szilágyi
de0549fabb cmd/geth, cmd/mist, cmd/utils, eth, p2p: support trusted peers 2015-04-30 16:03:10 +03:00
Felix Lange
fc747ef4a6 p2p/discover: new endpoint format
This commit changes the discovery protocol to use the new "v4" endpoint
format, which allows for separate UDP and TCP ports and makes it
possible to discover the UDP address after NAT.
2015-04-30 14:57:33 +02:00
Jeffrey Wilcke
91cb8cdd2a Merge pull request #793 from karalabe/discovery-node-cache
p2p/discover: persistent node database
2015-04-28 03:40:10 -07:00
Péter Szilágyi
19bc4624ea eth: pull in a lost merge change
Ref: 21c4c155ee
2015-04-28 10:49:04 +03:00
Jeffrey Wilcke
8d09f95bc7 Merge pull request #805 from obscuren/download_improvements
eth, eth/downloader: improve downloader and remove asynchronousness
2015-04-24 15:56:17 -07:00
obscuren
405720b218 xeth, core, cmd/utils: Transaction can not be over block gas limit
Transactions will be invalidated when the tx.gas_limit > block.gas_limit
2015-04-24 17:48:13 +02:00
Péter Szilágyi
8646365b42 cmd/bootnode, eth, p2p, p2p/discover: use a fancier db design 2015-04-24 18:04:41 +03:00
obscuren
31f82eb334 eth, eth/downloader: don't require td on downloader. Fixed tests 2015-04-24 15:04:58 +02:00
zelig
be843959cb backend: start miner in its go routine (no wait to generate DAG) 2015-04-24 12:45:11 +01:00
Péter Szilágyi
6def110c37 cmd/bootnode, eth, p2p, p2p/discover: clean up the seeder and mesh into eth. 2015-04-24 11:33:55 +03:00
Péter Szilágyi
5f735d6fce cmd, eth, p2p, p2p/discover: init and clean up the seed cache 2015-04-24 11:23:20 +03:00
Jeffrey Wilcke
b6ec1c720f Merge pull request #797 from tgerring/bootnodes
Bootnodes update
2015-04-23 11:53:18 -07:00
Taylor Gerring
24995f9ab7 Updated bootnodes
Update pub key for EU node and add new SA node
2015-04-23 13:06:07 -05:00
Bas van Kervel
c273ed7d82 Moved leveldb update loop to eth/backend
change order of block insert and update LastBlock

bugfix, wrong hash stored in blockDb
2015-04-23 17:58:58 +02:00
obscuren
d3be1a2719 eth: moved mined, tx events to protocol-hnd and improved tx propagation
Transactions are now propagated to peers from which we have not yet
received the transaction. This will significantly reduce the chatter on
the network.

Moved new mined block handler to the protocol handler and moved
transaction handling to protocol handler.
2015-04-23 11:50:12 +02:00
obscuren
5cb5df003d eth: start tx pool in a goroutine 2015-04-23 11:50:11 +02:00
Jeffrey Wilcke
1dc91975ad Merge pull request #756 from Gustav-Simonsson/block_test_improvements
Block test improvements
2015-04-21 03:09:35 -07:00
zsfelfoldi
c4b7d4d3f7 NatSpec cli option, resolver tests passing 2015-04-19 20:57:49 +01:00
Felix Lange
da4a0e0555 eth: fix node key persistence
crypto.LoadECDSA has been modified to expect hex data.
The key was being saved as raw bytes, causing the file
to be rewritten on every start.
2015-04-19 01:28:41 +02:00
Felix Lange
2ce21cefdc eth: use NewDB hook also for extra DB
(cherry picked from commit d5083033f15bb815a6212eddae16a7125db58738)
2015-04-18 23:59:31 +02:00
obscuren
a6c0a75f9a eth: fixed proper BroadcastBlock for mined blocks 2015-04-18 02:38:13 +02:00
obscuren
12e8d9c4dd eth: listen for mined blocks and propagate using the protocol manager 2015-04-18 02:27:37 +02:00
obscuren
cc436c4b28 eth: additional cleanups to the subprotocol, improved block propagation
* Improved block propagation by sending blocks only to peers to which, as
  far as we know, the peer does not know about.
* Made sub protocol its own manager
* SubProtocol now contains the p2p.Protocol which is used instead of
  a function-returning-protocol thing.
2015-04-18 02:21:07 +02:00
obscuren
c2f410214c eth: began split up of peers and protocol manager 2015-04-18 01:11:09 +02:00
obscuren
3a51c3b584 Merge branch 'develop' into downloader-proto 2015-04-16 01:28:24 +02:00
obscuren
9800c84348 eth: limit the amount of peers that will receive Block/Tx messages
All transaction and block messages are now limited using `sqrt(peers)`
2015-04-14 12:49:15 +02:00
obscuren
97d2954e22 eth: added downloader for syncing up the chain 2015-04-13 17:22:32 +02:00
Bas van Kervel
49a513bdeb Added blockchain DB versioning support, closes #650 2015-04-13 10:13:52 +02:00
obscuren
204ac81188 Moved handling of nonces to the managed state 2015-04-08 23:30:07 +02:00
obscuren
6184781b49 Improved transaction pool
The transaction pool will now some easily be able to pre determine the
validity of a transaction by checking the following:

* Account existst
* gas limit higher than the instrinsic gas
* enough funds to pay upfront costs
* nonce check
2015-04-08 20:47:32 +02:00
obscuren
a953f3ec97 Sync managed accounts to the network 2015-04-08 13:07:21 +02:00
obscuren
688d118c7e Updated logging 2015-04-07 14:57:04 +02:00
obscuren
09d3f2cf2a Update ethash 2015-04-05 15:14:55 +02:00
Felix Lange
76218959ab eth: update cpp bootnode address 2015-04-01 17:00:12 +02:00
Taylor Gerring
6daa455243 Update Go bootnode address 2015-03-31 14:14:29 +02:00
zelig
b375bbee5f settable etherbase
- etherbase flag for block reward destination
- coinbase => etherbase
- CLI- eth Config -> eth, xeth -> RPC / Miner
- use primary instead of coinbase as the unlock magic wildcard
- accounts: firstAddr/Coinbase -> Primary
2015-03-26 21:52:22 +00:00
Jeffrey Wilcke
aa1eae67ec Merge pull request #560 from tgerring/xethcleanup
XEth cleanup
2015-03-25 13:55:46 +01:00
Taylor Gerring
2b93843d86 Improve protocol version reporting 2015-03-25 12:09:55 +01:00
obscuren
dda1d60556 Store protocol version in the block db **NOT** extra db 2015-03-25 09:58:46 +01:00
obscuren
0ee0094cc0 better block propagation 2015-03-23 22:59:19 +01:00
Taylor Gerring
e954c24af0 Implement RPC net_version 2015-03-23 18:06:05 +01:00
Taylor Gerring
60020add74 Merge pull request #551 from ethersphere/frontier/eth-version-exports
eth: fix protocol version/network id copied from config to Ethereum field
2015-03-23 18:00:54 +01:00
zelig
03cc5df9b7 eth: fix protocol version/network id copied from config to Ethereum field 2015-03-23 16:23:06 +00:00
obscuren
0330077d76 moved state and vm to core 2015-03-23 16:59:09 +01:00
obscuren
8b1b9fc99d Merge branch 'jsonlog' of https://github.com/ethersphere/go-ethereum into ethersphere-jsonlog
Conflicts:
	eth/backend.go
2015-03-22 21:43:36 +01:00
obscuren
82956df523 Get work / submit work partially implemented.
* WIP missing arguments for submitting new work
* GetWork **done**
2015-03-22 15:38:01 +01:00
zelig
78cff9e3a4 independent flag for json structured logging
- logjson flag remove logformat flag
- passed to eth Config
- logsystem not a field of Ethereum
- LogSystem does not need to expose GetLogLevel/SetLogLevel
- message struct just implements more generic LogMsg interface
- LogMsg is a fmt.Stringer with Level()
- jsonMsg ([]byte) implements LogMsg
- remove "raw" systems
- move level logic inside StdLogSystem
- logsystems only print their kind of msg: jsonLogSystem prints jsonMsg, StdLogSystem prints stdMsg
2015-03-22 02:16:54 +00:00
Felix Lange
7c4ff3abb4 eth: enable whisper again 2015-03-21 00:50:20 +01:00
obscuren
f4e9638867 Merge branch 'ethersphere-frontier/blockpool' into conversion 2015-03-20 18:01:05 +01:00
obscuren
54dac59285 wip 2015-03-20 17:42:09 +01:00
zelig
391e89d70a use own total difficulty to limit best peer
- update blockpool td by subscribing to ChainHeadEvent
- if ahead of best peer, demote it
- addPeer now take own td as current td
- removePeer now take own td as current td
- add relevant tests to peers_test
- eth: backend now calls blockpool with eth.eventMux and chainManager.Td
2015-03-20 10:41:40 +00:00
Felix Lange
e80dda6051 eth, whisper: adapt for RLP encoder switch in package p2p
I have rewritten the protocol test to use p2p.MsgPipe because
p2p.NewMsg is gone.
2015-03-19 15:18:31 +01:00
obscuren
f0bb136099 Merge branch 'develop' into conversion 2015-03-18 18:42:01 +01:00
obscuren
0a1eeca41e conversions. -compilable- 2015-03-18 13:00:01 +01:00
zelig
b6aa88c099 private network support
- protocolversion, networkid global int flags to cli and mist
- fix bug with protocolversion check using wrong db
- log protocolversion & networkid in backend
2015-03-18 14:44:58 +07:00
zelig
7dbbe1bedc eth/backend: remove spurious and incorrent PeerInfo() 2015-03-18 04:01:47 +07:00
zelig
b3e133dd15 Merge branch 'frontier/js' into frontier/nodeadmin.js 2015-03-16 22:50:29 +07:00
obscuren
b523441361 Moved ethutil => common 2015-03-16 11:27:38 +01:00
zelig
8ad0f1b8a3 eth:
- NodeInfo, PeerInfo types, PeersInfo(), NodeInfo() in eth/backend to support node admin IF
- start net only if MaxPeers > 0, close extraDb in Stop()
- defer s.extraDb.Close()
2015-03-15 13:39:52 +07:00
obscuren
d9966d6158 merge 2015-03-14 23:37:21 +01:00
Felix Lange
e463479b6c eth: add ResetWithGenesisBlock
This depends on a change in ethash which exposes UpdateCache.
2015-03-13 18:41:09 +01:00
Felix Lange
6f8a2d6b84 eth: add hook for database creation 2015-03-13 18:41:09 +01:00
Taylor Gerring
d4ed66c83d Add web3_clientVersion 2015-03-12 19:20:46 -05:00
obscuren
ef6706696c Add additional extra database for non-protocol related data
* Add transaction to extra database after a successful block process
2015-03-12 14:50:35 +01:00
Felix Lange
d7b5a87b3b miner: provide coinbase when starting the miner
This avoids having to query the coinbase when creating the miner, which
in turn eliminates the dreaded startup error when no accounts are set
up. Later, this will also allow us to simply restart the miner when the
user picks a different coinbase.

This causes a lot of changes in other packages. These are included in
this commit because they're impossible to separate.
2015-03-11 23:43:27 +01:00
Felix Lange
269cfbb8ac Merge branch origin/develop into accounts-integration
Conflicts:
	cmd/blocktest/main.go
	cmd/mist/debugger.go
	cmd/utils/cmd.go
2015-03-10 17:14:31 +01:00
Felix Lange
9d4e1e8f8b eth: return account errors directly 2015-03-10 15:42:58 +01:00
Felix Lange
9b3ae1fdb7 eth: fix tests 2015-03-10 02:34:52 +01:00
Felix Lange
9bf513e993 Merge ethereum/poc-9 into accounts-integration
Conflicts:
	cmd/utils/cmd.go
	cmd/utils/flags.go
	core/manager.go
	eth/backend.go
	rpc/http/server.go
	xeth/xeth.go
2015-03-09 23:25:46 +01:00
Felix Lange
63758db379 eth: delete unused RpcServer field 2015-03-09 23:08:46 +01:00
Gustav Simonsson
27c42ea934 Add empty total difficulty to test blocks and clean up stopping the node 2015-03-09 18:03:35 +01:00
Felix Lange
fb53a9362e accounts: AccountManager -> Manager 2015-03-08 01:58:35 +01:00
Felix Lange
d66f93cecd accounts, core, eth, xeth: use account manager for everything
The account manager is now responsible for picking the
default account and the coinbase.
2015-03-07 12:38:33 +01:00
obscuren
cd856cb213 Separated block db from state db. Partial fix for #416 2015-03-06 18:26:16 +01:00
obscuren
ed84b58af5 Debug option for VM & command line flag 2015-03-06 16:58:52 +01:00
Gustav Simonsson
bc45e5c6de Integrate eth_accounts and eth_transact to use new account manager
* Add from to eth_transact / xeth.Transact and add static pass in lieu
  of integrating with native Mist window for user passphrase entry
* Make eth_accounts return AccountManager.Accounts()
* Add a Generate Key menu item in Mist
2015-03-06 13:10:42 +00:00
Felix Lange
e64f727529 Merge pull request #433 from fjl/newcli
Improved CLI
2015-03-06 14:02:16 +01:00
Felix Lange
bdba044a80 ethutil: remove Config variable
Various functions throughout the codebase used it to grab settings. This
has to stop because I want to use them without reading the config file.

These functions can now be used without reading the config first:

* ethdb.NewLDBDatabase
* ethrepl.NewJSRepl
* vm.New
2015-03-06 02:46:56 +01:00
obscuren
ba0c41436c Merge branch 'p2p-handshake-2' of https://github.com/fjl/go-ethereum into fjl-p2p-handshake-2 2015-03-05 17:21:32 +01:00
obscuren
c47866d251 Miner fixes and updates (including miner) 2015-03-05 09:14:58 +01:00
Felix Lange
215c763d53 eth, p2p: delete p2p.Blacklist
It is unused and untested right now. We can
bring it back later if required.
2015-03-04 16:54:36 +01:00
obscuren
bb152612e0 Merge branch 'develop' into poc-9
Conflicts:
	cmd/utils/cmd.go
2015-03-03 20:34:48 +01:00
obscuren
f0b2ea64fc Merge branch 'jsonlogs' of https://github.com/ethersphere/go-ethereum into ethersphere-jsonlogs
Conflicts:
	eth/block_pool.go
	eth/block_pool_test.go
	eth/protocol_test.go
	miner/worker.go
2015-03-03 20:30:05 +01:00
Jeffrey Wilcke
253eb778d1 Merge pull request #411 from ethersphere/readme
[WIP] Update Readme
2015-03-03 20:17:51 +01:00
Jeffrey Wilcke
988391fc37 Merge pull request #409 from tgerring/jsonlogs
Updated JSON log events
2015-03-03 20:16:55 +01:00
obscuren
313fe3861b fixed pow stuff 2015-03-03 17:55:23 +01:00
zelig
7e224b6834 db name database -> blockchain in backend error message 2015-03-03 13:22:19 +07:00
Taylor Gerring
0976c3024f Don't import logger as ethlogger 2015-03-02 08:15:28 -06:00
Taylor Gerring
cfe0370280 Remove Websockets RPC transport 2015-03-01 16:19:06 +01:00
obscuren
73c52d1677 Merge branch 'ethersphere-blockpool2' into poc-9 2015-02-28 20:52:57 +01:00
obscuren
cc5c8a444d Report proper database directory. Closes #397 2015-02-26 20:36:54 +01:00
zelig
16ecda951b integrate blockpool into eth
- remove blockpool code
- remove blockpool integration test (kinda embarrassing)
- remove errors.go
2015-02-25 20:38:37 +07:00
Felix Lange
e968928613 eth: persist node key between sessions (#304) 2015-02-20 15:26:50 +01:00
Felix Lange
e282ad25a8 eth: add poc-8.ethdev.com as second default bootstrap node 2015-02-20 15:24:43 +01:00
Jeffrey Wilcke
765740b829 Merge pull request #345 from maran/feature/minerthreads
Implement command line argument to set the amount miner threads
2015-02-19 22:37:13 +01:00
Taylor Gerring
4322632c59 Merge pull request #339 from tgerring/jsonlog
JSON log updates
2015-02-19 12:25:45 +01:00
Maran
5aff8bfb59 Implement command line argument to set the amount of agents created by the miner
Defaults to the amount of cores available on the CPU
2015-02-19 10:38:36 +01:00
obscuren
05b1ec008b Disabled ability to disable whisper. Closes #334 2015-02-18 11:42:01 +01:00
Taylor Gerring
f499f343ba Update JSON Log types 2015-02-18 10:52:23 +01:00
obscuren
5ec8c5f71b added bootnode back in 2015-02-17 23:14:10 +01:00
obscuren
7fc9b5b3f9 Changed to ChainEvent and fixed a nil pointer in transact 2015-02-17 22:20:47 +01:00
obscuren
567428fb34 Filter and mutex locks added 2015-02-17 16:12:55 +01:00
obscuren
8135752a32 "centralised" mining to backend. Closes #323 2015-02-17 12:24:58 +01:00
Felix Lange
1c1a3033be eth: add default bootnode 2015-02-13 21:41:13 +01:00
obscuren
bde3ff16ad merge 2015-02-13 16:02:37 +01:00