Commit 7cadfa66 authored by Max Lv's avatar Max Lv

update native binaries

parent 04d6bbaa
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.github.shadowsocks" package="com.github.shadowsocks"
android:installLocation="auto" android:installLocation="auto"
android:versionCode="16" android:versionCode="17"
android:versionName="1.3.4"> android:versionName="1.3.5">
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
......
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
#!/bin/bash
ndk-build
for app in ip6tables iptables obfsproxy pdnsd polipo redsocks shadowsocks
do
cp libs/armeabi/$app assets/arm/
cp libs/x86/$app assets/x86/
done
...@@ -29,14 +29,14 @@ static char *_server; ...@@ -29,14 +29,14 @@ static char *_server;
static char *_remote_port; static char *_remote_port;
static int _timeout; static int _timeout;
static int setnonblocking(int fd) { int setnonblocking(int fd) {
int flags; int flags;
if (-1 ==(flags = fcntl(fd, F_GETFL, 0))) if (-1 ==(flags = fcntl(fd, F_GETFL, 0)))
flags = 0; flags = 0;
return fcntl(fd, F_SETFL, flags | O_NONBLOCK); return fcntl(fd, F_SETFL, flags | O_NONBLOCK);
} }
static int create_and_bind(const char *port) { int create_and_bind(const char *port) {
struct addrinfo hints; struct addrinfo hints;
struct addrinfo *result, *rp; struct addrinfo *result, *rp;
int s, listen_sock; int s, listen_sock;
...@@ -83,7 +83,7 @@ static int create_and_bind(const char *port) { ...@@ -83,7 +83,7 @@ static int create_and_bind(const char *port) {
return listen_sock; return listen_sock;
} }
static void server_recv_cb (EV_P_ ev_io *w, int revents) { void server_recv_cb (EV_P_ ev_io *w, int revents) {
struct server_ctx *server_recv_ctx = (struct server_ctx *)w; struct server_ctx *server_recv_ctx = (struct server_ctx *)w;
struct server *server = server_recv_ctx->server; struct server *server = server_recv_ctx->server;
struct remote *remote = server->remote; struct remote *remote = server->remote;
...@@ -237,7 +237,7 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) { ...@@ -237,7 +237,7 @@ static void server_recv_cb (EV_P_ ev_io *w, int revents) {
} }
} }
static void server_send_cb (EV_P_ ev_io *w, int revents) { void server_send_cb (EV_P_ ev_io *w, int revents) {
struct server_ctx *server_send_ctx = (struct server_ctx *)w; struct server_ctx *server_send_ctx = (struct server_ctx *)w;
struct server *server = server_send_ctx->server; struct server *server = server_send_ctx->server;
struct remote *remote = server->remote; struct remote *remote = server->remote;
...@@ -284,7 +284,7 @@ static void server_send_cb (EV_P_ ev_io *w, int revents) { ...@@ -284,7 +284,7 @@ static void server_send_cb (EV_P_ ev_io *w, int revents) {
} }
static void remote_timeout_cb(EV_P_ ev_timer *watcher, int revents) { void remote_timeout_cb(EV_P_ ev_timer *watcher, int revents) {
struct remote_ctx *remote_ctx = (struct remote_ctx *) (((void*)watcher) struct remote_ctx *remote_ctx = (struct remote_ctx *) (((void*)watcher)
- sizeof(ev_io)); - sizeof(ev_io));
struct remote *remote = remote_ctx->remote; struct remote *remote = remote_ctx->remote;
...@@ -302,7 +302,7 @@ static void remote_timeout_cb(EV_P_ ev_timer *watcher, int revents) { ...@@ -302,7 +302,7 @@ static void remote_timeout_cb(EV_P_ ev_timer *watcher, int revents) {
close_and_free_server(EV_A_ server); close_and_free_server(EV_A_ server);
} }
static void remote_recv_cb (EV_P_ ev_io *w, int revents) { void remote_recv_cb (EV_P_ ev_io *w, int revents) {
struct remote_ctx *remote_recv_ctx = (struct remote_ctx *)w; struct remote_ctx *remote_recv_ctx = (struct remote_ctx *)w;
struct remote *remote = remote_recv_ctx->remote; struct remote *remote = remote_recv_ctx->remote;
struct server *server = remote->server; struct server *server = remote->server;
...@@ -362,7 +362,7 @@ static void remote_recv_cb (EV_P_ ev_io *w, int revents) { ...@@ -362,7 +362,7 @@ static void remote_recv_cb (EV_P_ ev_io *w, int revents) {
} }
} }
static void remote_send_cb (EV_P_ ev_io *w, int revents) { void remote_send_cb (EV_P_ ev_io *w, int revents) {
struct remote_ctx *remote_send_ctx = (struct remote_ctx *)w; struct remote_ctx *remote_send_ctx = (struct remote_ctx *)w;
struct remote *remote = remote_send_ctx->remote; struct remote *remote = remote_send_ctx->remote;
struct server *server = remote->server; struct server *server = remote->server;
...@@ -520,18 +520,16 @@ void close_and_free_server(EV_P_ struct server *server) { ...@@ -520,18 +520,16 @@ void close_and_free_server(EV_P_ struct server *server) {
} }
} }
static void accept_cb (EV_P_ ev_io *w, int revents) void accept_cb (EV_P_ ev_io *w, int revents) {
{
struct listen_ctx *listener = (struct listen_ctx *)w; struct listen_ctx *listener = (struct listen_ctx *)w;
int serverfd; int serverfd;
while (1) {
serverfd = accept(listener->fd, NULL, NULL); serverfd = accept(listener->fd, NULL, NULL);
if (serverfd < 0) { if (serverfd < 0) {
perror("accept"); perror("accept");
break; return;
} }
setnonblocking(serverfd); setnonblocking(serverfd);
struct server *server = new_server(serverfd);
struct addrinfo hints, *res; struct addrinfo hints, *res;
int sockfd; int sockfd;
memset(&hints, 0, sizeof hints); memset(&hints, 0, sizeof hints);
...@@ -540,17 +538,15 @@ static void accept_cb (EV_P_ ev_io *w, int revents) ...@@ -540,17 +538,15 @@ static void accept_cb (EV_P_ ev_io *w, int revents)
int err = getaddrinfo(_server, _remote_port, &hints, &res); int err = getaddrinfo(_server, _remote_port, &hints, &res);
if (err) { if (err) {
perror("getaddrinfo"); perror("getaddrinfo");
close_and_free_server(EV_A_ server); return;
break;
} }
sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol); sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (sockfd < 0) { if (sockfd < 0) {
perror("socket"); perror("socket");
close(sockfd); close(sockfd);
close_and_free_server(EV_A_ server);
freeaddrinfo(res); freeaddrinfo(res);
break; return;
} }
struct timeval timeout; struct timeval timeout;
...@@ -564,6 +560,7 @@ static void accept_cb (EV_P_ ev_io *w, int revents) ...@@ -564,6 +560,7 @@ static void accept_cb (EV_P_ ev_io *w, int revents)
if (err) perror("setsockopt"); if (err) perror("setsockopt");
setnonblocking(sockfd); setnonblocking(sockfd);
struct server *server = new_server(serverfd);
struct remote *remote = new_remote(sockfd); struct remote *remote = new_remote(sockfd);
server->remote = remote; server->remote = remote;
remote->server = server; remote->server = server;
...@@ -572,8 +569,6 @@ static void accept_cb (EV_P_ ev_io *w, int revents) ...@@ -572,8 +569,6 @@ static void accept_cb (EV_P_ ev_io *w, int revents)
// listen to remote connected event // listen to remote connected event
ev_io_start(EV_A_ &remote->send_ctx->io); ev_io_start(EV_A_ &remote->send_ctx->io);
ev_timer_start(EV_A_ &remote->send_ctx->watcher); ev_timer_start(EV_A_ &remote->send_ctx->watcher);
break;
}
} }
static void print_usage() { static void print_usage() {
......
No preview for this file type
No preview for this file type
No preview for this file type
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.github.shadowsocks</groupId> <groupId>com.github.shadowsocks</groupId>
<artifactId>shadowsocks</artifactId> <artifactId>shadowsocks</artifactId>
<version>1.3.4</version> <version>1.3.5</version>
<packaging>apk</packaging> <packaging>apk</packaging>
<name>Shadowsocks</name> <name>Shadowsocks</name>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment