Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:ccc1924
shadowsocks-libev
_service:download_url:shadowsocks-libev.git
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:download_url:shadowsocks-libev.git of Package shadowsocks-libev
<!DOCTYPE html> <html lang="en" class=""> <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object# article: http://ogp.me/ns/article# profile: http://ogp.me/ns/profile#"> <meta charset='utf-8'> <link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/frameworks-4242846376d46c90f210115e02415cbb40cdaf46291ec9fff638250c75f1ce30.css" media="all" rel="stylesheet" /> <link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/github-dcdb0f8f3185fda5af3b96614afd2292257830aa2885d95f7ca4b57920ead342.css" media="all" rel="stylesheet" /> <link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/site-783af31b5d8193281cc058ff5104b6ae774ced24748f920e96e403caf37a4cde.css" media="all" rel="stylesheet" /> <link as="script" href="https://assets-cdn.github.com/assets/frameworks-411d610e4b2b1ffa3d063904534406d08c8351d9ba9b4b3f339bab35e86bb4f3.js" rel="preload" /> <link as="script" href="https://assets-cdn.github.com/assets/github-990e9a12dab096ead6a4bf76d455d031ee532266755bb50c068c2d7962715e9c.js" rel="preload" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="Content-Language" content="en"> <meta name="viewport" content="width=device-width"> <title>GitHub - shadowsocks/shadowsocks-libev: libev port of shadowsocks</title> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> <link rel="apple-touch-icon" href="/apple-touch-icon.png"> <link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-57x57.png"> <link rel="apple-touch-icon" sizes="60x60" href="/apple-touch-icon-60x60.png"> <link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-72x72.png"> <link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-76x76.png"> <link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114x114.png"> <link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-icon-120x120.png"> <link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144x144.png"> <link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon-180x180.png"> <meta property="fb:app_id" content="1401488693436528"> <meta content="https://avatars1.githubusercontent.com/u/3006190?v=3&s=400" name="twitter:image:src" /><meta content="@github" name="twitter:site" /><meta content="summary" name="twitter:card" /><meta content="shadowsocks/shadowsocks-libev" name="twitter:title" /><meta content="shadowsocks-libev - libev port of shadowsocks" name="twitter:description" /> <meta content="https://avatars1.githubusercontent.com/u/3006190?v=3&s=400" property="og:image" /><meta content="GitHub" property="og:site_name" /><meta content="object" property="og:type" /><meta content="shadowsocks/shadowsocks-libev" property="og:title" /><meta content="https://github.com/shadowsocks/shadowsocks-libev" property="og:url" /><meta content="shadowsocks-libev - libev port of shadowsocks" property="og:description" /> <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> <link rel="assets" href="https://assets-cdn.github.com/"> <meta name="pjax-timeout" content="1000"> <meta name="request-id" content="C387DD96:2B24:1DE77A4:57EF8429" data-pjax-transient> <meta name="msapplication-TileImage" content="/windows-tile.png"> <meta name="msapplication-TileColor" content="#ffffff"> <meta name="selected-link" value="repo_source" data-pjax-transient> <meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU"> <meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA"> <meta name="google-analytics" content="UA-3769691-2"> <meta content="collector.githubapp.com" name="octolytics-host" /><meta content="github" name="octolytics-app-id" /><meta content="C387DD96:2B24:1DE77A4:57EF8429" name="octolytics-dimension-request_id" /> <meta content="/<user-name>/<repo-name>" data-pjax-transient="true" name="analytics-location" /> <meta class="js-ga-set" name="dimension1" content="Logged Out"> <meta name="hostname" content="github.com"> <meta name="user-login" content=""> <meta name="expected-hostname" content="github.com"> <meta name="js-proxy-site-detection-payload" content="ODBiMGNiYzg0ODFhMWJjYWJjNDRlODdiNDRiNWU3MjQwNDkzMWZiZTFiN2QwOWRkMGQwNTQzMWVlOWMxZmNmNHx7InJlbW90ZV9hZGRyZXNzIjoiMTk1LjEzNS4yMjEuMTUwIiwicmVxdWVzdF9pZCI6IkMzODdERDk2OjJCMjQ6MURFNzdBNDo1N0VGODQyOSIsInRpbWVzdGFtcCI6MTQ3NTMxNDcyOX0="> <link rel="mask-icon" href="https://assets-cdn.github.com/pinned-octocat.svg" color="#4078c0"> <link rel="icon" type="image/x-icon" href="https://assets-cdn.github.com/favicon.ico"> <meta name="html-safe-nonce" content="5793b321528b43c4948aab458f939924562f7a68"> <meta content="2557c36c7e878a7156183e35f73da16d20fb9410" name="form-nonce" /> <meta http-equiv="x-pjax-version" content="13e827f17dc2afe48b6cd89019f80f3c"> <meta name="description" content="shadowsocks-libev - libev port of shadowsocks"> <meta name="go-import" content="github.com/shadowsocks/shadowsocks-libev git https://github.com/shadowsocks/shadowsocks-libev.git"> <meta content="3006190" name="octolytics-dimension-user_id" /><meta content="shadowsocks" name="octolytics-dimension-user_login" /><meta content="7177269" name="octolytics-dimension-repository_id" /><meta content="shadowsocks/shadowsocks-libev" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="true" name="octolytics-dimension-repository_is_fork" /><meta content="4402713" name="octolytics-dimension-repository_parent_id" /><meta content="clowwindy/shadowsocks-libev" name="octolytics-dimension-repository_parent_nwo" /><meta content="4402713" name="octolytics-dimension-repository_network_root_id" /><meta content="clowwindy/shadowsocks-libev" name="octolytics-dimension-repository_network_root_nwo" /> <link href="https://github.com/shadowsocks/shadowsocks-libev/commits/master.atom" rel="alternate" title="Recent Commits to shadowsocks-libev:master" type="application/atom+xml"> <link rel="canonical" href="https://github.com/shadowsocks/shadowsocks-libev" data-pjax-transient> </head> <body class="logged-out env-production vis-public fork"> <div id="js-pjax-loader-bar" class="pjax-loader-bar"><div class="progress"></div></div> <a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a> <header class="site-header js-details-container" role="banner"> <div class="container-responsive"> <a class="header-logo-invertocat" href="https://github.com/" aria-label="Homepage" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark"> <svg aria-hidden="true" class="octicon octicon-mark-github" height="32" version="1.1" viewBox="0 0 16 16" width="32"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg> </a> <button class="btn-link float-right site-header-toggle js-details-target" type="button" aria-label="Toggle navigation"> <svg aria-hidden="true" class="octicon octicon-three-bars" height="24" version="1.1" viewBox="0 0 12 16" width="18"><path d="M11.41 9H.59C0 9 0 8.59 0 8c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zm0-4H.59C0 5 0 4.59 0 4c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zM.59 11H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1H.59C0 13 0 12.59 0 12c0-.59 0-1 .59-1z"></path></svg> </button> <div class="site-header-menu"> <nav class="site-header-nav site-header-nav-main"> <a href="/personal" class="js-selected-navigation-item nav-item nav-item-personal" data-ga-click="Header, click, Nav menu - item:personal" data-selected-links="/personal /personal"> Personal </a> <a href="/open-source" class="js-selected-navigation-item nav-item nav-item-opensource" data-ga-click="Header, click, Nav menu - item:opensource" data-selected-links="/open-source /open-source"> Open source </a> <a href="/business" class="js-selected-navigation-item nav-item nav-item-business" data-ga-click="Header, click, Nav menu - item:business" data-selected-links="/business /business/partners /business/features /business/customers /business"> Business </a> <a href="/explore" class="js-selected-navigation-item nav-item nav-item-explore" data-ga-click="Header, click, Nav menu - item:explore" data-selected-links="/explore /trending /trending/developers /integrations /integrations/feature/code /integrations/feature/collaborate /integrations/feature/ship /explore"> Explore </a> </nav> <div class="site-header-actions"> <a class="btn btn-primary site-header-actions-btn" href="/join?source=header-repo" data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">Sign up</a> <a class="btn site-header-actions-btn mr-2" href="/login?return_to=%2Fshadowsocks%2Fshadowsocks-libev" data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">Sign in</a> </div> <nav class="site-header-nav site-header-nav-secondary"> <a class="nav-item" href="/pricing">Pricing</a> <a class="nav-item" href="/blog">Blog</a> <a class="nav-item" href="https://help.github.com">Support</a> <a class="nav-item header-search-link" href="https://github.com/search">Search GitHub</a> <div class="header-search scoped-search site-scoped-search js-site-search" role="search"> <!-- </textarea> --><!-- '"` --><form accept-charset="UTF-8" action="/shadowsocks/shadowsocks-libev/search" class="js-site-search-form" data-scoped-search-url="/shadowsocks/shadowsocks-libev/search" data-unscoped-search-url="/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div> <label class="form-control header-search-wrapper js-chromeless-input-container"> <div class="header-search-scope">This repository</div> <input type="text" class="form-control header-search-input js-site-search-focus js-site-search-field is-clearable" data-hotkey="s" name="q" placeholder="Search" aria-label="Search this repository" data-unscoped-placeholder="Search GitHub" data-scoped-placeholder="Search" autocapitalize="off"> </label> </form></div> </nav> </div> </div> </header> <div id="start-of-content" class="accessibility-aid"></div> <div id="js-flash-container"> </div> <div role="main"> <div itemscope itemtype="http://schema.org/SoftwareSourceCode"> <div id="js-repo-pjax-container" data-pjax-container> <div class="pagehead repohead instapaper_ignore readability-menu experiment-repo-nav"> <div class="container repohead-details-container"> <ul class="pagehead-actions"> <li> <a href="/login?return_to=%2Fshadowsocks%2Fshadowsocks-libev" class="btn btn-sm btn-with-count tooltipped tooltipped-n" aria-label="You must be signed in to watch a repository" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-eye" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"></path></svg> Watch </a> <a class="social-count" href="/shadowsocks/shadowsocks-libev/watchers" aria-label="411 users are watching this repository"> 411 </a> </li> <li> <a href="/login?return_to=%2Fshadowsocks%2Fshadowsocks-libev" class="btn btn-sm btn-with-count tooltipped tooltipped-n" aria-label="You must be signed in to star a repository" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-star" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74z"></path></svg> Star </a> <a class="social-count js-social-count" href="/shadowsocks/shadowsocks-libev/stargazers" aria-label="3358 users starred this repository"> 3,358 </a> </li> <li> <a href="/login?return_to=%2Fshadowsocks%2Fshadowsocks-libev" class="btn btn-sm btn-with-count tooltipped tooltipped-n" aria-label="You must be signed in to fork a repository" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-repo-forked" height="16" version="1.1" viewBox="0 0 10 16" width="10"><path d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"></path></svg> Fork </a> <a href="/shadowsocks/shadowsocks-libev/network" class="social-count" aria-label="2682 users are forked this repository"> 2,682 </a> </li> </ul> <h1 class="public "> <svg aria-hidden="true" class="octicon octicon-repo-forked" height="16" version="1.1" viewBox="0 0 10 16" width="10"><path d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"></path></svg> <span class="author" itemprop="author"><a href="/shadowsocks" class="url fn" rel="author">shadowsocks</a></span><!-- --><span class="path-divider">/</span><!-- --><strong itemprop="name"><a href="/shadowsocks/shadowsocks-libev" data-pjax="#js-repo-pjax-container">shadowsocks-libev</a></strong> <span class="fork-flag"> <span class="text">forked from <a href="/clowwindy/shadowsocks-libev">clowwindy/shadowsocks-libev</a></span> </span> </h1> </div> <div class="container"> <nav class="reponav js-repo-nav js-sidenav-container-pjax" itemscope itemtype="http://schema.org/BreadcrumbList" role="navigation" data-pjax="#js-repo-pjax-container"> <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement"> <a href="/shadowsocks/shadowsocks-libev" aria-selected="true" class="js-selected-navigation-item selected reponav-item" data-hotkey="g c" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /shadowsocks/shadowsocks-libev" itemprop="url"> <svg aria-hidden="true" class="octicon octicon-code" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14 8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z"></path></svg> <span itemprop="name">Code</span> <meta itemprop="position" content="1"> </a> </span> <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement"> <a href="/shadowsocks/shadowsocks-libev/issues" class="js-selected-navigation-item reponav-item" data-hotkey="g i" data-selected-links="repo_issues repo_labels repo_milestones /shadowsocks/shadowsocks-libev/issues" itemprop="url"> <svg aria-hidden="true" class="octicon octicon-issue-opened" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg> <span itemprop="name">Issues</span> <span class="counter">0</span> <meta itemprop="position" content="2"> </a> </span> <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement"> <a href="/shadowsocks/shadowsocks-libev/pulls" class="js-selected-navigation-item reponav-item" data-hotkey="g p" data-selected-links="repo_pulls /shadowsocks/shadowsocks-libev/pulls" itemprop="url"> <svg aria-hidden="true" class="octicon octicon-git-pull-request" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M11 11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3 3V4h1c.27.02.48.11.69.31.21.2.3.42.31.69v6.28A1.993 1.993 0 0 0 10 15a1.993 1.993 0 0 0 1-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v6.56A1.993 1.993 0 0 0 2 15a1.993 1.993 0 0 0 1-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2-.65 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"></path></svg> <span itemprop="name">Pull requests</span> <span class="counter">0</span> <meta itemprop="position" content="3"> </a> </span> <a href="/shadowsocks/shadowsocks-libev/projects" class="js-selected-navigation-item reponav-item" data-selected-links="repo_projects new_repo_project repo_project /shadowsocks/shadowsocks-libev/projects"> <svg class="octicon" aria-hidden="true" version="1.1" width="15" height="16" viewBox="0 0 15 16"> <path d="M1 15h13V1H1v14zM15 1v14a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h13a1 1 0 0 1 1 1zm-4.41 11h1.82c.59 0 .59-.41.59-1V3c0-.59 0-1-.59-1h-1.82C10 2 10 2.41 10 3v8c0 .59 0 1 .59 1zm-4-2h1.82C9 10 9 9.59 9 9V3c0-.59 0-1-.59-1H6.59C6 2 6 2.41 6 3v6c0 .59 0 1 .59 1zM2 13V3c0-.59 0-1 .59-1h1.82C5 2 5 2.41 5 3v10c0 .59 0 1-.59 1H2.59C2 14 2 13.59 2 13z"></path> </svg> Projects <span class="counter">0</span> </a> <a href="/shadowsocks/shadowsocks-libev/pulse" class="js-selected-navigation-item reponav-item" data-selected-links="pulse /shadowsocks/shadowsocks-libev/pulse"> <svg aria-hidden="true" class="octicon octicon-pulse" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M11.5 8L8.8 5.4 6.6 8.5 5.5 1.6 2.38 8H0v2h3.6l.9-1.8.9 5.4L9 8.5l1.6 1.5H14V8z"></path></svg> Pulse </a> <a href="/shadowsocks/shadowsocks-libev/graphs" class="js-selected-navigation-item reponav-item" data-selected-links="repo_graphs repo_contributors /shadowsocks/shadowsocks-libev/graphs"> <svg aria-hidden="true" class="octicon octicon-graph" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M16 14v1H0V0h1v14h15zM5 13H3V8h2v5zm4 0H7V3h2v10zm4 0h-2V6h2v7z"></path></svg> Graphs </a> </nav> </div> </div> <div class="container new-discussion-timeline experiment-repo-nav"> <div class="repository-content"> <div class="repository-meta js-details-container"> <span class="repository-meta-content"> <span itemprop="about"> libev port of shadowsocks</span> <span itemprop="url"><a href="http://shadowsocks.org/en/download/servers.html" rel="nofollow">http://shadowsocks.org/en/download/servers.html</a></span> </span> </div> <div class="overall-summary overall-summary-bottomless"> <div class="stats-switcher-viewport js-stats-switcher-viewport"> <div class="stats-switcher-wrapper"> <ul class="numbers-summary"> <li class="commits"> <a data-pjax href="/shadowsocks/shadowsocks-libev/commits/master"> <svg aria-hidden="true" class="octicon octicon-history" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M8 13H6V6h5v2H8v5zM7 1C4.81 1 2.87 2.02 1.59 3.59L0 2v4h4L2.5 4.5C3.55 3.17 5.17 2.3 7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-.34.03-.67.09-1H.08C.03 7.33 0 7.66 0 8c0 3.86 3.14 7 7 7s7-3.14 7-7-3.14-7-7-7z"></path></svg> <span class="num text-emphasized"> 1,208 </span> commits </a> </li> <li> <a data-pjax href="/shadowsocks/shadowsocks-libev/branches"> <svg aria-hidden="true" class="octicon octicon-git-branch" height="16" version="1.1" viewBox="0 0 10 16" width="10"><path d="M10 5c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v.3c-.02.52-.23.98-.63 1.38-.4.4-.86.61-1.38.63-.83.02-1.48.16-2 .45V4.72a1.993 1.993 0 0 0-1-3.72C.88 1 0 1.89 0 3a2 2 0 0 0 1 1.72v6.56c-.59.35-1 .99-1 1.72 0 1.11.89 2 2 2 1.11 0 2-.89 2-2 0-.53-.2-1-.53-1.36.09-.06.48-.41.59-.47.25-.11.56-.17.94-.17 1.05-.05 1.95-.45 2.75-1.25S8.95 7.77 9 6.73h-.02C9.59 6.37 10 5.73 10 5zM2 1.8c.66 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2C1.35 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2zm0 12.41c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm6-8c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"></path></svg> <span class="num text-emphasized"> 2 </span> branches </a> </li> <li> <a data-pjax href="/shadowsocks/shadowsocks-libev/releases"> <svg aria-hidden="true" class="octicon octicon-tag" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M7.73 1.73C7.26 1.26 6.62 1 5.96 1H3.5C2.13 1 1 2.13 1 3.5v2.47c0 .66.27 1.3.73 1.77l6.06 6.06c.39.39 1.02.39 1.41 0l4.59-4.59a.996.996 0 0 0 0-1.41L7.73 1.73zM2.38 7.09c-.31-.3-.47-.7-.47-1.13V3.5c0-.88.72-1.59 1.59-1.59h2.47c.42 0 .83.16 1.13.47l6.14 6.13-4.73 4.73-6.13-6.15zM3.01 3h2v2H3V3h.01z"></path></svg> <span class="num text-emphasized"> 53 </span> releases </a> </li> <li> <a href="/shadowsocks/shadowsocks-libev/graphs/contributors"> <svg aria-hidden="true" class="octicon octicon-organization" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M16 12.999c0 .439-.45 1-1 1H7.995c-.539 0-.994-.447-.995-.999H1c-.54 0-1-.561-1-1 0-2.634 3-4 3-4s.229-.409 0-1c-.841-.621-1.058-.59-1-3 .058-2.419 1.367-3 2.5-3s2.442.58 2.5 3c.058 2.41-.159 2.379-1 3-.229.59 0 1 0 1s1.549.711 2.42 2.088C9.196 9.369 10 8.999 10 8.999s.229-.409 0-1c-.841-.62-1.058-.59-1-3 .058-2.419 1.367-3 2.5-3s2.437.581 2.495 3c.059 2.41-.158 2.38-1 3-.229.59 0 1 0 1s3.005 1.366 3.005 4"></path></svg> <span class="num text-emphasized"> 73 </span> contributors </a> </li> <li> <a href="https://github.com/shadowsocks/shadowsocks-libev/blob/master/LICENSE"> <svg aria-hidden="true" class="octicon octicon-law" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M7 4c-.83 0-1.5-.67-1.5-1.5S6.17 1 7 1s1.5.67 1.5 1.5S7.83 4 7 4zm7 6c0 1.11-.89 2-2 2h-1c-1.11 0-2-.89-2-2l2-4h-1c-.55 0-1-.45-1-1H8v8c.42 0 1 .45 1 1h1c.42 0 1 .45 1 1H3c0-.55.58-1 1-1h1c0-.55.58-1 1-1h.03L6 5H5c0 .55-.45 1-1 1H3l2 4c0 1.11-.89 2-2 2H2c-1.11 0-2-.89-2-2l2-4H1V5h3c0-.55.45-1 1-1h4c.55 0 1 .45 1 1h3v1h-1l2 4zM2.5 7L1 10h3L2.5 7zM13 10l-1.5-3-1.5 3h3z"></path></svg> GPL-3.0 </a> </li> </ul> <div class="repository-lang-stats"> <ol class="repository-lang-stats-numbers"> <li> <a href="/shadowsocks/shadowsocks-libev/search?l=c" data-ga-click="Repository, language stats search click, location:repo overview"> <span class="color-block language-color" style="background-color:#555555;"></span> <span class="lang">C</span> <span class="percent">50.0%</span> </a> </li> <li> <a href="/shadowsocks/shadowsocks-libev/search?l=makefile" data-ga-click="Repository, language stats search click, location:repo overview"> <span class="color-block language-color" style="background-color:#427819;"></span> <span class="lang">Makefile</span> <span class="percent">19.5%</span> </a> </li> <li> <a href="/shadowsocks/shadowsocks-libev/search?l=bash" data-ga-click="Repository, language stats search click, location:repo overview"> <span class="color-block language-color" style="background-color:#89e051;"></span> <span class="lang">Shell</span> <span class="percent">16.8%</span> </a> </li> <li> <a href="/shadowsocks/shadowsocks-libev/search?l=groff" data-ga-click="Repository, language stats search click, location:repo overview"> <span class="color-block language-color" style="background-color:#ecdebe;"></span> <span class="lang">Groff</span> <span class="percent">8.1%</span> </a> </li> <li> <a href="/shadowsocks/shadowsocks-libev/search?l=nasm" data-ga-click="Repository, language stats search click, location:repo overview"> <span class="color-block language-color" style="background-color:#6E4C13;"></span> <span class="lang">Assembly</span> <span class="percent">2.3%</span> </a> </li> <li> <a href="/shadowsocks/shadowsocks-libev/search?l=m4" data-ga-click="Repository, language stats search click, location:repo overview"> <span class="color-block language-color" style="background-color:#ccc;"></span> <span class="lang">M4</span> <span class="percent">2.0%</span> </a> </li> <li> <span class="other"> <span class="color-block language-color" style="background-color:#ededed;"></span> <span class="lang">Other</span> <span class="percent">1.3%</span> </span> </li> </ol> </div> </div> </div> </div> <div class="repository-lang-stats-graph js-toggle-lang-stats" title="Click for language details" data-ga-click="Repository, language bar stats toggle, location:repo overview"> <span class="language-color" aria-label="C 50.0%" style="width:50.0%; background-color:#555555;" itemprop="keywords">C</span> <span class="language-color" aria-label="Makefile 19.5%" style="width:19.5%; background-color:#427819;" itemprop="keywords">Makefile</span> <span class="language-color" aria-label="Shell 16.8%" style="width:16.8%; background-color:#89e051;" itemprop="keywords">Shell</span> <span class="language-color" aria-label="Groff 8.1%" style="width:8.1%; background-color:#ecdebe;" itemprop="keywords">Groff</span> <span class="language-color" aria-label="Assembly 2.3%" style="width:2.3%; background-color:#6E4C13;" itemprop="keywords">Assembly</span> <span class="language-color" aria-label="M4 2.0%" style="width:2.0%; background-color:#ccc;" itemprop="keywords">M4</span> <span class="language-color" aria-label="Other 1.3%" style="width:1.3%; background-color:#ededed;" itemprop="keywords">Other</span> </div> <div class="file-navigation in-mid-page"> <div class="select-menu get-repo-select-menu js-menu-container float-right select-menu-modal-right"> <button class="btn btn-sm btn-primary select-menu-button js-menu-target" title="Clone or download this repository" type="button" aria-label="Clone or download this repository" tabindex="0" aria-haspopup="true"> <span>Clone or download</span> </button> <div class="select-menu-modal-holder dropdown-menu-content js-menu-content" aria-hidden="true"> <div class="get-repo-modal dropdown-menu dropdown-menu-sw pb-0 js-toggler-container "> <div class="clone-options https-clone-options"> <h4 class="mb-1"> Clone with HTTPS <a class="muted-link" href="https://help.github.com/articles/which-remote-url-should-i-use" target="_blank"> <svg aria-hidden="true" class="octicon octicon-question" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M6 10h2v2H6v-2zm4-3.5C10 8.64 8 9 8 9H6c0-.55.45-1 1-1h.5c.28 0 .5-.22.5-.5v-1c0-.28-.22-.5-.5-.5h-1c-.28 0-.5.22-.5.5V7H4c0-1.5 1.5-3 3-3s3 1 3 2.5zM7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7z"></path></svg> </a> </h4> <p class="mb-2 get-repo-decription-text"> Use Git or checkout with SVN using the web URL. </p> <div class="input-group js-zeroclipboard-container"> <input type="text" class="form-control input-monospace input-sm js-zeroclipboard-target js-url-field" value="https://github.com/shadowsocks/shadowsocks-libev.git" aria-label="Clone this repository at https://github.com/shadowsocks/shadowsocks-libev.git" readonly> <div class="input-group-button"> <button aria-label="Copy to clipboard" class="js-zeroclipboard btn btn-sm zeroclipboard-button tooltipped tooltipped-s" data-copied-hint="Copied!" type="button"><svg aria-hidden="true" class="octicon octicon-clippy" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z"></path></svg></button> </div> </div> </div> <div class="mt-2"> <a href="/shadowsocks/shadowsocks-libev/archive/master.zip" class="btn btn-outline get-repo-btn " rel="nofollow" data-ga-click="Repository, download zip, location:repo overview"> Download ZIP </a> </div> </div> </div> </div> <div class="BtnGroup float-right"> <a href="/shadowsocks/shadowsocks-libev/find/master" class="btn btn-sm empty-icon float-right BtnGroup-item" data-pjax data-hotkey="t" data-ga-click="Repository, find file, location:repo overview"> Find file </a> </div> <div class="select-menu branch-select-menu js-menu-container js-select-menu float-left"> <button class="btn btn-sm select-menu-button js-menu-target css-truncate" data-hotkey="w" type="button" aria-label="Switch branches or tags" tabindex="0" aria-haspopup="true"> <i>Branch:</i> <span class="js-select-button css-truncate-target">master</span> </button> <div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax aria-hidden="true"> <div class="select-menu-modal"> <div class="select-menu-header"> <svg aria-label="Close" class="octicon octicon-x js-menu-close" height="16" role="img" version="1.1" viewBox="0 0 12 16" width="12"><path d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"></path></svg> <span class="select-menu-title">Switch branches/tags</span> </div> <div class="select-menu-filters"> <div class="select-menu-text-filter"> <input type="text" aria-label="Filter branches/tags" id="context-commitish-filter-field" class="form-control js-filterable-field js-navigation-enable" placeholder="Filter branches/tags"> </div> <div class="select-menu-tabs"> <ul> <li class="select-menu-tab"> <a href="#" data-tab-filter="branches" data-filter-placeholder="Filter branches/tags" class="js-select-menu-tab" role="tab">Branches</a> </li> <li class="select-menu-tab"> <a href="#" data-tab-filter="tags" data-filter-placeholder="Find a tag…" class="js-select-menu-tab" role="tab">Tags</a> </li> </ul> </div> </div> <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches" role="menu"> <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring"> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/btc-auth" data-name="btc-auth" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text"> btc-auth </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open selected" href="/shadowsocks/shadowsocks-libev/tree/master" data-name="master" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target js-select-menu-filter-text"> master </span> </a> </div> <div class="select-menu-no-results">Nothing to show</div> </div> <div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags"> <div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring"> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.5.3" data-name="v2.5.3" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.5.3"> v2.5.3 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.5.2" data-name="v2.5.2" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.5.2"> v2.5.2 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.5.1" data-name="v2.5.1" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.5.1"> v2.5.1 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.5.0" data-name="v2.5.0" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.5.0"> v2.5.0 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.4.8" data-name="v2.4.8" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.4.8"> v2.4.8 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.4.7" data-name="v2.4.7" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.4.7"> v2.4.7 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.4.6" data-name="v2.4.6" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.4.6"> v2.4.6 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.4.5" data-name="v2.4.5" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.4.5"> v2.4.5 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.4.4" data-name="v2.4.4" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.4.4"> v2.4.4 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.4.3" data-name="v2.4.3" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.4.3"> v2.4.3 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.4.2" data-name="v2.4.2" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.4.2"> v2.4.2 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.4.1" data-name="v2.4.1" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.4.1"> v2.4.1 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.4.0" data-name="v2.4.0" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.4.0"> v2.4.0 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.3.3" data-name="v2.3.3" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.3.3"> v2.3.3 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.3.2" data-name="v2.3.2" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.3.2"> v2.3.2 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.3.1" data-name="v2.3.1" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.3.1"> v2.3.1 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.3.0" data-name="v2.3.0" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.3.0"> v2.3.0 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.2.3" data-name="v2.2.3" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.2.3"> v2.2.3 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.2.2" data-name="v2.2.2" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.2.2"> v2.2.2 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.2.1" data-name="v2.2.1" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.2.1"> v2.2.1 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.2.0" data-name="v2.2.0" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.2.0"> v2.2.0 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.1.4" data-name="v2.1.4" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.1.4"> v2.1.4 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.1.3" data-name="v2.1.3" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.1.3"> v2.1.3 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.1.2" data-name="v2.1.2" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.1.2"> v2.1.2 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.1.1" data-name="v2.1.1" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.1.1"> v2.1.1 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.1.0" data-name="v2.1.0" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.1.0"> v2.1.0 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.0.8" data-name="v2.0.8" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.0.8"> v2.0.8 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.0.7" data-name="v2.0.7" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.0.7"> v2.0.7 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.0.6" data-name="v2.0.6" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.0.6"> v2.0.6 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.0.5" data-name="v2.0.5" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.0.5"> v2.0.5 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.0.4" data-name="v2.0.4" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.0.4"> v2.0.4 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.0.3" data-name="v2.0.3" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.0.3"> v2.0.3 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.0.2" data-name="v2.0.2" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.0.2"> v2.0.2 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v2.0.1" data-name="v2.0.1" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v2.0.1"> v2.0.1 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.6.4" data-name="v1.6.4" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.6.4"> v1.6.4 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.6.3" data-name="v1.6.3" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.6.3"> v1.6.3 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.6.2" data-name="v1.6.2" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.6.2"> v1.6.2 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.6.1" data-name="v1.6.1" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.6.1"> v1.6.1 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.5.3" data-name="v1.5.3" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.5.3"> v1.5.3 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.5.2" data-name="v1.5.2" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.5.2"> v1.5.2 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.5.1" data-name="v1.5.1" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.5.1"> v1.5.1 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.5.0" data-name="v1.5.0" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.5.0"> v1.5.0 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.4.8" data-name="v1.4.8" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.4.8"> v1.4.8 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.4.7" data-name="v1.4.7" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.4.7"> v1.4.7 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.4.6" data-name="v1.4.6" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.4.6"> v1.4.6 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.4.5" data-name="v1.4.5" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.4.5"> v1.4.5 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.4.4" data-name="v1.4.4" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.4.4"> v1.4.4 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.4.3" data-name="v1.4.3" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.4.3"> v1.4.3 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.4.2" data-name="v1.4.2" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.4.2"> v1.4.2 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.4.1" data-name="v1.4.1" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.4.1"> v1.4.1 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.4.0" data-name="v1.4.0" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.4.0"> v1.4.0 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.3.2" data-name="v1.3.2" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.3.2"> v1.3.2 </span> </a> <a class="select-menu-item js-navigation-item js-navigation-open " href="/shadowsocks/shadowsocks-libev/tree/v1.3" data-name="v1.3" data-skip-pjax="true" rel="nofollow"> <svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"></path></svg> <span class="select-menu-item-text css-truncate-target" title="v1.3"> v1.3 </span> </a> </div> <div class="select-menu-no-results">Nothing to show</div> </div> </div> </div> </div> <button type="button" class="btn btn-sm disabled tooltipped tooltipped-n new-pull-request-btn" aria-label="You must be signed in to create a pull request"> New pull request </button> <div class="breadcrumb"> </div> </div> <div class="branch-infobar"> <span class="float-right"> <a class="muted-link" href="/shadowsocks/shadowsocks-libev/pull/new/master"> <svg aria-hidden="true" class="octicon octicon-git-pull-request" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M11 11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3 3V4h1c.27.02.48.11.69.31.21.2.3.42.31.69v6.28A1.993 1.993 0 0 0 10 15a1.993 1.993 0 0 0 1-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v6.56A1.993 1.993 0 0 0 2 15a1.993 1.993 0 0 0 1-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2-.65 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"></path></svg> Pull request </a> <a class="muted-link" href="/shadowsocks/shadowsocks-libev/compare"> <svg aria-hidden="true" class="octicon octicon-diff" height="16" version="1.1" viewBox="0 0 13 16" width="13"><path d="M6 7h2v1H6v2H5V8H3V7h2V5h1v2zm-3 6h5v-1H3v1zM7.5 2L11 5.5V15c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h6.5zM10 6L7 3H1v12h9V6zM8.5 0H3v1h5l4 4v8h1V4.5L8.5 0z"></path></svg> Compare </a> </span> This branch is 723 commits ahead of clowwindy:master. </div> <div class="commit-tease js-details-container"> <span class="float-right"> Latest commit <a class="commit-tease-sha" href="/shadowsocks/shadowsocks-libev/commit/e0d6dd8f3c12fa096030cedcde8dc703b4f7787e" data-pjax> e0d6dd8 </a> <span itemprop="dateModified"><relative-time datetime="2016-09-30T23:33:26Z">Sep 30, 2016</relative-time></span> </span> <span class="commit-author-section"> <img alt="@wongsyrone" class="avatar" height="20" src="https://avatars0.githubusercontent.com/u/5462232?v=3&s=40" width="20" /> <a href="/wongsyrone" class="user-mention" rel="contributor">wongsyrone</a> committed with <a href="/madeye" class="user-mention" rel="contributor">madeye</a> </span> <a href="/shadowsocks/shadowsocks-libev/commit/e0d6dd8f3c12fa096030cedcde8dc703b4f7787e" class="message" data-pjax="true" title="libcork: use API where supported (#860) - The usage of `pthread_setname_np` is not supported on versions of glibc earlier than 2.12. This patch checks the glibc MINOR version and only uses that API where supported. - This will suppress undeclared function warning when compiling with uClibc/musl-libc. Signed-off-by: Syrone Wong <wong.syrone@gmail.com>">libcork: use API where supported (</a><a href="https://github.com/shadowsocks/shadowsocks-libev/pull/860" class="issue-link js-issue-link" data-url="https://github.com/shadowsocks/shadowsocks-libev/issues/860" data-id="180421510" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#860</a><a href="/shadowsocks/shadowsocks-libev/commit/e0d6dd8f3c12fa096030cedcde8dc703b4f7787e" class="message" data-pjax="true" title="libcork: use API where supported (#860) - The usage of `pthread_setname_np` is not supported on versions of glibc earlier than 2.12. This patch checks the glibc MINOR version and only uses that API where supported. - This will suppress undeclared function warning when compiling with uClibc/musl-libc. Signed-off-by: Syrone Wong <wong.syrone@gmail.com>">)</a> <span class="hidden-text-expander inline"> <button type="button" class="ellipsis-expander js-details-target">…</button> </span> </span> <div class="commit-desc"><pre class="text-small">- The usage of `pthread_setname_np` is not supported on versions of glibc earlier than 2.12. This patch checks the glibc MINOR version and only uses that API where supported. - This will suppress undeclared function warning when compiling with uClibc/musl-libc. Signed-off-by: Syrone Wong <wong.syrone@gmail.com></pre></div> </div> <div class="file-wrap"> <a href="/shadowsocks/shadowsocks-libev/tree/e0d6dd8f3c12fa096030cedcde8dc703b4f7787e" class="d-none js-permalink-shortcut" data-hotkey="y">Permalink</a> <table class="files js-navigation-container js-active-navigation-container" data-pjax> <tbody> <tr class="warning include-fragment-error"> <td class="icon"><svg aria-hidden="true" class="octicon octicon-alert" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M8.865 1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1 .19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865 1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z"></path></svg></td> <td class="content" colspan="3">Failed to load latest commit information.</td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/tree/master/.github" class="js-navigation-open" id="01777e4a9846fea5f3fcc8fe40d44680-9d29961e75ce641bf34b81cec8a3a511f224f9da" title=".github">.github</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/86b0146be48d4c25b50228718b0c10dc3844e377" class="message" data-pjax="true" title="Add issue template">Add issue template</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-05T08:26:36Z">Sep 5, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/tree/master/acl" class="js-navigation-open" id="a33915ba226b6dbd1edb3e09fac41ed9-2919af94a1f9f59a3bfb35aedecc8002864889b5" title="acl">acl</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/42d9b68dcc1c6ccd9d766b3755e674c2d0c45a57" class="message" data-pjax="true" title="Remove white list option in CLI">Remove white list option in CLI</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-08T05:06:13Z">Sep 8, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/tree/master/auto" class="js-navigation-open" id="9df22f196a33acd0b372fe502de51211-feb0d23a62744a1625911a9f42d5c5cbde39a6e8" title="auto">auto</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/64870a276b9ff6f9e149f8fcd691ff5b3b5ab668" class="message" data-pjax="true" title="Add HTTP/SNI parser (#809) * WiP: add HTTP/SNI parser * WiP: replace hostname with HTTP/SNI header * WiP: add ACL * Fix white list * Replace free() with ss_free() * Refine sockaddr handling * Add HTTP/SNI support to redir">Add HTTP/SNI parser (</a><a href="https://github.com/shadowsocks/shadowsocks-libev/pull/809" class="issue-link js-issue-link" data-url="https://github.com/shadowsocks/shadowsocks-libev/issues/809" data-id="175648807" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#809</a><a href="/shadowsocks/shadowsocks-libev/commit/64870a276b9ff6f9e149f8fcd691ff5b3b5ab668" class="message" data-pjax="true" title="Add HTTP/SNI parser (#809) * WiP: add HTTP/SNI parser * WiP: replace hostname with HTTP/SNI header * WiP: add ACL * Fix white list * Replace free() with ss_free() * Refine sockaddr handling * Add HTTP/SNI support to redir">)</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-08T02:10:23Z">Sep 8, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/tree/master/debian" class="js-navigation-open" id="6e9552c9bd8e61c8f277c21220160234-70ebfd010bb6156d19a78d29671266d6cb7b70c0" title="debian">debian</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/bd1601f847dec9d232b4c600bd1de4c7e6160c34" class="message" data-pjax="true" title="Bump version">Bump version</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-21T12:39:44Z">Sep 21, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/tree/master/doc" class="js-navigation-open" id="9a09b4dfda82e3e665e31092d1c3ec8d-4f821948d925bdae85efd7c5ac822b4ecbd220ad" title="doc">doc</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/b5c64b925f5c6a9ee63654726a5b8d16f37f87ab" class="message" data-pjax="true" title="Add AES-CTR ciphers info (#820) Signed-off-by: Syrone Wong <wong.syrone@gmail.com>">Add AES-CTR ciphers info (</a><a href="https://github.com/shadowsocks/shadowsocks-libev/pull/820" class="issue-link js-issue-link" data-url="https://github.com/shadowsocks/shadowsocks-libev/issues/820" data-id="176157143" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#820</a><a href="/shadowsocks/shadowsocks-libev/commit/b5c64b925f5c6a9ee63654726a5b8d16f37f87ab" class="message" data-pjax="true" title="Add AES-CTR ciphers info (#820) Signed-off-by: Syrone Wong <wong.syrone@gmail.com>">)</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-10T06:03:16Z">Sep 10, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/tree/master/docker" class="js-navigation-open" id="05b6053c41a2130afd6fc3b158bda4e6-f113dad310c7c86b829786457fcd44f3ddccf1e6" title="docker">docker</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/fa4721bff4420a4f33befcc81c057da736be2e19" class="message" data-pjax="true" title="Update Dockerfile (#847) - configure with `--prefix=/usr` `--disable-documentation` - get dependency with scanelf - version 2.5.3 - USER nobody">Update Dockerfile (</a><a href="https://github.com/shadowsocks/shadowsocks-libev/pull/847" class="issue-link js-issue-link" data-url="https://github.com/shadowsocks/shadowsocks-libev/issues/847" data-id="179395560" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#847</a><a href="/shadowsocks/shadowsocks-libev/commit/fa4721bff4420a4f33befcc81c057da736be2e19" class="message" data-pjax="true" title="Update Dockerfile (#847) - configure with `--prefix=/usr` `--disable-documentation` - get dependency with scanelf - version 2.5.3 - USER nobody">)</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-27T04:37:07Z">Sep 27, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/tree/master/libcork" class="js-navigation-open" id="4c8bfeb37984197d8d30fceae4454175-53a652d95d5c725da2b180bd2b72cf872548762b" title="libcork">libcork</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/e0d6dd8f3c12fa096030cedcde8dc703b4f7787e" class="message" data-pjax="true" title="libcork: use API where supported (#860) - The usage of `pthread_setname_np` is not supported on versions of glibc earlier than 2.12. This patch checks the glibc MINOR version and only uses that API where supported. - This will suppress undeclared function warning when compiling with uClibc/musl-libc. Signed-off-by: Syrone Wong <wong.syrone@gmail.com>">libcork: use API where supported (</a><a href="https://github.com/shadowsocks/shadowsocks-libev/pull/860" class="issue-link js-issue-link" data-url="https://github.com/shadowsocks/shadowsocks-libev/issues/860" data-id="180421510" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#860</a><a href="/shadowsocks/shadowsocks-libev/commit/e0d6dd8f3c12fa096030cedcde8dc703b4f7787e" class="message" data-pjax="true" title="libcork: use API where supported (#860) - The usage of `pthread_setname_np` is not supported on versions of glibc earlier than 2.12. This patch checks the glibc MINOR version and only uses that API where supported. - This will suppress undeclared function warning when compiling with uClibc/musl-libc. Signed-off-by: Syrone Wong <wong.syrone@gmail.com>">)</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-30T23:33:26Z">Sep 30, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/tree/master/libev" class="js-navigation-open" id="1a7b43a5a1f565f87ac4712f3427f8ea-3cc2d15034c808fb7073b3fefb80c47f87ae6226" title="libev">libev</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/c9c970cee572ba2021e511386e86f39e4dd3eb5a" class="message" data-pjax="true" title="Enable kqueue for freebsd again">Enable kqueue for freebsd again</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-29T15:01:31Z">Sep 29, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/tree/master/libipset" class="js-navigation-open" id="418ae370b67cd45dfb086907789bd304-60cd59561a8d7725ea1a3364fb2fb10fd8c75f68" title="libipset">libipset</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/d8606c53b840c85850c1d0f9f3726acf9ef499df" class="message" data-pjax="true" title="Refine libpcre searching">Refine libpcre searching</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-08T14:20:48Z">Sep 8, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/tree/master/libsodium" class="js-navigation-open" id="dbb5adcce29cbdcc4a75d8bbd93f2481-29bc5a1aff80b65546e3c25974aca78f6c5ca913" title="libsodium">libsodium</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/e3a417932e8c1bf25ce3155281a5fde62443ae9f" class="message" data-pjax="true" title="Update ax_pthread">Update ax_pthread</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2015-12-20T12:50:04Z">Dec 20, 2015</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/tree/master/libudns" class="js-navigation-open" id="6b3e78caf363bbb2a7103ecea733387c-394eb2a1af421b43c04f8bf2ec19decfbceb7dd6" title="libudns">libudns</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/d8606c53b840c85850c1d0f9f3726acf9ef499df" class="message" data-pjax="true" title="Refine libpcre searching">Refine libpcre searching</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-08T14:20:48Z">Sep 8, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/tree/master/m4" class="js-navigation-open" id="fd6b6fc9220b72d21683ae8e4f50a210-af8c890e1fb730fc15ec7c0b9e405dd412ca22ba" title="m4">m4</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/96dda0ecb616168420e2cdcc29f6550b09615930" class="message" data-pjax="true" title="Fix mingw building">Fix mingw building</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-09T04:33:22Z">Sep 9, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/tree/master/openwrt" class="js-navigation-open" id="27d03b6f0fc0a15464669d7950529cae-77787236fc83a9ef5b1083a90911ea5d8961cd77" title="openwrt">openwrt</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/bd1601f847dec9d232b4c600bd1de4c7e6160c34" class="message" data-pjax="true" title="Bump version">Bump version</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-21T12:39:44Z">Sep 21, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/tree/master/rpm" class="js-navigation-open" id="455385f5d8493917cb83541909b7cfa9-3a6c8376b1341fe3b9836048908c9a6582c31ad1" title="rpm">rpm</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/0e1ca9c25dc88076508f5456f8e20b5497807e8c" class="message" data-pjax="true" title="update version to 2.4.5">update version to 2.4.5</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-02-18T01:56:48Z">Feb 18, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-directory" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path d="M13 4H7V3c0-.66-.31-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM6 4H1V3h5v1z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/tree/master/src" class="js-navigation-open" id="25d902c24283ab8cfbac54dfa101ad31-40e546986be53f43aa87a4d6d2a6f88c8f69d22c" title="src">src</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/c29099df3f8ead3dfcc1ea59b213d98dc044eda9" class="message" data-pjax="true" title="Enable block list by default">Enable block list by default</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-30T23:32:40Z">Sep 30, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/.gitignore" class="js-navigation-open" id="a084b794bc0759e7a6b77810e01874f2-72a51ea5abb8ce5f89bf5aef898dc35715a62ee1" title=".gitignore">.gitignore</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/c12e450e98e1ebcdfe40d4941295b5a88d2f2c4c" class="message" data-pjax="true" title="Update Debian dependency and bump library soname (#814) * debian: add libpcre3-dev as build dependency. * Bump soname of libshadowsocks-libev. Soname for libshadowsocks-libev is bumped from 1:0:0 to 2:0:0 due to ABI breakage between shadowsocks-libev 2.5.0 and 2.5.1.">Update Debian dependency and bump library soname (</a><a href="https://github.com/shadowsocks/shadowsocks-libev/pull/814" class="issue-link js-issue-link" data-url="https://github.com/shadowsocks/shadowsocks-libev/issues/814" data-id="175769740" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#814</a><a href="/shadowsocks/shadowsocks-libev/commit/c12e450e98e1ebcdfe40d4941295b5a88d2f2c4c" class="message" data-pjax="true" title="Update Debian dependency and bump library soname (#814) * debian: add libpcre3-dev as build dependency. * Bump soname of libshadowsocks-libev. Soname for libshadowsocks-libev is bumped from 1:0:0 to 2:0:0 due to ABI breakage between shadowsocks-libev 2.5.0 and 2.5.1.">)</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-08T14:35:27Z">Sep 8, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/.travis.yml" class="js-navigation-open" id="354f30a63fb0907d4ad57269548329e3-076fdb4883d54f3632b7d67ca224875a9350dab4" title=".travis.yml">.travis.yml</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/1f5b0eacf2416dc6cea91c6efece16433d8668d5" class="message" data-pjax="true" title="Fix dependency issue">Fix dependency issue</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-07-04T10:32:48Z">Jul 4, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/.uncrustify.cfg" class="js-navigation-open" id="7780020e00d435bdf499a7ad786ee67e-a8c7d51112dd1bcf8a4aaca569376b70cdbcc8ff" title=".uncrustify.cfg">.uncrustify.cfg</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/b28638ab80c10631b58ae74f7f1ac74f5234de24" class="message" data-pjax="true" title="Clean up">Clean up</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-09T05:17:58Z">Sep 9, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/AUTHORS" class="js-navigation-open" id="3d350169560e75d0cf9fc8e3574a3639-b63b5f139d68dc2d0ece9004e7d4094968c6366b" title="AUTHORS">AUTHORS</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/3c371ab0eb095cccf5d7baa31c47beaad5267b62" class="message" data-pjax="true" title="add AUTHORS">add AUTHORS</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-06-17T08:27:37Z">Jun 17, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/COPYING" class="js-navigation-open" id="7116ef0705885343c9e1b2171a06be0e-7660015dad67449e1e77dde96f4320a05e7df381" itemprop="license" title="COPYING">COPYING</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/ff08838a19ba70cad3a4d0b2a24654a0ac42efa0" class="message" data-pjax="true" title="add debian package description">add debian package description</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2013-04-06T10:00:46Z">Apr 6, 2013</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/Changes" class="js-navigation-open" id="c112bb3542e98308d12d5ecb10a67abc-6db7d96c97b20eb5e4dc08bfb36c109a3ba41120" title="Changes">Changes</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/bd1601f847dec9d232b4c600bd1de4c7e6160c34" class="message" data-pjax="true" title="Bump version">Bump version</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-21T12:39:44Z">Sep 21, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/INSTALL" class="js-navigation-open" id="6a755e7d228a2b491321dbae0a7a248b-7d1c323beae76333f523f6df31c47a87f5597edb" title="INSTALL">INSTALL</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/bdbed8f898ee87075d2c5d3e414efd68bee909b0" class="message" data-pjax="true" title="fix autoconf">fix autoconf</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2013-01-06T06:09:59Z">Jan 6, 2013</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/LICENSE" class="js-navigation-open" id="9879d6db96fd29134fc802214163b95a-e963df8294069543e782fd72aa71832dca1571ca" itemprop="license" title="LICENSE">LICENSE</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/ad9d5b198ba5d7e50f4f0ad1fd06739d1b57a8ea" class="message" data-pjax="true" title="Update LICENSE">Update LICENSE</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2013-11-14T07:46:24Z">Nov 14, 2013</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/Makefile.am" class="js-navigation-open" id="c949f93d03f44a4217d7a138f9e2e54a-690af43757802502fa8b8ac8981d47668045ba06" title="Makefile.am">Makefile.am</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/7bc66eca3f378a2b7d20e887e775562c088bd4cc" class="message" data-pjax="true" title="fix disable-documentation option (#700) Signed-off-by: Syrone Wong <wong.syrone@gmail.com>">fix disable-documentation option (</a><a href="https://github.com/shadowsocks/shadowsocks-libev/pull/700" class="issue-link js-issue-link" data-url="https://github.com/shadowsocks/shadowsocks-libev/issues/700" data-id="163668721" data-error-text="Failed to load issue title" data-permission-text="Issue title is private">#700</a><a href="/shadowsocks/shadowsocks-libev/commit/7bc66eca3f378a2b7d20e887e775562c088bd4cc" class="message" data-pjax="true" title="fix disable-documentation option (#700) Signed-off-by: Syrone Wong <wong.syrone@gmail.com>">)</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-07-04T13:04:57Z">Jul 4, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/Makefile.in" class="js-navigation-open" id="7e056ddc530791272d363e50c1f25647-c72c388869261984ad61f54723908e53704aa025" title="Makefile.in">Makefile.in</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/d8606c53b840c85850c1d0f9f3726acf9ef499df" class="message" data-pjax="true" title="Refine libpcre searching">Refine libpcre searching</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-08T14:20:48Z">Sep 8, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/README.md" class="js-navigation-open" id="04c6e90faac2675aa89e2176d2eec7d8-b75ca71d776aeafe9bccd0e6c7fde83e4e690dcb" title="README.md">README.md</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/bd1601f847dec9d232b4c600bd1de4c7e6160c34" class="message" data-pjax="true" title="Bump version">Bump version</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-21T12:39:44Z">Sep 21, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/aclocal.m4" class="js-navigation-open" id="9ceb48203b3fd0a963276aeb22265658-6c72537c0b67cda93ee6c9e05a3425299e0f081c" title="aclocal.m4">aclocal.m4</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/d8606c53b840c85850c1d0f9f3726acf9ef499df" class="message" data-pjax="true" title="Refine libpcre searching">Refine libpcre searching</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-08T14:20:48Z">Sep 8, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/autogen.sh" class="js-navigation-open" id="f88e95eed7716507cfe3a54a2c9dd382-01db361f2284425d0d65522f10e24db9ddd772b1" title="autogen.sh">autogen.sh</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/70929b7bd48421d7d03971887c59a322a20f65e9" class="message" data-pjax="true" title="bump version">bump version</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2013-04-05T02:46:19Z">Apr 5, 2013</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/config.h.in" class="js-navigation-open" id="57fb65583e7c90f3400179b1a4319f42-03ee29c60a74176d45433486fae070b9358aefc2" title="config.h.in">config.h.in</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/d8606c53b840c85850c1d0f9f3726acf9ef499df" class="message" data-pjax="true" title="Refine libpcre searching">Refine libpcre searching</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-08T14:20:48Z">Sep 8, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/configure" class="js-navigation-open" id="e2d5a00791bce9a01f99bc6fd613a39d-853a91f2082b22df368d566cca248d9116fc6336" title="configure">configure</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/bd1601f847dec9d232b4c600bd1de4c7e6160c34" class="message" data-pjax="true" title="Bump version">Bump version</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-21T12:39:44Z">Sep 21, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/configure.ac" class="js-navigation-open" id="67e997bcfdac55191033d57a16d1408a-aa2d794c6eb610053e3765c14882a38d6b8ea873" title="configure.ac">configure.ac</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/bd1601f847dec9d232b4c600bd1de4c7e6160c34" class="message" data-pjax="true" title="Bump version">Bump version</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-09-21T12:39:44Z">Sep 21, 2016</time-ago></span> </td> </tr> <tr class="js-navigation-item"> <td class="icon"> <svg aria-hidden="true" class="octicon octicon-file-text" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z"></path></svg> <img alt="" class="spinner" height="16" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif" width="16" /> </td> <td class="content"> <span class="css-truncate css-truncate-target"><a href="/shadowsocks/shadowsocks-libev/blob/master/shadowsocks-libev.pc.in" class="js-navigation-open" id="58d23d1abf2a0bb739479b2c9793ebbf-715ba873bce017e0337cb4800ebad4f65e705845" title="shadowsocks-libev.pc.in">shadowsocks-libev.pc.in</a></span> </td> <td class="message"> <span class="css-truncate css-truncate-target"> <a href="/shadowsocks/shadowsocks-libev/commit/6fc1dccc58bbdb938230280198cfd3c40993fbc9" class="message" data-pjax="true" title="Rename libshadowsocks to libshadowsocks-libev">Rename libshadowsocks to libshadowsocks-libev</a> </span> </td> <td class="age"> <span class="css-truncate css-truncate-target"><time-ago datetime="2016-06-01T10:12:27Z">Jun 1, 2016</time-ago></span> </td> </tr> </tbody> </table> </div> <div id="readme" class="readme boxed-group clearfix announce instapaper_body md"> <h3> <svg aria-hidden="true" class="octicon octicon-book" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M3 5h4v1H3V5zm0 3h4V7H3v1zm0 2h4V9H3v1zm11-5h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm2-6v9c0 .55-.45 1-1 1H9.5l-1 1-1-1H2c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h5.5l1 1 1-1H15c.55 0 1 .45 1 1zm-8 .5L7.5 3H2v9h6V3.5zm7-.5H9.5l-.5.5V12h6V3z"></path></svg> README.md </h3> <article class="markdown-body entry-content" itemprop="text"><h1><a id="user-content-shadowsocks-libev" class="anchor" href="#shadowsocks-libev" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>shadowsocks-libev</h1> <h2><a id="user-content-intro" class="anchor" href="#intro" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Intro</h2> <p><a href="http://shadowsocks.org">Shadowsocks-libev</a> is a lightweight secured SOCKS5 proxy for embedded devices and low-end boxes.</p> <p>It is a port of <a href="https://github.com/shadowsocks/shadowsocks">Shadowsocks</a> created by <a href="https://github.com/clowwindy">@clowwindy</a>, which is maintained by <a href="https://github.com/madeye">@madeye</a> and <a href="https://github.com/linusyang">@linusyang</a>.</p> <p>Current version: 2.5.3 | <a href="/shadowsocks/shadowsocks-libev/blob/master/debian/changelog">Changelog</a></p> <p>Travis CI: <a href="https://travis-ci.org/shadowsocks/shadowsocks-libev"><img src="https://camo.githubusercontent.com/65b8367364852bafc18eb6aa5983db670e4049d2/68747470733a2f2f7472617669732d63692e6f72672f736861646f77736f636b732f736861646f77736f636b732d6c696265762e7376673f6272616e63683d6d6173746572" alt="Travis CI" data-canonical-src="https://travis-ci.org/shadowsocks/shadowsocks-libev.svg?branch=master" style="max-width:100%;"></a></p> <h2><a id="user-content-features" class="anchor" href="#features" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Features</h2> <p>Shadowsocks-libev is written in pure C and only depends on <a href="http://software.schmorp.de/pkg/libev.html">libev</a> and <a href="http://www.openssl.org/">OpenSSL</a> or <a href="https://tls.mbed.org/">mbedTLS</a> or <a href="https://polarssl.org/">PolarSSL</a>.</p> <p>In normal usage, the memory footprint is about 600KB and the CPU utilization is no more than 5% on a low-end router (Buffalo WHR-G300N V2 with a 400MHz MIPS CPU, 32MB memory and 4MB flash).</p> <p>For a full list of feature comparison between different versions of shadowsocks, refer to the <a href="https://github.com/shadowsocks/shadowsocks/wiki/Feature-Comparison-across-Different-Versions">Wiki page</a>.</p> <h2><a id="user-content-installation" class="anchor" href="#installation" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Installation</h2> <h3><a id="user-content-distribution-specific-guide" class="anchor" href="#distribution-specific-guide" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Distribution-specific guide</h3> <ul> <li><a href="#debian--ubuntu">Debian & Ubuntu</a> <ul> <li><a href="#install-from-repository">Install from repository</a></li> <li><a href="#build-deb-package-from-source">Build deb package from source</a></li> <li><a href="#configure-and-start-the-service">Configure and start the service</a></li> </ul></li> <li><a href="#fedora--rhel">Fedora & RHEL</a> <ul> <li><a href="#install-from-repository-1">Install from repository</a></li> </ul></li> <li><a href="#opensuse">OpenSUSE</a> <ul> <li><a href="#install-from-repository-2">Install from repository</a></li> <li><a href="#build-from-source">Build from source</a></li> </ul></li> <li><a href="#archlinux">Archlinux</a></li> <li><a href="#nixos">NixOS</a></li> <li><a href="#nix">Nix</a></li> <li><a href="#linux">Directly build and install on UNIX-like system</a></li> <li><a href="#freebsd">FreeBSD</a></li> <li><a href="#openwrt">OpenWRT</a></li> <li><a href="#os-x">OS X</a></li> <li><a href="#windows">Windows</a></li> </ul> <hr> <h3><a id="user-content-pre-build-configure-guide" class="anchor" href="#pre-build-configure-guide" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Pre-build configure guide</h3> <p>For a complete list of avaliable configure-time option, try <code>configure --help</code>.</p> <h4><a id="user-content-using-alternative-crypto-library" class="anchor" href="#using-alternative-crypto-library" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Using alternative crypto library</h4> <p>There are three crypto libraries available:</p> <ul> <li>OpenSSL (<strong>default</strong>)</li> <li>mbedTLS</li> <li>PolarSSL (Deprecated)</li> </ul> <h5><a id="user-content-mbedtls" class="anchor" href="#mbedtls" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>mbedTLS</h5> <p>To build against mbedTLS, specify <code>--with-crypto-library=mbedtls</code> and <code>--with-mbedtls=/path/to/mbedtls</code> when running <code>./configure</code>.</p> <p>Windows users will need extra work when compiling mbedTLS library, see <a href="https://github.com/shadowsocks/shadowsocks-libev/issues/422">this issue</a> for detail info.</p> <h5><a id="user-content-polarssl-deprecated" class="anchor" href="#polarssl-deprecated" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>PolarSSL (Deprecated)</h5> <p>To build against PolarSSL, specify <code>--with-crypto-library=polarssl</code> and <code>--with-polarssl=/path/to/polarssl</code> when running <code>./configure</code>.</p> <ul> <li>PolarSSL <strong>1.2.5 or newer</strong> is required. Currently, PolarSSL does <strong>NOT</strong> support CAST5-CFB, DES-CFB, IDEA-CFB, RC2-CFB and SEED-CFB.</li> <li>RC4 is only support by PolarSSL <strong>1.3.0 or above</strong>.</li> </ul> <h4><a id="user-content-using-shared-library-from-system" class="anchor" href="#using-shared-library-from-system" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Using shared library from system</h4> <p>Please specify <code>--enable-system-shared-lib</code>. This will replace the bundled <code>libev</code>, <code>libsodium</code> and <code>libudns</code> with the corresponding libraries installed in the system during compilation and linking.</p> <h3><a id="user-content-debian--ubuntu" class="anchor" href="#debian--ubuntu" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Debian & Ubuntu</h3> <h4><a id="user-content-install-from-repository" class="anchor" href="#install-from-repository" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Install from repository</h4> <p><strong>Note: The repositories doesn't always contain the latest version. Please build from source if you want the latest version (see below)</strong></p> <p>Using official repository for Debian unstable:</p> <div class="highlight highlight-source-shell"><pre>sudo apt update sudo apt install shadowsocks-libev</pre></div> <h4><a id="user-content-build-deb-package-from-source" class="anchor" href="#build-deb-package-from-source" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Build deb package from source</h4> <p>Supported Platforms:</p> <ul> <li>Debian 7 (see below), 8, unstable</li> <li>Ubuntu 14.04 (see below), Ubuntu 14.10, 15.04, 15.10 or higher</li> </ul> <p><strong>Note for Ubuntu 14.04 users</strong>: Packages built on Ubuntu 14.04 may be used in later Ubuntu versions. However, packages built on Debian 7/8/9 or Ubuntu 14.10+ <strong>cannot</strong> be installed on Ubuntu 14.04.</p> <p><strong>Note for Debian 7.x users</strong>: To build packages on Debian 7 (Wheezy), you need to enable <code>debian-backports</code> to install systemd-compatibility packages like <code>dh-systemd</code> or <code>init-system-helpers</code>. Please follow the instructions on <a href="http://backports.debian.org">Debian Backports</a>.</p> <p>This also means that you can only install those built packages on systems that have <code>init-system-helpers</code> installed.</p> <p>Otherwise, try to build and install directly from source. See the <a href="#linux">Linux</a> section below.</p> <div class="highlight highlight-source-shell"><pre><span class="pl-c1">cd</span> shadowsocks-libev sudo apt-get install --no-install-recommends build-essential autoconf libtool libssl-dev \ gawk debhelper dh-systemd init-system-helpers pkg-config asciidoc xmlto apg libpcre3-dev dpkg-buildpackage -b -us -uc -i <span class="pl-c1">cd</span> .. sudo dpkg -i shadowsocks-libev<span class="pl-k">*</span>.deb</pre></div> <h4><a id="user-content-configure-and-start-the-service" class="anchor" href="#configure-and-start-the-service" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Configure and start the service</h4> <pre><code># Edit the configuration file sudo vim /etc/shadowsocks-libev/config.json # Edit the default configuration for debian sudo vim /etc/default/shadowsocks-libev # Start the service sudo /etc/init.d/shadowsocks-libev start # for sysvinit, or sudo systemctl start shadowsocks-libev # for systemd </code></pre> <h3><a id="user-content-fedora--rhel" class="anchor" href="#fedora--rhel" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Fedora & RHEL</h3> <p>Supported distributions include</p> <ul> <li>Fedora 22, 23, 24</li> <li>RHEL 6, 7 and derivatives (including CentOS, Scientific Linux)</li> </ul> <h4><a id="user-content-install-from-repository-1" class="anchor" href="#install-from-repository-1" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Install from repository</h4> <p>Enable repo via <code>dnf</code>:</p> <pre><code>su -c 'dnf copr enable librehat/shadowsocks' </code></pre> <p>Or download yum repo on <a href="https://copr.fedoraproject.org/coprs/librehat/shadowsocks/">Fedora Copr</a> and put it inside <code>/etc/yum.repos.d/</code>. The release <code>Epel</code> is for RHEL and its derivatives.</p> <p>Then, install <code>shadowsocks-libev</code> via <code>dnf</code>:</p> <div class="highlight highlight-source-shell"><pre>su -c <span class="pl-s"><span class="pl-pds">'</span>dnf update<span class="pl-pds">'</span></span> su -c <span class="pl-s"><span class="pl-pds">'</span>dnf install shadowsocks-libev<span class="pl-pds">'</span></span></pre></div> <p>or <code>yum</code>:</p> <div class="highlight highlight-source-shell"><pre>su -c <span class="pl-s"><span class="pl-pds">'</span>yum update<span class="pl-pds">'</span></span> su -c <span class="pl-s"><span class="pl-pds">'</span>yum install shadowsocks-libev<span class="pl-pds">'</span></span></pre></div> <h3><a id="user-content-opensuse" class="anchor" href="#opensuse" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>OpenSUSE</h3> <h4><a id="user-content-install-from-repository-2" class="anchor" href="#install-from-repository-2" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Install from repository</h4> <p>Use the following command to install from repository.</p> <div class="highlight highlight-source-shell"><pre>sudo zypper install shadowsocks-libev</pre></div> <h4><a id="user-content-build-from-source" class="anchor" href="#build-from-source" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Build from source</h4> <p>You should install <code>zlib-devel</code> and <code>libopenssl-devel</code> first.</p> <div class="highlight highlight-source-shell"><pre>sudo zypper update sudo zypper install zlib-devel libopenssl-devel</pre></div> <p>Then download the source package and compile.</p> <div class="highlight highlight-source-shell"><pre>git clone https://github.com/shadowsocks/shadowsocks-libev.git <span class="pl-c1">cd</span> shadowsocks-libev ./configure <span class="pl-k">&&</span> make sudo make install</pre></div> <h3><a id="user-content-archlinux" class="anchor" href="#archlinux" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Archlinux</h3> <div class="highlight highlight-source-shell"><pre>sudo pacman -S shadowsocks-libev</pre></div> <p>Please refer to downstream <a href="https://projects.archlinux.org/svntogit/community.git/tree/trunk?h=packages/shadowsocks-libev">PKGBUILD</a> script for extra modifications and distribution-specific bugs.</p> <h3><a id="user-content-nixos" class="anchor" href="#nixos" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>NixOS</h3> <div class="highlight highlight-source-shell"><pre>nix-env -iA nixos.shadowsocks-libev</pre></div> <h3><a id="user-content-nix" class="anchor" href="#nix" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Nix</h3> <div class="highlight highlight-source-shell"><pre>nix-env -iA nixpkgs.shadowsocks-libev</pre></div> <h3><a id="user-content-linux" class="anchor" href="#linux" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Linux</h3> <p>For Unix-like systems, especially Debian-based systems, e.g. Ubuntu, Debian or Linux Mint, you can build the binary like this:</p> <div class="highlight highlight-source-shell"><pre><span class="pl-c"># Debian / Ubuntu</span> sudo apt-get install --no-install-recommends build-essential autoconf libtool libssl-dev asciidoc xmlto <span class="pl-c"># CentOS / Fedora / RHEL</span> sudo yum install gcc autoconf libtool automake make zlib-devel openssl-devel asciidoc xmlto ./configure <span class="pl-k">&&</span> make sudo make install</pre></div> <h3><a id="user-content-freebsd" class="anchor" href="#freebsd" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>FreeBSD</h3> <div class="highlight highlight-source-shell"><pre>su <span class="pl-c1">cd</span> /usr/ports/net/shadowsocks-libev make install</pre></div> <p>Edit your config.json file. By default, it's located in /usr/local/etc/shadowsocks-libev.</p> <p>To enable shadowsocks-libev, add the following rc variable to your /etc/rc.conf file:</p> <pre><code>shadowsocks_libev_enable="YES" </code></pre> <p>Start the Shadowsocks server:</p> <div class="highlight highlight-source-shell"><pre>service shadowsocks_libev start</pre></div> <h3><a id="user-content-openwrt" class="anchor" href="#openwrt" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>OpenWRT</h3> <p><strong>Note</strong>: You may want to use <a href="https://github.com/shadowsocks/openwrt-shadowsocks">openwrt-shadowsocks</a> , which is developed specifically for OpenWRT.</p> <div class="highlight highlight-source-shell"><pre><span class="pl-c"># At OpenWRT build root</span> <span class="pl-c1">pushd</span> package git clone https://github.com/shadowsocks/shadowsocks-libev.git <span class="pl-c1">popd</span> <span class="pl-c"># Enable shadowsocks-libev in network category</span> make menuconfig <span class="pl-c"># Optional</span> make -j <span class="pl-c"># Build the package</span> make V=99 package/shadowsocks-libev/openwrt/compile</pre></div> <h3><a id="user-content-os-x" class="anchor" href="#os-x" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>OS X</h3> <p>For OS X, use <a href="http://brew.sh">Homebrew</a> to install or build.</p> <p>Install Homebrew:</p> <div class="highlight highlight-source-shell"><pre>ruby -e <span class="pl-s"><span class="pl-pds">"</span><span class="pl-s"><span class="pl-pds">$(</span>curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install<span class="pl-pds">)</span></span><span class="pl-pds">"</span></span></pre></div> <p>Install shadowsocks-libev:</p> <div class="highlight highlight-source-shell"><pre>brew install shadowsocks-libev</pre></div> <h3><a id="user-content-windows" class="anchor" href="#windows" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Windows</h3> <p>For Windows, use either MinGW (msys) or Cygwin to build. At the moment, only <code>ss-local</code> is supported to build against MinGW (msys).</p> <p>If you are using MinGW (msys), please download OpenSSL or PolarSSL source tarball to the home directory of msys, and build it like this (may take a few minutes):</p> <h4><a id="user-content-openssl" class="anchor" href="#openssl" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>OpenSSL</h4> <div class="highlight highlight-source-shell"><pre>tar zxf openssl-1.0.1e.tar.gz <span class="pl-c1">cd</span> openssl-1.0.1e ./config --prefix=<span class="pl-s"><span class="pl-pds">"</span><span class="pl-smi">$HOME</span>/prebuilt<span class="pl-pds">"</span></span> --openssldir=<span class="pl-s"><span class="pl-pds">"</span><span class="pl-smi">$HOME</span>/prebuilt/openssl<span class="pl-pds">"</span></span> make <span class="pl-k">&&</span> make install</pre></div> <h4><a id="user-content-polarssl" class="anchor" href="#polarssl" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>PolarSSL</h4> <div class="highlight highlight-source-shell"><pre>tar zxf polarssl-1.3.2-gpl.tgz <span class="pl-c1">cd</span> polarssl-1.3.2 make lib WINDOWS=1 make install DESTDIR=<span class="pl-s"><span class="pl-pds">"</span><span class="pl-smi">$HOME</span>/prebuilt<span class="pl-pds">"</span></span></pre></div> <p>Then, build the binary using the commands below, and all <code>.exe</code> files will be built at <code>$HOME/ss/bin</code>:</p> <h4><a id="user-content-openssl-1" class="anchor" href="#openssl-1" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>OpenSSL</h4> <div class="highlight highlight-source-shell"><pre>./configure --prefix=<span class="pl-s"><span class="pl-pds">"</span><span class="pl-smi">$HOME</span>/ss<span class="pl-pds">"</span></span> --with-openssl=<span class="pl-s"><span class="pl-pds">"</span><span class="pl-smi">$HOME</span>/prebuilt<span class="pl-pds">"</span></span> make <span class="pl-k">&&</span> make install</pre></div> <h4><a id="user-content-polarssl-1" class="anchor" href="#polarssl-1" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>PolarSSL</h4> <div class="highlight highlight-source-shell"><pre>./configure --prefix=<span class="pl-s"><span class="pl-pds">"</span><span class="pl-smi">$HOME</span>/ss<span class="pl-pds">"</span></span> --with-crypto-library=polarssl --with-polarssl=<span class="pl-smi">$HOME</span>/prebuilt make <span class="pl-k">&&</span> make install</pre></div> <h2><a id="user-content-usage" class="anchor" href="#usage" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Usage</h2> <p>For a detailed and complete list of all supported arguments, you may refer to the man pages of the applications, respectively.</p> <pre><code> ss-[local|redir|server|tunnel] -s <server_host> host name or ip address of your remote server -p <server_port> port number of your remote server -l <local_port> port number of your local server -k <password> password of your remote server [-m <encrypt_method>] encrypt method: table, rc4, rc4-md5, aes-128-cfb, aes-192-cfb, aes-256-cfb, bf-cfb, camellia-128-cfb, camellia-192-cfb, camellia-256-cfb, cast5-cfb, des-cfb, idea-cfb, rc2-cfb, seed-cfb, salsa20 ,chacha20 and chacha20-ietf [-f <pid_file>] the file path to store pid [-t <timeout>] socket timeout in seconds [-c <config_file>] the path to config file [-i <interface>] network interface to bind, not available in redir mode [-b <local_address>] local address to bind, not available in server mode [-u] enable udprelay mode, TPROXY is required in redir mode [-U] enable UDP relay and disable TCP relay, not available in local mode [-A] enable onetime authentication [-L <addr>:<port>] specify destination server address and port for local port forwarding, only available in tunnel mode [-d <addr>] setup name servers for internal DNS resolver, only available in server mode [--fast-open] enable TCP fast open, only available in local and server mode, with Linux kernel > 3.7.0 [--acl <acl_file>] config file of ACL (Access Control List) only available in local and server mode [--manager-address <addr>] UNIX domain socket address only available in server and manager mode [--executable <path>] path to the executable of ss-server only available in manager mode [-v] verbose mode notes: ss-redir provides a transparent proxy function and only works on the Linux platform with iptables. </code></pre> <h2><a id="user-content-advanced-usage" class="anchor" href="#advanced-usage" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Advanced usage</h2> <p>The latest shadowsocks-libev has provided a <em>redir</em> mode. You can configure your Linux-based box or router to proxy all TCP traffic transparently.</p> <pre><code># Create new chain root@Wrt:~# iptables -t nat -N SHADOWSOCKS root@Wrt:~# iptables -t mangle -N SHADOWSOCKS # Ignore your shadowsocks server's addresses # It's very IMPORTANT, just be careful. root@Wrt:~# iptables -t nat -A SHADOWSOCKS -d 123.123.123.123 -j RETURN # Ignore LANs and any other addresses you'd like to bypass the proxy # See Wikipedia and RFC5735 for full list of reserved networks. # See ashi009/bestroutetb for a highly optimized CHN route list. root@Wrt:~# iptables -t nat -A SHADOWSOCKS -d 0.0.0.0/8 -j RETURN root@Wrt:~# iptables -t nat -A SHADOWSOCKS -d 10.0.0.0/8 -j RETURN root@Wrt:~# iptables -t nat -A SHADOWSOCKS -d 127.0.0.0/8 -j RETURN root@Wrt:~# iptables -t nat -A SHADOWSOCKS -d 169.254.0.0/16 -j RETURN root@Wrt:~# iptables -t nat -A SHADOWSOCKS -d 172.16.0.0/12 -j RETURN root@Wrt:~# iptables -t nat -A SHADOWSOCKS -d 192.168.0.0/16 -j RETURN root@Wrt:~# iptables -t nat -A SHADOWSOCKS -d 224.0.0.0/4 -j RETURN root@Wrt:~# iptables -t nat -A SHADOWSOCKS -d 240.0.0.0/4 -j RETURN # Anything else should be redirected to shadowsocks's local port root@Wrt:~# iptables -t nat -A SHADOWSOCKS -p tcp -j REDIRECT --to-ports 12345 # Add any UDP rules root@Wrt:~# ip route add local default dev lo table 100 root@Wrt:~# ip rule add fwmark 1 lookup 100 root@Wrt:~# iptables -t mangle -A SHADOWSOCKS -p udp --dport 53 -j TPROXY --on-port 12345 --tproxy-mark 0x01/0x01 root@Wrt:~# iptables -t mangle -A SHADOWSOCKS_MARK -p udp --dport 53 -j MARK --set-mark 1 # Apply the rules root@Wrt:~# iptables -t nat -A OUTPUT -p tcp -j SHADOWSOCKS root@Wrt:~# iptables -t mangle -A PREROUTING -j SHADOWSOCKS root@Wrt:~# iptables -t mangle -A OUTPUT -j SHADOWSOCKS_MARK # Start the shadowsocks-redir root@Wrt:~# ss-redir -u -c /etc/config/shadowsocks.json -f /var/run/shadowsocks.pid </code></pre> <h2><a id="user-content-shadowsocks-over-kcp" class="anchor" href="#shadowsocks-over-kcp" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Shadowsocks over KCP</h2> <p>It's quite easy to use shadowsocks and <a href="https://github.com/skywind3000/kcp">KCP</a> together with <a href="https://github.com/xtaci/kcptun">kcptun</a>.</p> <p>The goal of shadowsocks over KCP is to provide a fully configurable, UDP based protocol to improve poor connections, e.g. a high packet loss 3G network.</p> <h3><a id="user-content-setup-your-server" class="anchor" href="#setup-your-server" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Setup your server</h3> <div class="highlight highlight-source-shell"><pre>server_linux_amd64 -l :21 -t 127.0.0.1:443 --crypt none --mtu 1200 --nocomp --mode normal --dscp 46 <span class="pl-k">&</span> ss-server -s 0.0.0.0 -p 443 -k passwd -m chacha20 -u</pre></div> <h3><a id="user-content-setup-your-client" class="anchor" href="#setup-your-client" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Setup your client</h3> <div class="highlight highlight-source-shell"><pre>client_linux_amd64 -l 127.0.0.1:1090 -r <span class="pl-k"><</span>server_ip<span class="pl-k">></span>:21 --crypt none --mtu 1200 --nocomp --mode normal --dscp 46 <span class="pl-k">&</span> ss-local -s 127.0.0.1 -p 1090 -k passwd -m chacha20 -l 1080 -b 0.0.0.0 <span class="pl-k">&</span> ss-local -s <span class="pl-k"><</span>server_ip<span class="pl-k">></span> -p 443 -k passwd -m chacha20 -l 1080 -U -b 0.0.0.0</pre></div> <h2><a id="user-content-security-tips" class="anchor" href="#security-tips" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Security Tips</h2> <p>Although shadowsocks-libev can handle thousands of concurrent connections nicely, we still recommend setting up your server's firewall rules to limit connections from each user:</p> <pre><code># Up to 32 connections are enough for normal usage iptables -A INPUT -p tcp --syn --dport ${SHADOWSOCKS_PORT} -m connlimit --connlimit-above 32 -j REJECT --reject-with tcp-reset </code></pre> <h2><a id="user-content-license" class="anchor" href="#license" aria-hidden="true"><svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>License</h2> <p>Copyright (C) 2016 Max Lv <a href="mailto:max.c.lv@gmail.com">max.c.lv@gmail.com</a></p> <p>This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.</p> <p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.</p> <p>You should have received a copy of the GNU General Public License along with this program. If not, see <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p> </article> </div> </div> <div class="modal-backdrop js-touch-events"></div> </div> </div> </div> </div> <div class="container site-footer-container"> <div class="site-footer" role="contentinfo"> <ul class="site-footer-links float-right"> <li><a href="https://github.com/contact" data-ga-click="Footer, go to contact, text:contact">Contact GitHub</a></li> <li><a href="https://developer.github.com" data-ga-click="Footer, go to api, text:api">API</a></li> <li><a href="https://training.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li> <li><a href="https://shop.github.com" data-ga-click="Footer, go to shop, text:shop">Shop</a></li> <li><a href="https://github.com/blog" data-ga-click="Footer, go to blog, text:blog">Blog</a></li> <li><a href="https://github.com/about" data-ga-click="Footer, go to about, text:about">About</a></li> </ul> <a href="https://github.com" aria-label="Homepage" class="site-footer-mark" title="GitHub"> <svg aria-hidden="true" class="octicon octicon-mark-github" height="24" version="1.1" viewBox="0 0 16 16" width="24"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path></svg> </a> <ul class="site-footer-links"> <li>© 2016 <span title="0.08238s from github-fe-3d613a9.cp1-iad.github.net">GitHub</span>, Inc.</li> <li><a href="https://github.com/site/terms" data-ga-click="Footer, go to terms, text:terms">Terms</a></li> <li><a href="https://github.com/site/privacy" data-ga-click="Footer, go to privacy, text:privacy">Privacy</a></li> <li><a href="https://github.com/security" data-ga-click="Footer, go to security, text:security">Security</a></li> <li><a href="https://status.github.com/" data-ga-click="Footer, go to status, text:status">Status</a></li> <li><a href="https://help.github.com" data-ga-click="Footer, go to help, text:help">Help</a></li> </ul> </div> </div> <div id="ajax-error-message" class="ajax-error-message flash flash-error"> <svg aria-hidden="true" class="octicon octicon-alert" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M8.865 1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1 .19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865 1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z"></path></svg> <button type="button" class="flash-close js-flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> <svg aria-hidden="true" class="octicon octicon-x" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"></path></svg> </button> You can't perform that action at this time. </div> <script crossorigin="anonymous" src="https://assets-cdn.github.com/assets/compat-b0b0b25ee9d2006d34d1d60b768e86802646c4f3f003707cdbc3a60b67115f5f.js"></script> <script crossorigin="anonymous" src="https://assets-cdn.github.com/assets/frameworks-411d610e4b2b1ffa3d063904534406d08c8351d9ba9b4b3f339bab35e86bb4f3.js"></script> <script async="async" crossorigin="anonymous" src="https://assets-cdn.github.com/assets/github-990e9a12dab096ead6a4bf76d455d031ee532266755bb50c068c2d7962715e9c.js"></script> <div class="js-stale-session-flash stale-session-flash flash flash-warn flash-banner d-none"> <svg aria-hidden="true" class="octicon octicon-alert" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path d="M8.865 1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1 .19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865 1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z"></path></svg> <span class="signed-in-tab-flash">You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span> <span class="signed-out-tab-flash">You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span> </div> <div class="facebox" id="facebox" style="display:none;"> <div class="facebox-popup"> <div class="facebox-content" role="dialog" aria-labelledby="facebox-header" aria-describedby="facebox-description"> </div> <button type="button" class="facebox-close js-facebox-close" aria-label="Close modal"> <svg aria-hidden="true" class="octicon octicon-x" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"></path></svg> </button> </div> </div> </body> </html>
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor