mirror of
https://github.com/irungentoo/toxcore.git
synced 2024-03-22 13:30:51 +08:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
cf8a090cde
10
.travis.yml
10
.travis.yml
|
@ -15,6 +15,14 @@ before_script:
|
|||
- cd ..
|
||||
#installing yasm, needed for compiling vpx
|
||||
- sudo apt-get install yasm > /dev/null
|
||||
#installing libconfig, needed for DHT_bootstrap_daemon
|
||||
- wget http://www.hyperrealm.com/libconfig/libconfig-1.4.9.tar.gz > /dev/null
|
||||
- tar -xvzf libconfig-1.4.9.tar.gz > /dev/null
|
||||
- cd libconfig-1.4.9
|
||||
- ./configure > /dev/null
|
||||
- make -j3 > /dev/null
|
||||
- sudo make install > /dev/null
|
||||
- cd ..
|
||||
#installing libopus, needed for audio encoding/decoding
|
||||
- wget http://downloads.xiph.org/releases/opus/opus-1.0.3.tar.gz > /dev/null
|
||||
- tar xzf opus-1.0.3.tar.gz > /dev/null
|
||||
|
@ -37,7 +45,7 @@ before_script:
|
|||
|
||||
script:
|
||||
- autoreconf -i
|
||||
- CFLAGS=-Ofast ./configure
|
||||
- CFLAGS=-Ofast ./configure --enable-daemon --enable-ntox
|
||||
- make -j3
|
||||
- make check
|
||||
- make dist
|
||||
|
|
|
@ -49,8 +49,6 @@ On FreeBSD 10+:
|
|||
pkg install automake autoconf
|
||||
```
|
||||
|
||||
Note that `libconfig-dev` should be >= 1.4.
|
||||
|
||||
You should get and install [libsodium](https://github.com/jedisct1/libsodium):
|
||||
```bash
|
||||
git clone git://github.com/jedisct1/libsodium.git
|
||||
|
@ -112,7 +110,7 @@ brew install --HEAD libtoxcore
|
|||
|
||||
To do it manually:
|
||||
```
|
||||
brew install libtool automake autoconf libconfig libsodium check
|
||||
brew install libtool automake autoconf libsodium check
|
||||
```
|
||||
Then clone this repo and generate makefile:
|
||||
```bash
|
||||
|
@ -234,7 +232,7 @@ While [Toxic](https://github.com/tox/toxic) is no longer in core, a list of Tox
|
|||
- --disable-av disable A/V support (default: auto) see: [libtoxav](#libtoxav)
|
||||
- --enable-phone build phone (default: no) see: [Test phone](#phone)
|
||||
- --enable-ntox build nTox client (default: no) see: [nTox](#ntox)
|
||||
- --enable-daemon build DHT bootstrap daemon (default: no) see: [Bootstrap daemon](#bootstrapd)
|
||||
- --enable-daemon build DHT bootstrap daemon (default=no) see: [Bootstrap daemon](#bootstrapd)
|
||||
- --enable-shared[=PKGS] build shared libraries [default=yes]
|
||||
- --enable-static[=PKGS] build static libraries [default=yes]
|
||||
|
||||
|
@ -335,7 +333,7 @@ Daemon is disabled by default. You can enable it by adding --enable-daemon argum
|
|||
```bash
|
||||
./configure --enable-daemon
|
||||
```
|
||||
There is one dependency required for bootstrap daemon: libconfig.
|
||||
There is one dependency required for bootstrap daemon: `libconfig-dev` >= 1.4.
|
||||
|
||||
Install on fedora:
|
||||
```bash
|
||||
|
@ -354,6 +352,7 @@ brew install libconfig
|
|||
OS X non-homebrew:
|
||||
Grab the following [package] (http://www.hyperrealm.com/libconfig/), uncompress and install
|
||||
|
||||
See this [readme](other\bootstrap_daemon\README.md) on how to set up the bootstrap daemon.
|
||||
|
||||
|
||||
<a name="ntox" />
|
||||
|
|
|
@ -62,6 +62,51 @@ void print_typingchange(Tox *m, int friendnumber, int typing, void *userdata)
|
|||
typing_changes = 2;
|
||||
}
|
||||
|
||||
uint8_t filenum;
|
||||
uint32_t file_accepted;
|
||||
uint64_t file_size;
|
||||
void file_request_accept(Tox *m, int friendnumber, uint8_t filenumber, uint64_t filesize, uint8_t *filename,
|
||||
uint16_t filename_length, void *userdata)
|
||||
{
|
||||
if (*((uint32_t *)userdata) != 974536)
|
||||
return;
|
||||
|
||||
if (filename_length == sizeof("Gentoo.exe") && memcmp(filename, "Gentoo.exe", sizeof("Gentoo.exe")) == 0)
|
||||
++file_accepted;
|
||||
|
||||
file_size = filesize;
|
||||
tox_file_send_control(m, friendnumber, 1, filenumber, TOX_FILECONTROL_ACCEPT, NULL, 0);
|
||||
}
|
||||
|
||||
uint32_t file_sent;
|
||||
uint32_t sendf_ok;
|
||||
void file_print_control(Tox *m, int friendnumber, uint8_t send_recieve, uint8_t filenumber, uint8_t control_type,
|
||||
uint8_t *data, uint16_t length, void *userdata)
|
||||
{
|
||||
if (*((uint32_t *)userdata) != 974536)
|
||||
return;
|
||||
|
||||
if (send_recieve == 0 && control_type == TOX_FILECONTROL_FINISHED)
|
||||
file_sent = 1;
|
||||
|
||||
if (send_recieve == 1 && control_type == TOX_FILECONTROL_ACCEPT)
|
||||
sendf_ok = 1;
|
||||
|
||||
}
|
||||
|
||||
uint64_t size_recv;
|
||||
void write_file(Tox *m, int friendnumber, uint8_t filenumber, uint8_t *data, uint16_t length, void *userdata)
|
||||
{
|
||||
if (*((uint32_t *)userdata) != 974536)
|
||||
return;
|
||||
|
||||
uint8_t *f_data = malloc(length);
|
||||
memset(f_data, 6, length);
|
||||
|
||||
if (memcmp(f_data, data, length) == 0)
|
||||
size_recv += length;
|
||||
}
|
||||
|
||||
START_TEST(test_few_clients)
|
||||
{
|
||||
long long unsigned int cur_time = time(NULL);
|
||||
|
@ -168,6 +213,44 @@ START_TEST(test_few_clients)
|
|||
}
|
||||
|
||||
ck_assert_msg(tox_get_is_typing(tox2, 0) == 0, "Typing fail");
|
||||
|
||||
filenum = file_accepted = file_size = file_sent = sendf_ok = size_recv = 0;
|
||||
long long unsigned int f_time = time(NULL);
|
||||
tox_callback_file_data(tox3, write_file, &to_compare);
|
||||
tox_callback_file_control(tox2, file_print_control, &to_compare);
|
||||
tox_callback_file_control(tox3, file_print_control, &to_compare);
|
||||
tox_callback_file_send_request(tox3, file_request_accept, &to_compare);
|
||||
uint64_t totalf_size = 100 * 1024 * 1024;
|
||||
int fnum = tox_new_file_sender(tox2, 0, totalf_size, (uint8_t *)"Gentoo.exe", sizeof("Gentoo.exe"));
|
||||
ck_assert_msg(fnum != -1, "tox_new_file_sender fail");
|
||||
int fpiece_size = tox_file_data_size(tox2, 0);
|
||||
uint8_t *f_data = malloc(fpiece_size);
|
||||
memset(f_data, 6, fpiece_size);
|
||||
|
||||
while (1) {
|
||||
file_sent = 0;
|
||||
tox_do(tox1);
|
||||
tox_do(tox2);
|
||||
tox_do(tox3);
|
||||
|
||||
if (sendf_ok)
|
||||
while (tox_file_send_data(tox2, 0, fnum, f_data, fpiece_size < totalf_size ? fpiece_size : totalf_size) == 0) {
|
||||
if (totalf_size <= fpiece_size) {
|
||||
sendf_ok = 0;
|
||||
tox_file_send_control(tox2, 0, 0, fnum, TOX_FILECONTROL_FINISHED, NULL, 0);
|
||||
}
|
||||
|
||||
totalf_size -= fpiece_size;
|
||||
}
|
||||
|
||||
if (file_sent && size_recv == file_size)
|
||||
break;
|
||||
|
||||
c_sleep(10);
|
||||
}
|
||||
|
||||
printf("100MB file sent in %llu seconds\n", time(NULL) - f_time);
|
||||
|
||||
printf("test_few_clients succeeded, took %llu seconds\n", time(NULL) - cur_time);
|
||||
}
|
||||
END_TEST
|
||||
|
@ -244,7 +327,7 @@ Suite *tox_suite(void)
|
|||
{
|
||||
Suite *s = suite_create("Tox");
|
||||
|
||||
DEFTESTCASE_SLOW(few_clients, 30);
|
||||
DEFTESTCASE_SLOW(few_clients, 50);
|
||||
DEFTESTCASE_SLOW(many_clients, 240);
|
||||
return s;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
|
||||
/* DHT boostrap
|
||||
*
|
||||
* A simple DHT boostrap server for tox.
|
||||
* A simple DHT boostrap node for tox.
|
||||
*
|
||||
* Copyright (C) 2013 Tox project All Rights Reserved.
|
||||
*
|
||||
|
@ -33,8 +33,8 @@
|
|||
|
||||
#include "../testing/misc_tools.c"
|
||||
|
||||
#ifdef DHT_SERVER_EXTRA_PACKETS
|
||||
#include "./bootstrap_server_packets.c"
|
||||
#ifdef DHT_NODE_EXTRA_PACKETS
|
||||
#include "./bootstrap_node_packets.c"
|
||||
|
||||
#define DHT_VERSION_NUMBER 1
|
||||
#define DHT_MOTD "This is a test motd"
|
||||
|
@ -111,7 +111,7 @@ int main(int argc, char *argv[])
|
|||
Onion *onion = new_onion(dht);
|
||||
Onion_Announce *onion_a = new_onion_announce(dht);
|
||||
|
||||
#ifdef DHT_SERVER_EXTRA_PACKETS
|
||||
#ifdef DHT_NODE_EXTRA_PACKETS
|
||||
bootstrap_set_callbacks(dht->net, DHT_VERSION_NUMBER, DHT_MOTD, sizeof(DHT_MOTD));
|
||||
#endif
|
||||
|
||||
|
@ -123,7 +123,7 @@ int main(int argc, char *argv[])
|
|||
perror("Initialization");
|
||||
|
||||
manage_keys(dht);
|
||||
/* We want our DHT public key to be the same as our internal one since this is a bootstrap server */
|
||||
/* We want our DHT public key to be the same as our internal one since this is a bootstrap node */
|
||||
memcpy(dht->self_public_key, dht->c->self_public_key, crypto_box_PUBLICKEYBYTES);
|
||||
memcpy(dht->self_secret_key, dht->c->self_secret_key, crypto_box_SECRETKEYBYTES);
|
||||
printf("Public key: ");
|
||||
|
@ -166,7 +166,7 @@ int main(int argc, char *argv[])
|
|||
|
||||
while (1) {
|
||||
if (is_waiting_for_dht_connection && DHT_isconnected(dht)) {
|
||||
printf("Connected to other bootstrap server successfully.\n");
|
||||
printf("Connected to other bootstrap node successfully.\n");
|
||||
is_waiting_for_dht_connection = 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
As maintaining 2 seperate lists of the same information seemed redundant, this list has been phased out.
|
||||
|
||||
For a current DHT server list please visit http://wiki.tox.im/Servers
|
||||
For a current DHT node list please visit http://wiki.tox.im/nodes
|
|
@ -15,5 +15,5 @@ DHT_bootstrap_LDADD = $(LIBSODIUM_LDFLAGS) \
|
|||
$(NACL_LIBS) \
|
||||
$(WINSOCK2_LIBS)
|
||||
|
||||
EXTRA_DIST += $(top_srcdir)/other/DHTservers \
|
||||
EXTRA_DIST += $(top_srcdir)/other/DHTnodes \
|
||||
$(top_srcdir)/other/tox.png
|
||||
|
|
|
@ -3,10 +3,10 @@ if BUILD_DHT_BOOTSTRAP_DAEMON
|
|||
noinst_PROGRAMS += tox_bootstrap_daemon
|
||||
|
||||
tox_bootstrap_daemon_SOURCES = \
|
||||
../other/bootstrap_serverdaemon/tox_bootstrap_daemon.c
|
||||
../other/bootstrap_daemon/tox_bootstrap_daemon.c
|
||||
|
||||
tox_bootstrap_daemon_CFLAGS = \
|
||||
-I$(top_srcdir)/other/bootstrap_serverdaemon \
|
||||
-I$(top_srcdir)/other/bootstrap_daemon \
|
||||
$(LIBSODIUM_CFLAGS) \
|
||||
$(NACL_CFLAGS) \
|
||||
$(LIBCONFIG_CFLAGS)
|
||||
|
@ -22,6 +22,6 @@ tox_bootstrap_daemon_LDADD = \
|
|||
endif
|
||||
|
||||
EXTRA_DIST += \
|
||||
$(top_srcdir)/other/bootstrap_serverdaemon/conf \
|
||||
$(top_srcdir)/other/bootstrap_serverdaemon/tox_bootstrap_daemon.sh
|
||||
$(top_srcdir)/other/bootstrap_daemon/conf \
|
||||
$(top_srcdir)/other/bootstrap_daemon/tox_bootstrap_daemon.sh
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
// ProjectTox dht bootstrap server daemon configuration file.
|
||||
// ProjectTox dht bootstrap node daemon configuration file.
|
||||
|
||||
// Listening port.
|
||||
port = 33445
|
||||
|
@ -20,20 +20,21 @@ enable_ipv6 = false
|
|||
// Automatically bootstrap with nodes on local area network.
|
||||
enable_lan_discovery = true
|
||||
|
||||
// Any number of servers the daemon will bootstrap itself from.
|
||||
// Remember to replace the provided example with your own server list.
|
||||
// You may leave the list empty or remove "bootstrap_servers" complitely,
|
||||
// Any number of nodes the daemon will bootstrap itself from.
|
||||
// Remember to replace the provided example with your own node list.
|
||||
// There is a maintained list of bootstrap nodes on Tox's wiki, if you need it.
|
||||
// You may leave the list empty or remove "bootstrap_nodes" complitely,
|
||||
// in both cases this will be interpreted as if you don't want to bootstrap
|
||||
// from anyone.
|
||||
bootstrap_servers = (
|
||||
{ // Server 1
|
||||
bootstrap_nodes = (
|
||||
{ // Node 1
|
||||
// Any ipv4 or ipv6, depending if `enable_ipv6` is set or not, and also
|
||||
// any US-ASCII domain name.
|
||||
address = "198.46.136.167"
|
||||
port = 33445
|
||||
public_key = "728925473812C7AAC482BE7250BCCAD0B8CB9F737BF3D42ABD34459C1768F854"
|
||||
},
|
||||
{ // Server 2
|
||||
{ // Node 2
|
||||
address = "example.org"
|
||||
port = 33445
|
||||
public_key = "8CD5A9BF0A6CE358BA36F7A653F99FA6B258FF756E490F52C1F98CC420F78858"
|
|
@ -1,6 +1,6 @@
|
|||
/* tox_bootstrap_daemon.c
|
||||
*
|
||||
* Tox DHT bootstrap server daemon.
|
||||
* Tox DHT bootstrap node daemon.
|
||||
*
|
||||
* Copyright (C) 2014 Tox project All Rights Reserved.
|
||||
*
|
||||
|
@ -92,7 +92,7 @@ int manage_keys(DHT *dht, char *keys_file_path)
|
|||
|
||||
fclose(keys_file);
|
||||
|
||||
// We want our DHT public key to be the same as our internal one since this is a bootstrap server
|
||||
// We want our DHT public key to be the same as our internal one since this is a bootstrap node
|
||||
memcpy(dht->self_public_key, dht->c->self_public_key, crypto_box_PUBLICKEYBYTES);
|
||||
memcpy(dht->self_secret_key, dht->c->self_secret_key, crypto_box_SECRETKEYBYTES);
|
||||
|
||||
|
@ -184,14 +184,14 @@ int get_general_config(char *cfg_file_path, char **pid_file_path, char **keys_fi
|
|||
return 1;
|
||||
}
|
||||
|
||||
// Bootstraps servers listed in the config file
|
||||
// Bootstraps nodes listed in the config file
|
||||
//
|
||||
// returns 1 on success, some or no bootstrap servers were added
|
||||
// returns 1 on success, some or no bootstrap nodes were added
|
||||
// 0 on failure, a error accured while parsing config file
|
||||
|
||||
int bootstrap_from_config(char *cfg_file_path, DHT *dht, int enable_ipv6)
|
||||
{
|
||||
const char *NAME_BOOTSTRAP_SERVERS = "bootstrap_servers";
|
||||
const char *NAME_BOOTSTRAP_NODES = "bootstrap_nodes";
|
||||
|
||||
const char *NAME_PUBLIC_KEY = "public_key";
|
||||
const char *NAME_PORT = "port";
|
||||
|
@ -207,16 +207,16 @@ int bootstrap_from_config(char *cfg_file_path, DHT *dht, int enable_ipv6)
|
|||
return 0;
|
||||
}
|
||||
|
||||
config_setting_t *server_list = config_lookup(&cfg, NAME_BOOTSTRAP_SERVERS);
|
||||
config_setting_t *node_list = config_lookup(&cfg, NAME_BOOTSTRAP_NODES);
|
||||
|
||||
if (server_list == NULL) {
|
||||
syslog(LOG_WARNING, "No '%s' setting in the configuration file. Skipping bootstrapping.\n", NAME_BOOTSTRAP_SERVERS);
|
||||
if (node_list == NULL) {
|
||||
syslog(LOG_WARNING, "No '%s' setting in the configuration file. Skipping bootstrapping.\n", NAME_BOOTSTRAP_NODES);
|
||||
config_destroy(&cfg);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (config_setting_length(server_list) == 0) {
|
||||
syslog(LOG_WARNING, "No bootstrap servers found. Skipping bootstrapping.\n");
|
||||
if (config_setting_length(node_list) == 0) {
|
||||
syslog(LOG_WARNING, "No bootstrap nodes found. Skipping bootstrapping.\n");
|
||||
config_destroy(&cfg);
|
||||
return 1;
|
||||
}
|
||||
|
@ -225,45 +225,45 @@ int bootstrap_from_config(char *cfg_file_path, DHT *dht, int enable_ipv6)
|
|||
const char *bs_address;
|
||||
const char *bs_public_key;
|
||||
|
||||
config_setting_t *server;
|
||||
config_setting_t *node;
|
||||
|
||||
int i = 0;
|
||||
|
||||
while (config_setting_length(server_list)) {
|
||||
while (config_setting_length(node_list)) {
|
||||
|
||||
server = config_setting_get_elem(server_list, 0);
|
||||
node = config_setting_get_elem(node_list, 0);
|
||||
|
||||
if (server == NULL) {
|
||||
if (node == NULL) {
|
||||
config_destroy(&cfg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Check that all settings are present
|
||||
if (config_setting_lookup_string(server, NAME_PUBLIC_KEY, &bs_public_key) == CONFIG_FALSE) {
|
||||
syslog(LOG_WARNING, "Bootstrap server #%d: Couldn't find '%s' setting. Skipping the server.\n", i, NAME_PUBLIC_KEY);
|
||||
if (config_setting_lookup_string(node, NAME_PUBLIC_KEY, &bs_public_key) == CONFIG_FALSE) {
|
||||
syslog(LOG_WARNING, "Bootstrap node #%d: Couldn't find '%s' setting. Skipping the node.\n", i, NAME_PUBLIC_KEY);
|
||||
goto next;
|
||||
}
|
||||
|
||||
if (config_setting_lookup_int(server, NAME_PORT, &bs_port) == CONFIG_FALSE) {
|
||||
syslog(LOG_WARNING, "Bootstrap server #%d: Couldn't find '%s' setting. Skipping the server.\n", i, NAME_PORT);
|
||||
if (config_setting_lookup_int(node, NAME_PORT, &bs_port) == CONFIG_FALSE) {
|
||||
syslog(LOG_WARNING, "Bootstrap node #%d: Couldn't find '%s' setting. Skipping the node.\n", i, NAME_PORT);
|
||||
goto next;
|
||||
}
|
||||
|
||||
if (config_setting_lookup_string(server, NAME_ADDRESS, &bs_address) == CONFIG_FALSE) {
|
||||
syslog(LOG_WARNING, "Bootstrap server #%d: Couldn't find '%s' setting. Skipping the server.\n", i, NAME_ADDRESS);
|
||||
if (config_setting_lookup_string(node, NAME_ADDRESS, &bs_address) == CONFIG_FALSE) {
|
||||
syslog(LOG_WARNING, "Bootstrap node #%d: Couldn't find '%s' setting. Skipping the node.\n", i, NAME_ADDRESS);
|
||||
goto next;
|
||||
}
|
||||
|
||||
// Process settings
|
||||
if (strlen(bs_public_key) != 64) {
|
||||
syslog(LOG_WARNING, "Bootstrap server #%d: Invalid '%s': %s. Skipping the server.\n", i, NAME_PUBLIC_KEY,
|
||||
syslog(LOG_WARNING, "Bootstrap node #%d: Invalid '%s': %s. Skipping the node.\n", i, NAME_PUBLIC_KEY,
|
||||
bs_public_key);
|
||||
goto next;
|
||||
}
|
||||
|
||||
// not (1 <= port <= 65535)
|
||||
if (bs_port < 1 || bs_port > 65535) {
|
||||
syslog(LOG_WARNING, "Bootstrap server #%d: Invalid '%s': %d. Skipping the server.\n", i, NAME_PORT, bs_port);
|
||||
syslog(LOG_WARNING, "Bootstrap node #%d: Invalid '%s': %d. Skipping the node.\n", i, NAME_PORT, bs_port);
|
||||
goto next;
|
||||
}
|
||||
|
||||
|
@ -273,17 +273,17 @@ int bootstrap_from_config(char *cfg_file_path, DHT *dht, int enable_ipv6)
|
|||
free(bs_public_key_bin);
|
||||
|
||||
if (!address_resolved) {
|
||||
syslog(LOG_WARNING, "Bootstrap server #%d: Invalid '%s': %s. Skipping the server.\n", i, NAME_ADDRESS, bs_address);
|
||||
syslog(LOG_WARNING, "Bootstrap node #%d: Invalid '%s': %s. Skipping the node.\n", i, NAME_ADDRESS, bs_address);
|
||||
goto next;
|
||||
}
|
||||
|
||||
syslog(LOG_DEBUG, "Successfully added bootstrap server #%d: %s:%d %s\n", i, bs_address, bs_port, bs_public_key);
|
||||
syslog(LOG_DEBUG, "Successfully added bootstrap node #%d: %s:%d %s\n", i, bs_address, bs_port, bs_public_key);
|
||||
|
||||
next:
|
||||
// config_setting_lookup_string() allocates string inside and doesn't allow us to free it
|
||||
// so in order to reuse `bs_public_key` and `bs_address` we have to remove the element
|
||||
// which will cause libconfig to free allocated strings
|
||||
config_setting_remove_elem(server_list, 0);
|
||||
config_setting_remove_elem(node_list, 0);
|
||||
i++;
|
||||
}
|
||||
|
||||
|
@ -378,9 +378,9 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
|
||||
if (bootstrap_from_config(cfg_file_path, dht, enable_ipv6)) {
|
||||
syslog(LOG_DEBUG, "List of bootstrap servers read successfully\n");
|
||||
syslog(LOG_DEBUG, "List of bootstrap nodes read successfully\n");
|
||||
} else {
|
||||
syslog(LOG_ERR, "Couldn't read list of bootstrap servers in %s. Exiting.\n", cfg_file_path);
|
||||
syslog(LOG_ERR, "Couldn't read list of bootstrap nodes in %s. Exiting.\n", cfg_file_path);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -449,7 +449,7 @@ int main(int argc, char *argv[])
|
|||
networking_poll(dht->net);
|
||||
|
||||
if (waiting_for_dht_connection && DHT_isconnected(dht)) {
|
||||
syslog(LOG_DEBUG, "Connected to other bootstrap server successfully.\n");
|
||||
syslog(LOG_DEBUG, "Connected to other bootstrap node successfully.\n");
|
||||
waiting_for_dht_connection = 0;
|
||||
}
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
/* bootstrap_server_packets.c
|
||||
/* bootstrap_node_packets.c
|
||||
*
|
||||
* Special bootstrap server only packets.
|
||||
* Special bootstrap node only packets.
|
||||
*
|
||||
* Include it in your bootstrap server and use: bootstrap_set_callbacks() to enable.
|
||||
* Include it in your bootstrap node and use: bootstrap_set_callbacks() to enable.
|
||||
*
|
||||
* Copyright (C) 2013 Tox project All Rights Reserved.
|
||||
*
|
|
@ -995,7 +995,7 @@ void print_help(char *prog_name)
|
|||
|
||||
puts("Options: (order IS relevant)");
|
||||
puts(" --ipv4 / --ipv6 [Optional] Support IPv4 only or IPv4 & IPv6.");
|
||||
puts(" IP PORT KEY [REQUIRED] A server to connect to (IP/Port) and its key.");
|
||||
puts(" IP PORT KEY [REQUIRED] A node to connect to (IP/Port) and its key.");
|
||||
puts(" -f keyfile [Optional] Specify a keyfile to read from and write to.");
|
||||
}
|
||||
|
||||
|
|
|
@ -149,7 +149,7 @@ typedef int sock_t;
|
|||
#define NET_PACKET_ONION_RECV_2 141
|
||||
#define NET_PACKET_ONION_RECV_1 142
|
||||
|
||||
/* Only used for bootstrap servers */
|
||||
/* Only used for bootstrap nodes */
|
||||
#define BOOTSTRAP_INFO_PACKET_ID 240
|
||||
|
||||
|
||||
|
|
|
@ -385,23 +385,19 @@ void tox_callback_status_message(Tox *tox, void (*function)(Messenger *tox, int,
|
|||
/* Set the callback for status type changes.
|
||||
* function(int friendnumber, USERSTATUS kind)
|
||||
*/
|
||||
void tox_callback_user_status(Tox *tox, void (*_function)(Tox *tox, int, TOX_USERSTATUS, void *), void *userdata)
|
||||
void tox_callback_user_status(Tox *tox, void (*function)(Messenger *tox, int, TOX_USERSTATUS, void *), void *userdata)
|
||||
{
|
||||
Messenger *m = tox;
|
||||
typedef void (*function_type)(Messenger *, int, USERSTATUS, void *);
|
||||
function_type function = (function_type)_function;
|
||||
m_callback_userstatus(m, function, userdata);
|
||||
}
|
||||
|
||||
/* Set the callback for typing changes.
|
||||
* function (int friendnumber, int is_typing)
|
||||
*/
|
||||
void tox_callback_typing_change(Tox *tox, void (*function)(Tox *tox, int, int, void *), void *userdata)
|
||||
void tox_callback_typing_change(Tox *tox, void (*function)(Messenger *tox, int, int, void *), void *userdata)
|
||||
{
|
||||
Messenger *m = tox;
|
||||
typedef void (*function_type)(Messenger *, int, int, void *);
|
||||
function_type function_new = (function_type)function;
|
||||
m_callback_typingchange(m, function_new, userdata);
|
||||
m_callback_typingchange(m, function, userdata);
|
||||
}
|
||||
|
||||
/* Set the callback for read receipts.
|
||||
|
|
Loading…
Reference in New Issue
Block a user