{"action":"created","comment":{"url":"https://api.github.com/repos/libp2p/rust-libp2p/pulls/comments/166923263","pull_request_review_id":95060095,"id":166923263,"diff_hunk":"@@ -191,6 +191,24 @@ where\n \n \t\tOk(Box::new(dial) as Box<_>)\n \t}\n+\n+    fn nat_traversal(&self, server: &Multiaddr, observed: &Multiaddr) -> Option<Multiaddr> {","path":"libp2p-websocket/src/desktop.rs","position":5,"original_position":5,"commit_id":"9fac2a23b635ee7b4f790b6cd133a8272bfd4107","original_commit_id":"d705b97ec8a221545457ae926194cd1a097ad4b4","user":{"login":"debris","id":2613714,"avatar_url":"https://avatars2.githubusercontent.com/u/2613714?v=4","gravatar_id":"","url":"https://api.github.com/users/debris","html_url":"https://github.com/debris","followers_url":"https://api.github.com/users/debris/followers","following_url":"https://api.github.com/users/debris/following{/other_user}","gists_url":"https://api.github.com/users/debris/gists{/gist_id}","starred_url":"https://api.github.com/users/debris/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/debris/subscriptions","organizations_url":"https://api.github.com/users/debris/orgs","repos_url":"https://api.github.com/users/debris/repos","events_url":"https://api.github.com/users/debris/events{/privacy}","received_events_url":"https://api.github.com/users/debris/received_events","type":"User","site_admin":false},"body":"fait enough 👍 ","created_at":"2018-02-08T12:49:58Z","updated_at":"2018-02-08T12:49:59Z","html_url":"https://github.com/libp2p/rust-libp2p/pull/110#discussion_r166923263","pull_request_url":"https://api.github.com/repos/libp2p/rust-libp2p/pulls/110","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/libp2p/rust-libp2p/pulls/comments/166923263"},"html":{"href":"https://github.com/libp2p/rust-libp2p/pull/110#discussion_r166923263"},"pull_request":{"href":"https://api.github.com/repos/libp2p/rust-libp2p/pulls/110"}},"in_reply_to_id":166642171},"pull_request":{"url":"https://api.github.com/repos/libp2p/rust-libp2p/pulls/110","id":164631773,"html_url":"https://github.com/libp2p/rust-libp2p/pull/110","diff_url":"https://github.com/libp2p/rust-libp2p/pull/110.diff","patch_url":"https://github.com/libp2p/rust-libp2p/pull/110.patch","issue_url":"https://api.github.com/repos/libp2p/rust-libp2p/issues/110","number":110,"state":"open","locked":false,"title":"Add a nat_traversal() method to Transport","user":{"login":"tomaka","id":1412254,"avatar_url":"https://avatars1.githubusercontent.com/u/1412254?v=4","gravatar_id":"","url":"https://api.github.com/users/tomaka","html_url":"https://github.com/tomaka","followers_url":"https://api.github.com/users/tomaka/followers","following_url":"https://api.github.com/users/tomaka/following{/other_user}","gists_url":"https://api.github.com/users/tomaka/gists{/gist_id}","starred_url":"https://api.github.com/users/tomaka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tomaka/subscriptions","organizations_url":"https://api.github.com/users/tomaka/orgs","repos_url":"https://api.github.com/users/tomaka/repos","events_url":"https://api.github.com/users/tomaka/events{/privacy}","received_events_url":"https://api.github.com/users/tomaka/received_events","type":"User","site_admin":false},"body":"Adds a `nat_traversal()` method to the `Transport` trait.\r\nIt takes a multiaddress we're listening on (`server`), and tries to convert it to an\r\nexternally-visible multiaddress. In order to do so, we pass an `observed` address which\r\na remote node observes for one of our dialers.\r\n\r\nFor example, if `server` is `/ip4/0.0.0.0/tcp/3000` and `observed` is\r\n`/ip4/80.81.82.83/tcp/29601`, then we should return `/ip4/80.81.82.83/tcp/3000`. Each\r\nimplementation of `Transport` is only responsible for handling the protocols it supports.\r\n\r\nIf I'm not mistaken the reference implementations handles this situation by hard-coding the list of transport\r\nprotocols. But if we want to be modular, I think it's better to put this method on the `Transport` trait instead.\r\n","created_at":"2018-01-23T16:55:10Z","updated_at":"2018-02-08T12:49:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1607f80c5ceec5dbc1eafe8eca6993e66607d562","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"milestone":null,"commits_url":"https://api.github.com/repos/libp2p/rust-libp2p/pulls/110/commits","review_comments_url":"https://api.github.com/repos/libp2p/rust-libp2p/pulls/110/comments","review_comment_url":"https://api.github.com/repos/libp2p/rust-libp2p/pulls/comments{/number}","comments_url":"https://api.github.com/repos/libp2p/rust-libp2p/issues/110/comments","statuses_url":"https://api.github.com/repos/libp2p/rust-libp2p/statuses/9fac2a23b635ee7b4f790b6cd133a8272bfd4107","head":{"label":"tomaka:nat-traversal","ref":"nat-traversal","sha":"9fac2a23b635ee7b4f790b6cd133a8272bfd4107","user":{"login":"tomaka","id":1412254,"avatar_url":"https://avatars1.githubusercontent.com/u/1412254?v=4","gravatar_id":"","url":"https://api.github.com/users/tomaka","html_url":"https://github.com/tomaka","followers_url":"https://api.github.com/users/tomaka/followers","following_url":"https://api.github.com/users/tomaka/following{/other_user}","gists_url":"https://api.github.com/users/tomaka/gists{/gist_id}","starred_url":"https://api.github.com/users/tomaka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tomaka/subscriptions","organizations_url":"https://api.github.com/users/tomaka/orgs","repos_url":"https://api.github.com/users/tomaka/repos","events_url":"https://api.github.com/users/tomaka/events{/privacy}","received_events_url":"https://api.github.com/users/tomaka/received_events","type":"User","site_admin":false},"repo":{"id":110135073,"name":"libp2p-rs","full_name":"tomaka/libp2p-rs","owner":{"login":"tomaka","id":1412254,"avatar_url":"https://avatars1.githubusercontent.com/u/1412254?v=4","gravatar_id":"","url":"https://api.github.com/users/tomaka","html_url":"https://github.com/tomaka","followers_url":"https://api.github.com/users/tomaka/followers","following_url":"https://api.github.com/users/tomaka/following{/other_user}","gists_url":"https://api.github.com/users/tomaka/gists{/gist_id}","starred_url":"https://api.github.com/users/tomaka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tomaka/subscriptions","organizations_url":"https://api.github.com/users/tomaka/orgs","repos_url":"https://api.github.com/users/tomaka/repos","events_url":"https://api.github.com/users/tomaka/events{/privacy}","received_events_url":"https://api.github.com/users/tomaka/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/tomaka/libp2p-rs","description":"LibP2P (IPFS) networking library written in Rust","fork":true,"url":"https://api.github.com/repos/tomaka/libp2p-rs","forks_url":"https://api.github.com/repos/tomaka/libp2p-rs/forks","keys_url":"https://api.github.com/repos/tomaka/libp2p-rs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tomaka/libp2p-rs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tomaka/libp2p-rs/teams","hooks_url":"https://api.github.com/repos/tomaka/libp2p-rs/hooks","issue_events_url":"https://api.github.com/repos/tomaka/libp2p-rs/issues/events{/number}","events_url":"https://api.github.com/repos/tomaka/libp2p-rs/events","assignees_url":"https://api.github.com/repos/tomaka/libp2p-rs/assignees{/user}","branches_url":"https://api.github.com/repos/tomaka/libp2p-rs/branches{/branch}","tags_url":"https://api.github.com/repos/tomaka/libp2p-rs/tags","blobs_url":"https://api.github.com/repos/tomaka/libp2p-rs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tomaka/libp2p-rs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tomaka/libp2p-rs/git/refs{/sha}","trees_url":"https://api.github.com/repos/tomaka/libp2p-rs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tomaka/libp2p-rs/statuses/{sha}","languages_url":"https://api.github.com/repos/tomaka/libp2p-rs/languages","stargazers_url":"https://api.github.com/repos/tomaka/libp2p-rs/stargazers","contributors_url":"https://api.github.com/repos/tomaka/libp2p-rs/contributors","subscribers_url":"https://api.github.com/repos/tomaka/libp2p-rs/subscribers","subscription_url":"https://api.github.com/repos/tomaka/libp2p-rs/subscription","commits_url":"https://api.github.com/repos/tomaka/libp2p-rs/commits{/sha}","git_commits_url":"https://api.github.com/repos/tomaka/libp2p-rs/git/commits{/sha}","comments_url":"https://api.github.com/repos/tomaka/libp2p-rs/comments{/number}","issue_comment_url":"https://api.github.com/repos/tomaka/libp2p-rs/issues/comments{/number}","contents_url":"https://api.github.com/repos/tomaka/libp2p-rs/contents/{+path}","compare_url":"https://api.github.com/repos/tomaka/libp2p-rs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tomaka/libp2p-rs/merges","archive_url":"https://api.github.com/repos/tomaka/libp2p-rs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tomaka/libp2p-rs/downloads","issues_url":"https://api.github.com/repos/tomaka/libp2p-rs/issues{/number}","pulls_url":"https://api.github.com/repos/tomaka/libp2p-rs/pulls{/number}","milestones_url":"https://api.github.com/repos/tomaka/libp2p-rs/milestones{/number}","notifications_url":"https://api.github.com/repos/tomaka/libp2p-rs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tomaka/libp2p-rs/labels{/name}","releases_url":"https://api.github.com/repos/tomaka/libp2p-rs/releases{/id}","deployments_url":"https://api.github.com/repos/tomaka/libp2p-rs/deployments","created_at":"2017-11-09T15:51:30Z","updated_at":"2017-11-09T15:51:31Z","pushed_at":"2018-02-08T12:35:47Z","git_url":"git://github.com/tomaka/libp2p-rs.git","ssh_url":"git@github.com:tomaka/libp2p-rs.git","clone_url":"https://github.com/tomaka/libp2p-rs.git","svn_url":"https://github.com/tomaka/libp2p-rs","homepage":null,"size":734,"stargazers_count":0,"watchers_count":0,"language":"Rust","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"libp2p:master","ref":"master","sha":"76a08c655d5eec006465a92209751e8caa951fbf","user":{"login":"libp2p","id":14838238,"avatar_url":"https://avatars3.githubusercontent.com/u/14838238?v=4","gravatar_id":"","url":"https://api.github.com/users/libp2p","html_url":"https://github.com/libp2p","followers_url":"https://api.github.com/users/libp2p/followers","following_url":"https://api.github.com/users/libp2p/following{/other_user}","gists_url":"https://api.github.com/users/libp2p/gists{/gist_id}","starred_url":"https://api.github.com/users/libp2p/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/libp2p/subscriptions","organizations_url":"https://api.github.com/users/libp2p/orgs","repos_url":"https://api.github.com/users/libp2p/repos","events_url":"https://api.github.com/users/libp2p/events{/privacy}","received_events_url":"https://api.github.com/users/libp2p/received_events","type":"Organization","site_admin":false},"repo":{"id":86106381,"name":"rust-libp2p","full_name":"libp2p/rust-libp2p","owner":{"login":"libp2p","id":14838238,"avatar_url":"https://avatars3.githubusercontent.com/u/14838238?v=4","gravatar_id":"","url":"https://api.github.com/users/libp2p","html_url":"https://github.com/libp2p","followers_url":"https://api.github.com/users/libp2p/followers","following_url":"https://api.github.com/users/libp2p/following{/other_user}","gists_url":"https://api.github.com/users/libp2p/gists{/gist_id}","starred_url":"https://api.github.com/users/libp2p/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/libp2p/subscriptions","organizations_url":"https://api.github.com/users/libp2p/orgs","repos_url":"https://api.github.com/users/libp2p/repos","events_url":"https://api.github.com/users/libp2p/events{/privacy}","received_events_url":"https://api.github.com/users/libp2p/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/libp2p/rust-libp2p","description":"The Rust Implementation of libp2p networking stack. ","fork":false,"url":"https://api.github.com/repos/libp2p/rust-libp2p","forks_url":"https://api.github.com/repos/libp2p/rust-libp2p/forks","keys_url":"https://api.github.com/repos/libp2p/rust-libp2p/keys{/key_id}","collaborators_url":"https://api.github.com/repos/libp2p/rust-libp2p/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/libp2p/rust-libp2p/teams","hooks_url":"https://api.github.com/repos/libp2p/rust-libp2p/hooks","issue_events_url":"https://api.github.com/repos/libp2p/rust-libp2p/issues/events{/number}","events_url":"https://api.github.com/repos/libp2p/rust-libp2p/events","assignees_url":"https://api.github.com/repos/libp2p/rust-libp2p/assignees{/user}","branches_url":"https://api.github.com/repos/libp2p/rust-libp2p/branches{/branch}","tags_url":"https://api.github.com/repos/libp2p/rust-libp2p/tags","blobs_url":"https://api.github.com/repos/libp2p/rust-libp2p/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/libp2p/rust-libp2p/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/libp2p/rust-libp2p/git/refs{/sha}","trees_url":"https://api.github.com/repos/libp2p/rust-libp2p/git/trees{/sha}","statuses_url":"https://api.github.com/repos/libp2p/rust-libp2p/statuses/{sha}","languages_url":"https://api.github.com/repos/libp2p/rust-libp2p/languages","stargazers_url":"https://api.github.com/repos/libp2p/rust-libp2p/stargazers","contributors_url":"https://api.github.com/repos/libp2p/rust-libp2p/contributors","subscribers_url":"https://api.github.com/repos/libp2p/rust-libp2p/subscribers","subscription_url":"https://api.github.com/repos/libp2p/rust-libp2p/subscription","commits_url":"https://api.github.com/repos/libp2p/rust-libp2p/commits{/sha}","git_commits_url":"https://api.github.com/repos/libp2p/rust-libp2p/git/commits{/sha}","comments_url":"https://api.github.com/repos/libp2p/rust-libp2p/comments{/number}","issue_comment_url":"https://api.github.com/repos/libp2p/rust-libp2p/issues/comments{/number}","contents_url":"https://api.github.com/repos/libp2p/rust-libp2p/contents/{+path}","compare_url":"https://api.github.com/repos/libp2p/rust-libp2p/compare/{base}...{head}","merges_url":"https://api.github.com/repos/libp2p/rust-libp2p/merges","archive_url":"https://api.github.com/repos/libp2p/rust-libp2p/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/libp2p/rust-libp2p/downloads","issues_url":"https://api.github.com/repos/libp2p/rust-libp2p/issues{/number}","pulls_url":"https://api.github.com/repos/libp2p/rust-libp2p/pulls{/number}","milestones_url":"https://api.github.com/repos/libp2p/rust-libp2p/milestones{/number}","notifications_url":"https://api.github.com/repos/libp2p/rust-libp2p/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/libp2p/rust-libp2p/labels{/name}","releases_url":"https://api.github.com/repos/libp2p/rust-libp2p/releases{/id}","deployments_url":"https://api.github.com/repos/libp2p/rust-libp2p/deployments","created_at":"2017-03-24T20:05:11Z","updated_at":"2018-02-08T03:52:13Z","pushed_at":"2018-02-08T12:35:49Z","git_url":"git://github.com/libp2p/rust-libp2p.git","ssh_url":"git@github.com:libp2p/rust-libp2p.git","clone_url":"https://github.com/libp2p/rust-libp2p.git","svn_url":"https://github.com/libp2p/rust-libp2p","homepage":"https://libp2p.io","size":465,"stargazers_count":123,"watchers_count":123,"language":"Rust","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":11,"mirror_url":null,"archived":false,"open_issues_count":22,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":11,"open_issues":22,"watchers":123,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/libp2p/rust-libp2p/pulls/110"},"html":{"href":"https://github.com/libp2p/rust-libp2p/pull/110"},"issue":{"href":"https://api.github.com/repos/libp2p/rust-libp2p/issues/110"},"comments":{"href":"https://api.github.com/repos/libp2p/rust-libp2p/issues/110/comments"},"review_comments":{"href":"https://api.github.com/repos/libp2p/rust-libp2p/pulls/110/comments"},"review_comment":{"href":"https://api.github.com/repos/libp2p/rust-libp2p/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/libp2p/rust-libp2p/pulls/110/commits"},"statuses":{"href":"https://api.github.com/repos/libp2p/rust-libp2p/statuses/9fac2a23b635ee7b4f790b6cd133a8272bfd4107"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"debris"}}