{"action":"created","comment":{"url":"https://api.github.com/repos/savoirfairelinux/opendht/pulls/comments/74787131","id":74787131,"diff_hunk":"@@ -201,45 +201,54 @@ struct Dht::SearchNode {\n     /**\n      * Could a particular \"get\" request be sent to this node now ?\n      *\n+     * A 'get' request can be sent when all of the following requirements are\n+     * met:\n+     *\n+     *  - The node is not expired;\n+     *  - If we have heard from the node, we must have heard from him in the last\n+     *    NODE_EXPIRE_TIME minutes;\n+     *  - The request must not already have been sent;\n+     *  - No other request satisfying the request must be pending;\n+     *  - The pagination process for this particular 'get' must not have begun;\n+     *\n      * @param now     The time reference to now.\n      * @param update  Time of the last \"get\" op for the search.\n      * @param q       The query defining the \"get\" operation we're referring to.\n      *\n      * @return true if we can send get, else false.\n      */\n     bool canGet(time_point now, time_point update, std::shared_ptr<Query> q = {}) const {\n-        /* find request status for the given query */\n-        const auto& get_status = q ? getStatus.find(q) : getStatus.cend();\n+        /* FInd request status for the given query */","path":"src/dht.cpp","position":23,"original_position":23,"commit_id":"7c6434a4dee6e886121f551d3120f3c4337e629c","original_commit_id":"7c6434a4dee6e886121f551d3120f3c4337e629c","user":{"login":"aberaud","id":101827,"avatar_url":"https://avatars.githubusercontent.com/u/101827?v=3","gravatar_id":"","url":"https://api.github.com/users/aberaud","html_url":"https://github.com/aberaud","followers_url":"https://api.github.com/users/aberaud/followers","following_url":"https://api.github.com/users/aberaud/following{/other_user}","gists_url":"https://api.github.com/users/aberaud/gists{/gist_id}","starred_url":"https://api.github.com/users/aberaud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aberaud/subscriptions","organizations_url":"https://api.github.com/users/aberaud/orgs","repos_url":"https://api.github.com/users/aberaud/repos","events_url":"https://api.github.com/users/aberaud/events{/privacy}","received_events_url":"https://api.github.com/users/aberaud/received_events","type":"User","site_admin":false},"body":"Fi","created_at":"2016-08-15T16:14:56Z","updated_at":"2016-08-15T16:14:56Z","html_url":"https://github.com/savoirfairelinux/opendht/pull/113#discussion_r74787131","pull_request_url":"https://api.github.com/repos/savoirfairelinux/opendht/pulls/113","_links":{"self":{"href":"https://api.github.com/repos/savoirfairelinux/opendht/pulls/comments/74787131"},"html":{"href":"https://github.com/savoirfairelinux/opendht/pull/113#discussion_r74787131"},"pull_request":{"href":"https://api.github.com/repos/savoirfairelinux/opendht/pulls/113"}}},"pull_request":{"url":"https://api.github.com/repos/savoirfairelinux/opendht/pulls/113","id":81263554,"html_url":"https://github.com/savoirfairelinux/opendht/pull/113","diff_url":"https://github.com/savoirfairelinux/opendht/pull/113.diff","patch_url":"https://github.com/savoirfairelinux/opendht/pull/113.patch","issue_url":"https://api.github.com/repos/savoirfairelinux/opendht/issues/113","number":113,"state":"open","locked":false,"title":"dht: value pagination fix","user":{"login":"sim590","id":4147254,"avatar_url":"https://avatars.githubusercontent.com/u/4147254?v=3","gravatar_id":"","url":"https://api.github.com/users/sim590","html_url":"https://github.com/sim590","followers_url":"https://api.github.com/users/sim590/followers","following_url":"https://api.github.com/users/sim590/following{/other_user}","gists_url":"https://api.github.com/users/sim590/gists{/gist_id}","starred_url":"https://api.github.com/users/sim590/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sim590/subscriptions","organizations_url":"https://api.github.com/users/sim590/orgs","repos_url":"https://api.github.com/users/sim590/repos","events_url":"https://api.github.com/users/sim590/events{/privacy}","received_events_url":"https://api.github.com/users/sim590/received_events","type":"User","site_admin":false},"body":"This fixes some issues 97b573c did introduce. For instance, some nodes would not expire properly and some of the timings computation were not right.","created_at":"2016-08-15T02:25:02Z","updated_at":"2016-08-15T16:14:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3a9709bba2c228d02944d41d99217bf9b1a6e114","assignee":{"login":"aberaud","id":101827,"avatar_url":"https://avatars.githubusercontent.com/u/101827?v=3","gravatar_id":"","url":"https://api.github.com/users/aberaud","html_url":"https://github.com/aberaud","followers_url":"https://api.github.com/users/aberaud/followers","following_url":"https://api.github.com/users/aberaud/following{/other_user}","gists_url":"https://api.github.com/users/aberaud/gists{/gist_id}","starred_url":"https://api.github.com/users/aberaud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aberaud/subscriptions","organizations_url":"https://api.github.com/users/aberaud/orgs","repos_url":"https://api.github.com/users/aberaud/repos","events_url":"https://api.github.com/users/aberaud/events{/privacy}","received_events_url":"https://api.github.com/users/aberaud/received_events","type":"User","site_admin":false},"assignees":[{"login":"aberaud","id":101827,"avatar_url":"https://avatars.githubusercontent.com/u/101827?v=3","gravatar_id":"","url":"https://api.github.com/users/aberaud","html_url":"https://github.com/aberaud","followers_url":"https://api.github.com/users/aberaud/followers","following_url":"https://api.github.com/users/aberaud/following{/other_user}","gists_url":"https://api.github.com/users/aberaud/gists{/gist_id}","starred_url":"https://api.github.com/users/aberaud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aberaud/subscriptions","organizations_url":"https://api.github.com/users/aberaud/orgs","repos_url":"https://api.github.com/users/aberaud/repos","events_url":"https://api.github.com/users/aberaud/events{/privacy}","received_events_url":"https://api.github.com/users/aberaud/received_events","type":"User","site_admin":false},{"login":"kaldoran","id":2991859,"avatar_url":"https://avatars.githubusercontent.com/u/2991859?v=3","gravatar_id":"","url":"https://api.github.com/users/kaldoran","html_url":"https://github.com/kaldoran","followers_url":"https://api.github.com/users/kaldoran/followers","following_url":"https://api.github.com/users/kaldoran/following{/other_user}","gists_url":"https://api.github.com/users/kaldoran/gists{/gist_id}","starred_url":"https://api.github.com/users/kaldoran/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kaldoran/subscriptions","organizations_url":"https://api.github.com/users/kaldoran/orgs","repos_url":"https://api.github.com/users/kaldoran/repos","events_url":"https://api.github.com/users/kaldoran/events{/privacy}","received_events_url":"https://api.github.com/users/kaldoran/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/savoirfairelinux/opendht/milestones/2","html_url":"https://github.com/savoirfairelinux/opendht/milestones/Data%20persistence","labels_url":"https://api.github.com/repos/savoirfairelinux/opendht/milestones/2/labels","id":1591461,"number":2,"title":"Data persistence","description":"# Data persistence on the DHT\r\n\r\n## Problem\r\n\r\nEach time a value is put on the DHT, a certain set of 8 nodes are responsible of storing it. If nodes from this set quit the DHT, it influences performences and can also make the value unavailable before its expiration time.\r\n\r\n## Goal\r\n\r\nProvide an efficient way of assuring the persistence of values until their expiration time come whatever change there is on the DHT.","creator":{"login":"sim590","id":4147254,"avatar_url":"https://avatars.githubusercontent.com/u/4147254?v=3","gravatar_id":"","url":"https://api.github.com/users/sim590","html_url":"https://github.com/sim590","followers_url":"https://api.github.com/users/sim590/followers","following_url":"https://api.github.com/users/sim590/following{/other_user}","gists_url":"https://api.github.com/users/sim590/gists{/gist_id}","starred_url":"https://api.github.com/users/sim590/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sim590/subscriptions","organizations_url":"https://api.github.com/users/sim590/orgs","repos_url":"https://api.github.com/users/sim590/repos","events_url":"https://api.github.com/users/sim590/events{/privacy}","received_events_url":"https://api.github.com/users/sim590/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":11,"state":"open","created_at":"2016-02-18T19:34:39Z","updated_at":"2016-08-15T02:25:02Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/savoirfairelinux/opendht/pulls/113/commits","review_comments_url":"https://api.github.com/repos/savoirfairelinux/opendht/pulls/113/comments","review_comment_url":"https://api.github.com/repos/savoirfairelinux/opendht/pulls/comments{/number}","comments_url":"https://api.github.com/repos/savoirfairelinux/opendht/issues/113/comments","statuses_url":"https://api.github.com/repos/savoirfairelinux/opendht/statuses/7c6434a4dee6e886121f551d3120f3c4337e629c","head":{"label":"sim590:value-pagination-fix","ref":"value-pagination-fix","sha":"7c6434a4dee6e886121f551d3120f3c4337e629c","user":{"login":"sim590","id":4147254,"avatar_url":"https://avatars.githubusercontent.com/u/4147254?v=3","gravatar_id":"","url":"https://api.github.com/users/sim590","html_url":"https://github.com/sim590","followers_url":"https://api.github.com/users/sim590/followers","following_url":"https://api.github.com/users/sim590/following{/other_user}","gists_url":"https://api.github.com/users/sim590/gists{/gist_id}","starred_url":"https://api.github.com/users/sim590/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sim590/subscriptions","organizations_url":"https://api.github.com/users/sim590/orgs","repos_url":"https://api.github.com/users/sim590/repos","events_url":"https://api.github.com/users/sim590/events{/privacy}","received_events_url":"https://api.github.com/users/sim590/received_events","type":"User","site_admin":false},"repo":{"id":37489852,"name":"opendht","full_name":"sim590/opendht","owner":{"login":"sim590","id":4147254,"avatar_url":"https://avatars.githubusercontent.com/u/4147254?v=3","gravatar_id":"","url":"https://api.github.com/users/sim590","html_url":"https://github.com/sim590","followers_url":"https://api.github.com/users/sim590/followers","following_url":"https://api.github.com/users/sim590/following{/other_user}","gists_url":"https://api.github.com/users/sim590/gists{/gist_id}","starred_url":"https://api.github.com/users/sim590/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sim590/subscriptions","organizations_url":"https://api.github.com/users/sim590/orgs","repos_url":"https://api.github.com/users/sim590/repos","events_url":"https://api.github.com/users/sim590/events{/privacy}","received_events_url":"https://api.github.com/users/sim590/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/sim590/opendht","description":"A C++11 Distributed Hash Table implementation","fork":true,"url":"https://api.github.com/repos/sim590/opendht","forks_url":"https://api.github.com/repos/sim590/opendht/forks","keys_url":"https://api.github.com/repos/sim590/opendht/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sim590/opendht/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sim590/opendht/teams","hooks_url":"https://api.github.com/repos/sim590/opendht/hooks","issue_events_url":"https://api.github.com/repos/sim590/opendht/issues/events{/number}","events_url":"https://api.github.com/repos/sim590/opendht/events","assignees_url":"https://api.github.com/repos/sim590/opendht/assignees{/user}","branches_url":"https://api.github.com/repos/sim590/opendht/branches{/branch}","tags_url":"https://api.github.com/repos/sim590/opendht/tags","blobs_url":"https://api.github.com/repos/sim590/opendht/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sim590/opendht/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sim590/opendht/git/refs{/sha}","trees_url":"https://api.github.com/repos/sim590/opendht/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sim590/opendht/statuses/{sha}","languages_url":"https://api.github.com/repos/sim590/opendht/languages","stargazers_url":"https://api.github.com/repos/sim590/opendht/stargazers","contributors_url":"https://api.github.com/repos/sim590/opendht/contributors","subscribers_url":"https://api.github.com/repos/sim590/opendht/subscribers","subscription_url":"https://api.github.com/repos/sim590/opendht/subscription","commits_url":"https://api.github.com/repos/sim590/opendht/commits{/sha}","git_commits_url":"https://api.github.com/repos/sim590/opendht/git/commits{/sha}","comments_url":"https://api.github.com/repos/sim590/opendht/comments{/number}","issue_comment_url":"https://api.github.com/repos/sim590/opendht/issues/comments{/number}","contents_url":"https://api.github.com/repos/sim590/opendht/contents/{+path}","compare_url":"https://api.github.com/repos/sim590/opendht/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sim590/opendht/merges","archive_url":"https://api.github.com/repos/sim590/opendht/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sim590/opendht/downloads","issues_url":"https://api.github.com/repos/sim590/opendht/issues{/number}","pulls_url":"https://api.github.com/repos/sim590/opendht/pulls{/number}","milestones_url":"https://api.github.com/repos/sim590/opendht/milestones{/number}","notifications_url":"https://api.github.com/repos/sim590/opendht/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sim590/opendht/labels{/name}","releases_url":"https://api.github.com/repos/sim590/opendht/releases{/id}","deployments_url":"https://api.github.com/repos/sim590/opendht/deployments","created_at":"2015-06-15T20:35:23Z","updated_at":"2016-08-09T19:10:32Z","pushed_at":"2016-08-15T16:14:38Z","git_url":"git://github.com/sim590/opendht.git","ssh_url":"git@github.com:sim590/opendht.git","clone_url":"https://github.com/sim590/opendht.git","svn_url":"https://github.com/sim590/opendht","homepage":null,"size":2108,"stargazers_count":1,"watchers_count":1,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"savoirfairelinux:master","ref":"master","sha":"426b3d6834d774a0acfa0ecf709434e1bd5d96b1","user":{"login":"savoirfairelinux","id":2735545,"avatar_url":"https://avatars.githubusercontent.com/u/2735545?v=3","gravatar_id":"","url":"https://api.github.com/users/savoirfairelinux","html_url":"https://github.com/savoirfairelinux","followers_url":"https://api.github.com/users/savoirfairelinux/followers","following_url":"https://api.github.com/users/savoirfairelinux/following{/other_user}","gists_url":"https://api.github.com/users/savoirfairelinux/gists{/gist_id}","starred_url":"https://api.github.com/users/savoirfairelinux/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/savoirfairelinux/subscriptions","organizations_url":"https://api.github.com/users/savoirfairelinux/orgs","repos_url":"https://api.github.com/users/savoirfairelinux/repos","events_url":"https://api.github.com/users/savoirfairelinux/events{/privacy}","received_events_url":"https://api.github.com/users/savoirfairelinux/received_events","type":"Organization","site_admin":false},"repo":{"id":28151108,"name":"opendht","full_name":"savoirfairelinux/opendht","owner":{"login":"savoirfairelinux","id":2735545,"avatar_url":"https://avatars.githubusercontent.com/u/2735545?v=3","gravatar_id":"","url":"https://api.github.com/users/savoirfairelinux","html_url":"https://github.com/savoirfairelinux","followers_url":"https://api.github.com/users/savoirfairelinux/followers","following_url":"https://api.github.com/users/savoirfairelinux/following{/other_user}","gists_url":"https://api.github.com/users/savoirfairelinux/gists{/gist_id}","starred_url":"https://api.github.com/users/savoirfairelinux/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/savoirfairelinux/subscriptions","organizations_url":"https://api.github.com/users/savoirfairelinux/orgs","repos_url":"https://api.github.com/users/savoirfairelinux/repos","events_url":"https://api.github.com/users/savoirfairelinux/events{/privacy}","received_events_url":"https://api.github.com/users/savoirfairelinux/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/savoirfairelinux/opendht","description":"A C++11 Distributed Hash Table implementation","fork":false,"url":"https://api.github.com/repos/savoirfairelinux/opendht","forks_url":"https://api.github.com/repos/savoirfairelinux/opendht/forks","keys_url":"https://api.github.com/repos/savoirfairelinux/opendht/keys{/key_id}","collaborators_url":"https://api.github.com/repos/savoirfairelinux/opendht/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/savoirfairelinux/opendht/teams","hooks_url":"https://api.github.com/repos/savoirfairelinux/opendht/hooks","issue_events_url":"https://api.github.com/repos/savoirfairelinux/opendht/issues/events{/number}","events_url":"https://api.github.com/repos/savoirfairelinux/opendht/events","assignees_url":"https://api.github.com/repos/savoirfairelinux/opendht/assignees{/user}","branches_url":"https://api.github.com/repos/savoirfairelinux/opendht/branches{/branch}","tags_url":"https://api.github.com/repos/savoirfairelinux/opendht/tags","blobs_url":"https://api.github.com/repos/savoirfairelinux/opendht/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/savoirfairelinux/opendht/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/savoirfairelinux/opendht/git/refs{/sha}","trees_url":"https://api.github.com/repos/savoirfairelinux/opendht/git/trees{/sha}","statuses_url":"https://api.github.com/repos/savoirfairelinux/opendht/statuses/{sha}","languages_url":"https://api.github.com/repos/savoirfairelinux/opendht/languages","stargazers_url":"https://api.github.com/repos/savoirfairelinux/opendht/stargazers","contributors_url":"https://api.github.com/repos/savoirfairelinux/opendht/contributors","subscribers_url":"https://api.github.com/repos/savoirfairelinux/opendht/subscribers","subscription_url":"https://api.github.com/repos/savoirfairelinux/opendht/subscription","commits_url":"https://api.github.com/repos/savoirfairelinux/opendht/commits{/sha}","git_commits_url":"https://api.github.com/repos/savoirfairelinux/opendht/git/commits{/sha}","comments_url":"https://api.github.com/repos/savoirfairelinux/opendht/comments{/number}","issue_comment_url":"https://api.github.com/repos/savoirfairelinux/opendht/issues/comments{/number}","contents_url":"https://api.github.com/repos/savoirfairelinux/opendht/contents/{+path}","compare_url":"https://api.github.com/repos/savoirfairelinux/opendht/compare/{base}...{head}","merges_url":"https://api.github.com/repos/savoirfairelinux/opendht/merges","archive_url":"https://api.github.com/repos/savoirfairelinux/opendht/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/savoirfairelinux/opendht/downloads","issues_url":"https://api.github.com/repos/savoirfairelinux/opendht/issues{/number}","pulls_url":"https://api.github.com/repos/savoirfairelinux/opendht/pulls{/number}","milestones_url":"https://api.github.com/repos/savoirfairelinux/opendht/milestones{/number}","notifications_url":"https://api.github.com/repos/savoirfairelinux/opendht/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/savoirfairelinux/opendht/labels{/name}","releases_url":"https://api.github.com/repos/savoirfairelinux/opendht/releases{/id}","deployments_url":"https://api.github.com/repos/savoirfairelinux/opendht/deployments","created_at":"2014-12-17T19:05:22Z","updated_at":"2016-08-15T09:01:22Z","pushed_at":"2016-08-15T16:14:38Z","git_url":"git://github.com/savoirfairelinux/opendht.git","ssh_url":"git@github.com:savoirfairelinux/opendht.git","clone_url":"https://github.com/savoirfairelinux/opendht.git","svn_url":"https://github.com/savoirfairelinux/opendht","homepage":null,"size":2207,"stargazers_count":143,"watchers_count":143,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":34,"mirror_url":null,"open_issues_count":12,"forks":34,"open_issues":12,"watchers":143,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/savoirfairelinux/opendht/pulls/113"},"html":{"href":"https://github.com/savoirfairelinux/opendht/pull/113"},"issue":{"href":"https://api.github.com/repos/savoirfairelinux/opendht/issues/113"},"comments":{"href":"https://api.github.com/repos/savoirfairelinux/opendht/issues/113/comments"},"review_comments":{"href":"https://api.github.com/repos/savoirfairelinux/opendht/pulls/113/comments"},"review_comment":{"href":"https://api.github.com/repos/savoirfairelinux/opendht/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/savoirfairelinux/opendht/pulls/113/commits"},"statuses":{"href":"https://api.github.com/repos/savoirfairelinux/opendht/statuses/7c6434a4dee6e886121f551d3120f3c4337e629c"}}}}
{"actor":{"display_login":"aberaud"}}