{"action":"opened","number":168,"pull_request":{"url":"https://api.github.com/repos/wifidog/wifidog-gateway/pulls/168","id":32182724,"html_url":"https://github.com/wifidog/wifidog-gateway/pull/168","diff_url":"https://github.com/wifidog/wifidog-gateway/pull/168.diff","patch_url":"https://github.com/wifidog/wifidog-gateway/pull/168.patch","issue_url":"https://api.github.com/repos/wifidog/wifidog-gateway/issues/168","number":168,"state":"open","locked":false,"title":"Partial rewrite of fw_sync_with_auth","user":{"login":"acv","id":780313,"avatar_url":"https://avatars.githubusercontent.com/u/780313?v=3","gravatar_id":"","url":"https://api.github.com/users/acv","html_url":"https://github.com/acv","followers_url":"https://api.github.com/users/acv/followers","following_url":"https://api.github.com/users/acv/following{/other_user}","gists_url":"https://api.github.com/users/acv/gists{/gist_id}","starred_url":"https://api.github.com/users/acv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acv/subscriptions","organizations_url":"https://api.github.com/users/acv/orgs","repos_url":"https://api.github.com/users/acv/repos","events_url":"https://api.github.com/users/acv/events{/privacy}","received_events_url":"https://api.github.com/users/acv/received_events","type":"User","site_admin":false},"body":"This code needs a lot of testing and probably has remaining bugs but it attempts to avoid being affected by client_list changes in any way.\r\n\r\nThe trick is that the entire client list gets duplicated and the mutex is dropped and then the copy is processed.\r\n\r\nMutex are re-acquired and the client refound (by mac and ip) before being changed. Explicit checks exist for client that no longer exist.","created_at":"2015-03-29T14:53:35Z","updated_at":"2015-03-29T14:53:35Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/wifidog/wifidog-gateway/pulls/168/commits","review_comments_url":"https://api.github.com/repos/wifidog/wifidog-gateway/pulls/168/comments","review_comment_url":"https://api.github.com/repos/wifidog/wifidog-gateway/pulls/comments{/number}","comments_url":"https://api.github.com/repos/wifidog/wifidog-gateway/issues/168/comments","statuses_url":"https://api.github.com/repos/wifidog/wifidog-gateway/statuses/70ae3105521230348e7c42bc2be12a27c53d567a","head":{"label":"acv:refactor-auth","ref":"refactor-auth","sha":"70ae3105521230348e7c42bc2be12a27c53d567a","user":{"login":"acv","id":780313,"avatar_url":"https://avatars.githubusercontent.com/u/780313?v=3","gravatar_id":"","url":"https://api.github.com/users/acv","html_url":"https://github.com/acv","followers_url":"https://api.github.com/users/acv/followers","following_url":"https://api.github.com/users/acv/following{/other_user}","gists_url":"https://api.github.com/users/acv/gists{/gist_id}","starred_url":"https://api.github.com/users/acv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acv/subscriptions","organizations_url":"https://api.github.com/users/acv/orgs","repos_url":"https://api.github.com/users/acv/repos","events_url":"https://api.github.com/users/acv/events{/privacy}","received_events_url":"https://api.github.com/users/acv/received_events","type":"User","site_admin":false},"repo":{"id":32039819,"name":"wifidog-gateway","full_name":"acv/wifidog-gateway","owner":{"login":"acv","id":780313,"avatar_url":"https://avatars.githubusercontent.com/u/780313?v=3","gravatar_id":"","url":"https://api.github.com/users/acv","html_url":"https://github.com/acv","followers_url":"https://api.github.com/users/acv/followers","following_url":"https://api.github.com/users/acv/following{/other_user}","gists_url":"https://api.github.com/users/acv/gists{/gist_id}","starred_url":"https://api.github.com/users/acv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acv/subscriptions","organizations_url":"https://api.github.com/users/acv/orgs","repos_url":"https://api.github.com/users/acv/repos","events_url":"https://api.github.com/users/acv/events{/privacy}","received_events_url":"https://api.github.com/users/acv/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/acv/wifidog-gateway","description":"Repository for the wifidog-gateway captive portal designed for embeeded systems","fork":true,"url":"https://api.github.com/repos/acv/wifidog-gateway","forks_url":"https://api.github.com/repos/acv/wifidog-gateway/forks","keys_url":"https://api.github.com/repos/acv/wifidog-gateway/keys{/key_id}","collaborators_url":"https://api.github.com/repos/acv/wifidog-gateway/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/acv/wifidog-gateway/teams","hooks_url":"https://api.github.com/repos/acv/wifidog-gateway/hooks","issue_events_url":"https://api.github.com/repos/acv/wifidog-gateway/issues/events{/number}","events_url":"https://api.github.com/repos/acv/wifidog-gateway/events","assignees_url":"https://api.github.com/repos/acv/wifidog-gateway/assignees{/user}","branches_url":"https://api.github.com/repos/acv/wifidog-gateway/branches{/branch}","tags_url":"https://api.github.com/repos/acv/wifidog-gateway/tags","blobs_url":"https://api.github.com/repos/acv/wifidog-gateway/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/acv/wifidog-gateway/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/acv/wifidog-gateway/git/refs{/sha}","trees_url":"https://api.github.com/repos/acv/wifidog-gateway/git/trees{/sha}","statuses_url":"https://api.github.com/repos/acv/wifidog-gateway/statuses/{sha}","languages_url":"https://api.github.com/repos/acv/wifidog-gateway/languages","stargazers_url":"https://api.github.com/repos/acv/wifidog-gateway/stargazers","contributors_url":"https://api.github.com/repos/acv/wifidog-gateway/contributors","subscribers_url":"https://api.github.com/repos/acv/wifidog-gateway/subscribers","subscription_url":"https://api.github.com/repos/acv/wifidog-gateway/subscription","commits_url":"https://api.github.com/repos/acv/wifidog-gateway/commits{/sha}","git_commits_url":"https://api.github.com/repos/acv/wifidog-gateway/git/commits{/sha}","comments_url":"https://api.github.com/repos/acv/wifidog-gateway/comments{/number}","issue_comment_url":"https://api.github.com/repos/acv/wifidog-gateway/issues/comments{/number}","contents_url":"https://api.github.com/repos/acv/wifidog-gateway/contents/{+path}","compare_url":"https://api.github.com/repos/acv/wifidog-gateway/compare/{base}...{head}","merges_url":"https://api.github.com/repos/acv/wifidog-gateway/merges","archive_url":"https://api.github.com/repos/acv/wifidog-gateway/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/acv/wifidog-gateway/downloads","issues_url":"https://api.github.com/repos/acv/wifidog-gateway/issues{/number}","pulls_url":"https://api.github.com/repos/acv/wifidog-gateway/pulls{/number}","milestones_url":"https://api.github.com/repos/acv/wifidog-gateway/milestones{/number}","notifications_url":"https://api.github.com/repos/acv/wifidog-gateway/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/acv/wifidog-gateway/labels{/name}","releases_url":"https://api.github.com/repos/acv/wifidog-gateway/releases{/id}","created_at":"2015-03-11T20:33:37Z","updated_at":"2015-03-29T14:08:21Z","pushed_at":"2015-03-29T14:50:41Z","git_url":"git://github.com/acv/wifidog-gateway.git","ssh_url":"git@github.com:acv/wifidog-gateway.git","clone_url":"https://github.com/acv/wifidog-gateway.git","svn_url":"https://github.com/acv/wifidog-gateway","homepage":null,"size":1705,"stargazers_count":1,"watchers_count":1,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":false,"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":"wifidog:master","ref":"master","sha":"ce6de4761bf3c07bd3d84cf8a6e1404e5b9b2952","user":{"login":"wifidog","id":4562596,"avatar_url":"https://avatars.githubusercontent.com/u/4562596?v=3","gravatar_id":"","url":"https://api.github.com/users/wifidog","html_url":"https://github.com/wifidog","followers_url":"https://api.github.com/users/wifidog/followers","following_url":"https://api.github.com/users/wifidog/following{/other_user}","gists_url":"https://api.github.com/users/wifidog/gists{/gist_id}","starred_url":"https://api.github.com/users/wifidog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wifidog/subscriptions","organizations_url":"https://api.github.com/users/wifidog/orgs","repos_url":"https://api.github.com/users/wifidog/repos","events_url":"https://api.github.com/users/wifidog/events{/privacy}","received_events_url":"https://api.github.com/users/wifidog/received_events","type":"Organization","site_admin":false},"repo":{"id":8316778,"name":"wifidog-gateway","full_name":"wifidog/wifidog-gateway","owner":{"login":"wifidog","id":4562596,"avatar_url":"https://avatars.githubusercontent.com/u/4562596?v=3","gravatar_id":"","url":"https://api.github.com/users/wifidog","html_url":"https://github.com/wifidog","followers_url":"https://api.github.com/users/wifidog/followers","following_url":"https://api.github.com/users/wifidog/following{/other_user}","gists_url":"https://api.github.com/users/wifidog/gists{/gist_id}","starred_url":"https://api.github.com/users/wifidog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wifidog/subscriptions","organizations_url":"https://api.github.com/users/wifidog/orgs","repos_url":"https://api.github.com/users/wifidog/repos","events_url":"https://api.github.com/users/wifidog/events{/privacy}","received_events_url":"https://api.github.com/users/wifidog/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/wifidog/wifidog-gateway","description":"Repository for the wifidog-gateway captive portal designed for embedded systems","fork":false,"url":"https://api.github.com/repos/wifidog/wifidog-gateway","forks_url":"https://api.github.com/repos/wifidog/wifidog-gateway/forks","keys_url":"https://api.github.com/repos/wifidog/wifidog-gateway/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wifidog/wifidog-gateway/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wifidog/wifidog-gateway/teams","hooks_url":"https://api.github.com/repos/wifidog/wifidog-gateway/hooks","issue_events_url":"https://api.github.com/repos/wifidog/wifidog-gateway/issues/events{/number}","events_url":"https://api.github.com/repos/wifidog/wifidog-gateway/events","assignees_url":"https://api.github.com/repos/wifidog/wifidog-gateway/assignees{/user}","branches_url":"https://api.github.com/repos/wifidog/wifidog-gateway/branches{/branch}","tags_url":"https://api.github.com/repos/wifidog/wifidog-gateway/tags","blobs_url":"https://api.github.com/repos/wifidog/wifidog-gateway/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wifidog/wifidog-gateway/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wifidog/wifidog-gateway/git/refs{/sha}","trees_url":"https://api.github.com/repos/wifidog/wifidog-gateway/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wifidog/wifidog-gateway/statuses/{sha}","languages_url":"https://api.github.com/repos/wifidog/wifidog-gateway/languages","stargazers_url":"https://api.github.com/repos/wifidog/wifidog-gateway/stargazers","contributors_url":"https://api.github.com/repos/wifidog/wifidog-gateway/contributors","subscribers_url":"https://api.github.com/repos/wifidog/wifidog-gateway/subscribers","subscription_url":"https://api.github.com/repos/wifidog/wifidog-gateway/subscription","commits_url":"https://api.github.com/repos/wifidog/wifidog-gateway/commits{/sha}","git_commits_url":"https://api.github.com/repos/wifidog/wifidog-gateway/git/commits{/sha}","comments_url":"https://api.github.com/repos/wifidog/wifidog-gateway/comments{/number}","issue_comment_url":"https://api.github.com/repos/wifidog/wifidog-gateway/issues/comments{/number}","contents_url":"https://api.github.com/repos/wifidog/wifidog-gateway/contents/{+path}","compare_url":"https://api.github.com/repos/wifidog/wifidog-gateway/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wifidog/wifidog-gateway/merges","archive_url":"https://api.github.com/repos/wifidog/wifidog-gateway/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wifidog/wifidog-gateway/downloads","issues_url":"https://api.github.com/repos/wifidog/wifidog-gateway/issues{/number}","pulls_url":"https://api.github.com/repos/wifidog/wifidog-gateway/pulls{/number}","milestones_url":"https://api.github.com/repos/wifidog/wifidog-gateway/milestones{/number}","notifications_url":"https://api.github.com/repos/wifidog/wifidog-gateway/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wifidog/wifidog-gateway/labels{/name}","releases_url":"https://api.github.com/repos/wifidog/wifidog-gateway/releases{/id}","created_at":"2013-02-20T16:15:11Z","updated_at":"2015-03-29T06:28:37Z","pushed_at":"2015-03-29T14:53:35Z","git_url":"git://github.com/wifidog/wifidog-gateway.git","ssh_url":"git@github.com:wifidog/wifidog-gateway.git","clone_url":"https://github.com/wifidog/wifidog-gateway.git","svn_url":"https://github.com/wifidog/wifidog-gateway","homepage":"","size":3399,"stargazers_count":129,"watchers_count":129,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":100,"mirror_url":null,"open_issues_count":23,"forks":100,"open_issues":23,"watchers":129,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/wifidog/wifidog-gateway/pulls/168"},"html":{"href":"https://github.com/wifidog/wifidog-gateway/pull/168"},"issue":{"href":"https://api.github.com/repos/wifidog/wifidog-gateway/issues/168"},"comments":{"href":"https://api.github.com/repos/wifidog/wifidog-gateway/issues/168/comments"},"review_comments":{"href":"https://api.github.com/repos/wifidog/wifidog-gateway/pulls/168/comments"},"review_comment":{"href":"https://api.github.com/repos/wifidog/wifidog-gateway/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/wifidog/wifidog-gateway/pulls/168/commits"},"statuses":{"href":"https://api.github.com/repos/wifidog/wifidog-gateway/statuses/70ae3105521230348e7c42bc2be12a27c53d567a"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"commits":2,"additions":187,"deletions":115,"changed_files":4}}