1
0
mirror of https://github.com/Tha14/toxic.git synced 2024-11-26 22:13:26 +01:00

toxcore API update, add option to force TCP connection

This commit is contained in:
Jfreegman 2014-08-14 18:45:41 -04:00
parent 3f6fd734d3
commit edbdf2966a
No known key found for this signature in database
GPG Key ID: 3627F3144076AE63
2 changed files with 28 additions and 16 deletions

View File

@ -175,24 +175,28 @@ static void init_term(void)
refresh(); refresh();
} }
static Tox *init_tox(int ipv4) static Tox *init_tox(void)
{ {
/* Init core */ Tox_Options tox_opts;
int ipv6 = !ipv4; tox_opts.ipv6enabled = !arg_opts.use_ipv4;
Tox *m = tox_new(ipv6); tox_opts.udp_disabled = arg_opts.force_tcp;
tox_opts.proxy_enabled = 0;
/* /* Init core */
* TOX_ENABLE_IPV6_DEFAULT is always 1. Tox *m = tox_new(&tox_opts);
* Checking it is redundant, this *should* be doing ipv4 fallback
*/ if (tox_opts.ipv6enabled && m == NULL) {
if (ipv6 && m == NULL) { fprintf(stderr, "IPv6 failed to initialize. Trying IPv4\n");
fprintf(stderr, "IPv6 didn't initialize, trying IPv4\n"); tox_opts.ipv6enabled = 0;
m = tox_new(0); m = tox_new(&tox_opts);
} }
if (ipv4) if (!tox_opts.ipv6enabled)
fprintf(stderr, "Forcing IPv4 connection\n"); fprintf(stderr, "Forcing IPv4 connection\n");
if (tox_opts.udp_disabled)
fprintf(stderr, "UDP disabled\n");
if (m == NULL) if (m == NULL)
return NULL; return NULL;
@ -508,12 +512,13 @@ static void print_usage(void)
fprintf(stderr, "usage: toxic [OPTION] [FILE ...]\n"); fprintf(stderr, "usage: toxic [OPTION] [FILE ...]\n");
fprintf(stderr, " -4, --ipv4 Force IPv4 connection\n"); fprintf(stderr, " -4, --ipv4 Force IPv4 connection\n");
fprintf(stderr, " -c, --config Use specified config file\n"); fprintf(stderr, " -c, --config Use specified config file\n");
fprintf(stderr, " -d, --default_locale Use default locale\n"); fprintf(stderr, " -d, --default-locale Use default locale\n");
fprintf(stderr, " -f, --file Use specified data file\n"); fprintf(stderr, " -f, --file Use specified data file\n");
fprintf(stderr, " -h, --help Show this message and exit\n"); fprintf(stderr, " -h, --help Show this message and exit\n");
fprintf(stderr, " -n, --nodes Use specified DHTnodes file\n"); fprintf(stderr, " -n, --nodes Use specified DHTnodes file\n");
fprintf(stderr, " -o, --noconnect Do not connect to the DHT network\n"); fprintf(stderr, " -o, --noconnect Do not connect to the DHT network\n");
fprintf(stderr, " -r, --dnslist Use specified DNSservers file\n"); fprintf(stderr, " -r, --dnslist Use specified DNSservers file\n");
fprintf(stderr, " -t, --force-tcp Force the network to use TCP only\n");
fprintf(stderr, " -x, --nodata Ignore data file\n"); fprintf(stderr, " -x, --nodata Ignore data file\n");
} }
@ -524,6 +529,7 @@ static void set_default_opts(void)
arg_opts.default_locale = 0; arg_opts.default_locale = 0;
arg_opts.use_custom_data = 0; arg_opts.use_custom_data = 0;
arg_opts.no_connect = 0; arg_opts.no_connect = 0;
arg_opts.force_tcp = 0;
} }
static void parse_args(int argc, char *argv[]) static void parse_args(int argc, char *argv[])
@ -534,15 +540,16 @@ static void parse_args(int argc, char *argv[])
{"file", required_argument, 0, 'f'}, {"file", required_argument, 0, 'f'},
{"nodata", no_argument, 0, 'x'}, {"nodata", no_argument, 0, 'x'},
{"ipv4", no_argument, 0, '4'}, {"ipv4", no_argument, 0, '4'},
{"default_locale", no_argument, 0, 'd'}, {"default-locale", no_argument, 0, 'd'},
{"config", required_argument, 0, 'c'}, {"config", required_argument, 0, 'c'},
{"nodes", required_argument, 0, 'n'}, {"nodes", required_argument, 0, 'n'},
{"help", no_argument, 0, 'h'}, {"help", no_argument, 0, 'h'},
{"noconnect", no_argument, 0, 'o'}, {"noconnect", no_argument, 0, 'o'},
{"dnslist", required_argument, 0, 'r'}, {"dnslist", required_argument, 0, 'r'},
{"force-tcp", no_argument, 0, 't'},
}; };
const char *opts_str = "4dhoxc:f:n:r:"; const char *opts_str = "4dhotxc:f:n:r:";
int opt, indexptr; int opt, indexptr;
while ((opt = getopt_long(argc, argv, opts_str, long_opts, &indexptr)) != -1) { while ((opt = getopt_long(argc, argv, opts_str, long_opts, &indexptr)) != -1) {
@ -583,6 +590,10 @@ static void parse_args(int argc, char *argv[])
snprintf(arg_opts.dns_path, sizeof(arg_opts.dns_path), "%s", optarg); snprintf(arg_opts.dns_path, sizeof(arg_opts.dns_path), "%s", optarg);
break; break;
case 't':
arg_opts.force_tcp = 1;
break;
case 'x': case 'x':
arg_opts.ignore_data_file = 1; arg_opts.ignore_data_file = 1;
break; break;
@ -670,7 +681,7 @@ int main(int argc, char *argv[])
char *p = arg_opts.config_path[0] ? arg_opts.config_path : NULL; char *p = arg_opts.config_path[0] ? arg_opts.config_path : NULL;
int settings_err = settings_load(user_settings_, p); int settings_err = settings_load(user_settings_, p);
Tox *m = init_tox(arg_opts.use_ipv4); Tox *m = init_tox();
init_term(); init_term();
if (m == NULL) if (m == NULL)

View File

@ -74,6 +74,7 @@ struct _Winthread {
struct arg_opts { struct arg_opts {
int ignore_data_file; int ignore_data_file;
int use_ipv4; int use_ipv4;
int force_tcp;
int default_locale; int default_locale;
int use_custom_data; int use_custom_data;
int no_connect; int no_connect;