summaryrefslogtreecommitdiff
path: root/toxcore/TCP_server.c
diff options
context:
space:
mode:
authoriphydf <iphydf@users.noreply.github.com>2017-06-04 12:59:34 +0000
committeriphydf <iphydf@users.noreply.github.com>2017-06-04 17:48:23 +0000
commit1e8fa85aadf602bdca3a540de09a8184f7139a6c (patch)
tree4caab80957f7f9a2098fb97e776be763defc44ab /toxcore/TCP_server.c
parent03f99bde2ecee3722d47a5b6a1031fc88e7210b7 (diff)
Add a monolith_test that includes all toxcore sources.
This requires that every symbol, even if static (file-scope), is unique. The idea is that we can easily run "whole" program static analysis on programs that include monolith.h ("whole" is in quotes, as we don't include dependencies like libsodium in this static analysis).
Diffstat (limited to 'toxcore/TCP_server.c')
-rw-r--r--toxcore/TCP_server.c48
1 files changed, 24 insertions, 24 deletions
diff --git a/toxcore/TCP_server.c b/toxcore/TCP_server.c
index d2b08206..3f2e554f 100644
--- a/toxcore/TCP_server.c
+++ b/toxcore/TCP_server.c
@@ -45,9 +45,9 @@ struct TCP_Server {
45 45
46 uint8_t public_key[CRYPTO_PUBLIC_KEY_SIZE]; 46 uint8_t public_key[CRYPTO_PUBLIC_KEY_SIZE];
47 uint8_t secret_key[CRYPTO_SECRET_KEY_SIZE]; 47 uint8_t secret_key[CRYPTO_SECRET_KEY_SIZE];
48 TCP_Secure_Connection incomming_connection_queue[MAX_INCOMMING_CONNECTIONS]; 48 TCP_Secure_Connection incoming_connection_queue[MAX_INCOMING_CONNECTIONS];
49 uint16_t incomming_connection_queue_index; 49 uint16_t incoming_connection_queue_index;
50 TCP_Secure_Connection unconfirmed_connection_queue[MAX_INCOMMING_CONNECTIONS]; 50 TCP_Secure_Connection unconfirmed_connection_queue[MAX_INCOMING_CONNECTIONS];
51 uint16_t unconfirmed_connection_queue_index; 51 uint16_t unconfirmed_connection_queue_index;
52 52
53 TCP_Secure_Connection *accepted_connection_array; 53 TCP_Secure_Connection *accepted_connection_array;
@@ -477,7 +477,7 @@ static int write_packet_TCP_secure_connection(TCP_Secure_Connection *con, const
477 477
478/* Kill a TCP_Secure_Connection 478/* Kill a TCP_Secure_Connection
479 */ 479 */
480static void kill_TCP_connection(TCP_Secure_Connection *con) 480static void kill_TCP_secure_connection(TCP_Secure_Connection *con)
481{ 481{
482 kill_sock(con->sock); 482 kill_sock(con->sock);
483 crypto_memzero(con, sizeof(TCP_Secure_Connection)); 483 crypto_memzero(con, sizeof(TCP_Secure_Connection));
@@ -927,7 +927,7 @@ static int confirm_TCP_connection(TCP_Server *TCP_server, TCP_Secure_Connection
927 int index = add_accepted(TCP_server, con); 927 int index = add_accepted(TCP_server, con);
928 928
929 if (index == -1) { 929 if (index == -1) {
930 kill_TCP_connection(con); 930 kill_TCP_secure_connection(con);
931 return -1; 931 return -1;
932 } 932 }
933 933
@@ -960,19 +960,19 @@ static int accept_connection(TCP_Server *TCP_server, Socket sock)
960 return -1; 960 return -1;
961 } 961 }
962 962
963 uint16_t index = TCP_server->incomming_connection_queue_index % MAX_INCOMMING_CONNECTIONS; 963 uint16_t index = TCP_server->incoming_connection_queue_index % MAX_INCOMING_CONNECTIONS;
964 964
965 TCP_Secure_Connection *conn = &TCP_server->incomming_connection_queue[index]; 965 TCP_Secure_Connection *conn = &TCP_server->incoming_connection_queue[index];
966 966
967 if (conn->status != TCP_STATUS_NO_STATUS) { 967 if (conn->status != TCP_STATUS_NO_STATUS) {
968 kill_TCP_connection(conn); 968 kill_TCP_secure_connection(conn);
969 } 969 }
970 970
971 conn->status = TCP_STATUS_CONNECTED; 971 conn->status = TCP_STATUS_CONNECTED;
972 conn->sock = sock; 972 conn->sock = sock;
973 conn->next_packet_length = 0; 973 conn->next_packet_length = 0;
974 974
975 ++TCP_server->incomming_connection_queue_index; 975 ++TCP_server->incoming_connection_queue_index;
976 return index; 976 return index;
977} 977}
978 978
@@ -1107,21 +1107,21 @@ static void do_TCP_accept_new(TCP_Server *TCP_server)
1107 1107
1108static int do_incoming(TCP_Server *TCP_server, uint32_t i) 1108static int do_incoming(TCP_Server *TCP_server, uint32_t i)
1109{ 1109{
1110 if (TCP_server->incomming_connection_queue[i].status != TCP_STATUS_CONNECTED) { 1110 if (TCP_server->incoming_connection_queue[i].status != TCP_STATUS_CONNECTED) {
1111 return -1; 1111 return -1;
1112 } 1112 }
1113 1113
1114 int ret = read_connection_handshake(&TCP_server->incomming_connection_queue[i], TCP_server->secret_key); 1114 int ret = read_connection_handshake(&TCP_server->incoming_connection_queue[i], TCP_server->secret_key);
1115 1115
1116 if (ret == -1) { 1116 if (ret == -1) {
1117 kill_TCP_connection(&TCP_server->incomming_connection_queue[i]); 1117 kill_TCP_secure_connection(&TCP_server->incoming_connection_queue[i]);
1118 } else if (ret == 1) { 1118 } else if (ret == 1) {
1119 int index_new = TCP_server->unconfirmed_connection_queue_index % MAX_INCOMMING_CONNECTIONS; 1119 int index_new = TCP_server->unconfirmed_connection_queue_index % MAX_INCOMING_CONNECTIONS;
1120 TCP_Secure_Connection *conn_old = &TCP_server->incomming_connection_queue[i]; 1120 TCP_Secure_Connection *conn_old = &TCP_server->incoming_connection_queue[i];
1121 TCP_Secure_Connection *conn_new = &TCP_server->unconfirmed_connection_queue[index_new]; 1121 TCP_Secure_Connection *conn_new = &TCP_server->unconfirmed_connection_queue[index_new];
1122 1122
1123 if (conn_new->status != TCP_STATUS_NO_STATUS) { 1123 if (conn_new->status != TCP_STATUS_NO_STATUS) {
1124 kill_TCP_connection(conn_new); 1124 kill_TCP_secure_connection(conn_new);
1125 } 1125 }
1126 1126
1127 memcpy(conn_new, conn_old, sizeof(TCP_Secure_Connection)); 1127 memcpy(conn_new, conn_old, sizeof(TCP_Secure_Connection));
@@ -1151,7 +1151,7 @@ static int do_unconfirmed(TCP_Server *TCP_server, uint32_t i)
1151 } 1151 }
1152 1152
1153 if (len == -1) { 1153 if (len == -1) {
1154 kill_TCP_connection(conn); 1154 kill_TCP_secure_connection(conn);
1155 return -1; 1155 return -1;
1156 } 1156 }
1157 1157
@@ -1179,11 +1179,11 @@ static void do_confirmed_recv(TCP_Server *TCP_server, uint32_t i)
1179 } 1179 }
1180} 1180}
1181 1181
1182static void do_TCP_incomming(TCP_Server *TCP_server) 1182static void do_TCP_incoming(TCP_Server *TCP_server)
1183{ 1183{
1184 uint32_t i; 1184 uint32_t i;
1185 1185
1186 for (i = 0; i < MAX_INCOMMING_CONNECTIONS; ++i) { 1186 for (i = 0; i < MAX_INCOMING_CONNECTIONS; ++i) {
1187 do_incoming(TCP_server, i); 1187 do_incoming(TCP_server, i);
1188 } 1188 }
1189} 1189}
@@ -1192,7 +1192,7 @@ static void do_TCP_unconfirmed(TCP_Server *TCP_server)
1192{ 1192{
1193 uint32_t i; 1193 uint32_t i;
1194 1194
1195 for (i = 0; i < MAX_INCOMMING_CONNECTIONS; ++i) { 1195 for (i = 0; i < MAX_INCOMING_CONNECTIONS; ++i) {
1196 do_unconfirmed(TCP_server, i); 1196 do_unconfirmed(TCP_server, i);
1197 } 1197 }
1198} 1198}
@@ -1276,12 +1276,12 @@ static void do_TCP_epoll(TCP_Server *TCP_server)
1276 } 1276 }
1277 1277
1278 case TCP_SOCKET_INCOMING: { 1278 case TCP_SOCKET_INCOMING: {
1279 kill_TCP_connection(&TCP_server->incomming_connection_queue[index]); 1279 kill_TCP_secure_connection(&TCP_server->incoming_connection_queue[index]);
1280 break; 1280 break;
1281 } 1281 }
1282 1282
1283 case TCP_SOCKET_UNCONFIRMED: { 1283 case TCP_SOCKET_UNCONFIRMED: {
1284 kill_TCP_connection(&TCP_server->unconfirmed_connection_queue[index]); 1284 kill_TCP_secure_connection(&TCP_server->unconfirmed_connection_queue[index]);
1285 break; 1285 break;
1286 } 1286 }
1287 1287
@@ -1324,7 +1324,7 @@ static void do_TCP_epoll(TCP_Server *TCP_server)
1324 }; 1324 };
1325 1325
1326 if (epoll_ctl(TCP_server->efd, EPOLL_CTL_ADD, sock_new, &ev) == -1) { 1326 if (epoll_ctl(TCP_server->efd, EPOLL_CTL_ADD, sock_new, &ev) == -1) {
1327 kill_TCP_connection(&TCP_server->incomming_connection_queue[index_new]); 1327 kill_TCP_secure_connection(&TCP_server->incoming_connection_queue[index_new]);
1328 continue; 1328 continue;
1329 } 1329 }
1330 } 1330 }
@@ -1340,7 +1340,7 @@ static void do_TCP_epoll(TCP_Server *TCP_server)
1340 events[n].data.u64 = sock | ((uint64_t)TCP_SOCKET_UNCONFIRMED << 32) | ((uint64_t)index_new << 40); 1340 events[n].data.u64 = sock | ((uint64_t)TCP_SOCKET_UNCONFIRMED << 32) | ((uint64_t)index_new << 40);
1341 1341
1342 if (epoll_ctl(TCP_server->efd, EPOLL_CTL_MOD, sock, &events[n]) == -1) { 1342 if (epoll_ctl(TCP_server->efd, EPOLL_CTL_MOD, sock, &events[n]) == -1) {
1343 kill_TCP_connection(&TCP_server->unconfirmed_connection_queue[index_new]); 1343 kill_TCP_secure_connection(&TCP_server->unconfirmed_connection_queue[index_new]);
1344 break; 1344 break;
1345 } 1345 }
1346 } 1346 }
@@ -1386,7 +1386,7 @@ void do_TCP_server(TCP_Server *TCP_server)
1386 1386
1387#else 1387#else
1388 do_TCP_accept_new(TCP_server); 1388 do_TCP_accept_new(TCP_server);
1389 do_TCP_incomming(TCP_server); 1389 do_TCP_incoming(TCP_server);
1390 do_TCP_unconfirmed(TCP_server); 1390 do_TCP_unconfirmed(TCP_server);
1391#endif 1391#endif
1392 1392