From 3720eba58e717be73d57a62afea6076a59045f54 Mon Sep 17 00:00:00 2001 From: rlt3 Date: Thu, 1 Aug 2013 16:11:36 -0400 Subject: [PATCH] Trimming some things down and re styling comments --- core/Lossless_UDP.c | 78 ++++++++++++------ core/libcore.a | Bin 98440 -> 98488 bytes other/DHT_bootstrap | Bin 71100 -> 71100 bytes .../DHT_bootstrap_daemon | Bin 76336 -> 76336 bytes testing/DHT_test | Bin 70924 -> 70924 bytes testing/Lossless_UDP_testclient | Bin 33260 -> 33260 bytes testing/Lossless_UDP_testserver | Bin 33132 -> 33132 bytes testing/Messenger_test | Bin 85804 -> 85804 bytes testing/nTox | Bin 96028 -> 96028 bytes testing/toxic/toxic | Bin 106344 -> 106344 bytes 10 files changed, 52 insertions(+), 26 deletions(-) diff --git a/core/Lossless_UDP.c b/core/Lossless_UDP.c index 7a994724..1073d134 100644 --- a/core/Lossless_UDP.c +++ b/core/Lossless_UDP.c @@ -506,11 +506,16 @@ int send_DATA(uint32_t connection_id) return 0; } -/* END of packet sending functions */ +/* + * END of packet sending functions + * + * + * BEGIN Packet handling functions + * One to handle each type of packets we receive + */ -/* Packet handling functions - One to handle each type of packets we receive - return 0 if handled correctly, 1 if packet is bad. */ + +/* Return 0 if handled correctly, 1 if packet is bad. */ int handle_handshake(uint8_t * packet, uint32_t length, IP_Port source) { if (length != (1 + 4 + 4)) @@ -542,8 +547,7 @@ int handle_handshake(uint8_t * packet, uint32_t length, IP_Port source) } -/* returns 1 if sync packet is valid - 0 if not. */ +/* returns 1 if sync packet is valid 0 if not. */ int SYNC_valid(uint32_t length) { if (length < 4 + 4 + 2) @@ -554,19 +558,19 @@ int SYNC_valid(uint32_t length) return 1; } -/* case 1: */ +/* case 1 in handle_SYNC: */ int handle_SYNC1(IP_Port source, uint32_t recv_packetnum, uint32_t sent_packetnum) { if (handshake_id(source) == recv_packetnum) { int x = new_inconnection(source); if (x != -1) { - connections[x].orecv_packetnum = recv_packetnum; - connections[x].sent_packetnum = recv_packetnum; + connections[x].orecv_packetnum = recv_packetnum; + connections[x].sent_packetnum = recv_packetnum; connections[x].sendbuff_packetnum = recv_packetnum; - connections[x].successful_sent = recv_packetnum; - connections[x].osent_packetnum = sent_packetnum; - connections[x].recv_packetnum = sent_packetnum; - connections[x].successful_read = sent_packetnum; + connections[x].successful_sent = recv_packetnum; + connections[x].osent_packetnum = sent_packetnum; + connections[x].recv_packetnum = sent_packetnum; + connections[x].successful_read = sent_packetnum; return x; } @@ -574,7 +578,7 @@ int handle_SYNC1(IP_Port source, uint32_t recv_packetnum, uint32_t sent_packetnu return -1; } -/* case 2: */ +/* case 2 in handle_SYNC: */ int handle_SYNC2(int connection_id, uint8_t counter, uint32_t recv_packetnum, uint32_t sent_packetnum) { if (recv_packetnum == connections[connection_id].orecv_packetnum) { @@ -587,7 +591,7 @@ int handle_SYNC2(int connection_id, uint8_t counter, uint32_t recv_packetnum, ui } return 1; } -/* case 3: */ +/* case 3 in handle_SYNC: */ int handle_SYNC3(int connection_id, uint8_t counter, uint32_t recv_packetnum, uint32_t sent_packetnum, uint32_t * req_packets, uint16_t number) { @@ -597,17 +601,24 @@ int handle_SYNC3(int connection_id, uint8_t counter, uint32_t recv_packetnum, ui uint32_t comp_2 = (sent_packetnum - connections[connection_id].successful_read); */ uint32_t comp_1 = (recv_packetnum - connections[connection_id].orecv_packetnum); uint32_t comp_2 = (sent_packetnum - connections[connection_id].osent_packetnum); - if (comp_1 <= BUFFER_PACKET_NUM && comp_2 <= BUFFER_PACKET_NUM && comp_counter < 10 && comp_counter != 0) { /* packet valid */ + + /* packet valid */ + if (comp_1 <= BUFFER_PACKET_NUM && + comp_2 <= BUFFER_PACKET_NUM && + comp_counter < 10 && comp_counter != 0) { + connections[connection_id].orecv_packetnum = recv_packetnum; connections[connection_id].osent_packetnum = sent_packetnum; connections[connection_id].successful_sent = recv_packetnum; - connections[connection_id].last_recvSYNC = current_time(); - connections[connection_id].recv_counter = counter; + connections[connection_id].last_recvSYNC = current_time(); + connections[connection_id].recv_counter = counter; ++connections[connection_id].send_counter; + for (i = 0; i < number; ++i) { temp = ntohl(req_packets[i]); memcpy(connections[connection_id].req_packets + i, &temp, 4 * number); } + connections[connection_id].num_req_paquets = number; return 0; } @@ -631,14 +642,20 @@ int handle_SYNC(uint8_t *packet, uint32_t length, IP_Port source) recv_packetnum = ntohl(temp); memcpy(&temp,packet + 6, 4); sent_packetnum = ntohl(temp); + if (number != 0) memcpy(req_packets, packet + 10, 4 * number); + if (connection == -1) return handle_SYNC1(source, recv_packetnum, sent_packetnum); + if (connections[connection].status == 2) - return handle_SYNC2(connection, counter, recv_packetnum, sent_packetnum); + return handle_SYNC2(connection, counter, + recv_packetnum, sent_packetnum); + if (connections[connection].status == 3) - return handle_SYNC3(connection, counter, recv_packetnum, sent_packetnum, req_packets, number); + return handle_SYNC3(connection, counter, recv_packetnum, + sent_packetnum, req_packets, number); return 0; } @@ -654,13 +671,17 @@ int add_recv(int connection_id, uint32_t data_num, uint8_t *data, uint16_t size) uint32_t i; uint32_t maxnum = connections[connection_id].successful_read + BUFFER_PACKET_NUM; uint32_t sent_packet = data_num - connections[connection_id].osent_packetnum; + for (i = connections[connection_id].recv_packetnum; i != maxnum; ++i) { if (i == data_num) { memcpy(connections[connection_id].recvbuffer[i % MAX_QUEUE_NUM].data, data, size); + connections[connection_id].recvbuffer[i % MAX_QUEUE_NUM].size = size; connections[connection_id].last_recvdata = current_time(); + if (sent_packet < BUFFER_PACKET_NUM) connections[connection_id].osent_packetnum = data_num; + break; } } @@ -696,7 +717,10 @@ int handle_data(uint8_t *packet, uint32_t length, IP_Port source) return add_recv(connection, number, packet + 5, size); } -/* END of packet handling functions */ +/* + * END of packet handling functions + */ + int LosslessUDP_handlepacket(uint8_t *packet, uint32_t length, IP_Port source) { switch (packet[0]) { @@ -732,10 +756,13 @@ void doNew() } /* kill all timed out connections */ - if ( connections[i].status > 0 && (connections[i].last_recvSYNC + connections[i].timeout * 1000000UL) < temp_time && - connections[i].status != 4) - /* kill_connection(i); */ + if (connections[i].status > 0 && + (connections[i].last_recvSYNC + connections[i].timeout * 1000000UL) < temp_time && + connections[i].status != 4) { connections[i].status = 4; + /* kill_connection(i); */ + } + if (connections[i].status > 0 && connections[i].killat < temp_time) kill_connection(i); } @@ -794,8 +821,7 @@ void adjustRates() } } -/* Call this function a couple times per second - It's the main loop. */ +/* Call this function a couple times per second It's the main loop. */ void doLossless_UDP() { doNew(); diff --git a/core/libcore.a b/core/libcore.a index ae33627a17f98a597a3c0199fed5688df66a1552..f628ce3ca5486f813df10f40ff53f8c21f8428d2 100644 GIT binary patch delta 1800 zcmYjQZA_b06h5~UD4$KY0I~_RQ_~r@wS^a`&ShJ)^HsAi!*sZjjbvhG_GA3e;4&x; zAGRqqgX;oh#!O=32$v3U{XT#Hmfql!N74OkBEe%8qGXil#T=q5enpMI)4;b84_Jw|-XaPT zk++bj9~eUXBk(BrMm{h4<9tujrDzELF(U0&j%vB{I5f`y&jb5_D~j*xAR10{{g$c> z%CQ+py^9h*MfyDaH-HoH-$iNPqLc^Vy*Pgx`QIS_1NcXPW5B5#?p|i(Vu$pWFZJ;( zRv@qjEXvBvbTjY=2tNtF3Fqp-p90?rTt@!O;3o2#6i;6+d=-vnpyJNt<6J|f8^DPR zk^#PhJQw_@A$$(ljrc`iE%LsH-U4tn2%{u7^IAN>eZVH*SztRb2K)q=0FL6qDc~Ml zd>#A%xC4zmaTJag;7ue}AYoCs9?jYvlzH4kw2sS`54M1Q*WmAhNm}Q ze+H`Cz`sM;``{nO`Fh0XIDX=Jv*ASZsl=PspK|4ot4_RB_^`E7ET^;9>vKAt)n4A5 zKCidVFr3aB!)xeM9mgH_SWVVRR+qJ;=R0)sEmowRfs`5DxF*-&bq@& delta 1726 zcmZ8hZERCz6h3debz8@1Dxst9%R4olQQR19$3QYL7B3p`3k;Jj(1f^P_GA9gpkeD8 z)}~E2!+g~`H3p1{l1;O47uJxNbOh7J_+#(~Oi)3lGL1&iC`e2_r+w-V-`u>IEJIzJz$Fg6QVg zL=htDSV1%ij3WL%cnW+KpBMcZz9(TQdK>;}BJES|PPwxWnuEZ@z;WOW#dnPmO%=I* zK{ZF@*aDC1)B!Vv~4?o3`z9+ln! zPF#=-@MYu~@E?TmtH3eD-vkDbcL91!z}pcRtE)<1OFM8Iupc-C90pDRKLlF96S(j+ za0@Q}0(>X98;#t%2ae}~mypVMQ{{DUY1e>0Q0Ym#YB1WK?w zYfkLQz$sMz1YB*!{jwz+m>6U=< z>QA3*RYQ6z=2Hp1!26J1<~^_7ai8kY-MqKyaM4c2eKl?Wh;E^f)=%xN_wM4>JVa{^ z#(KuTxdeWiez&g2U5Z6iqQxjr=XLIIB~PZ@@q6G;>aB?uzC6r(n~w56tB>hb$xciH(1z{%-4hYVhfj_3$^-HuaAF_44t@Hga+* zHvU(k;5s#4d6Y3KzZ`OnIeE{;66|3uh&B(D=C^iTdb>xp td)Kp;gdL0$z9#)LKRG|?QJZUv)0;nUDF4cm>FiK*)g|-H2KDEo{{mq_s<{9F diff --git a/other/DHT_bootstrap b/other/DHT_bootstrap index b4a491c079c60e071fa8dad787c7dd0f3423d01b..9ace67e6a9fbb0e3fcb0443924b221537462910e 100755 GIT binary patch delta 6052 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
#+2kN|E;X| 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 diff --git a/other/bootstrap_serverdaemon/DHT_bootstrap_daemon b/other/bootstrap_serverdaemon/DHT_bootstrap_daemon index 0c100e60c00ac06b771b3a301dce4cae6ad00872..cfc449e83ced3c3f2040c4e848567cb94454502e 100755 GIT binary patch delta 7250 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 I$a%;A0W|K$W&i*H delta 7252 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 bX|3^~2l~c5d5Yl=^CW6wI+o>0uDJXkQj*@E diff --git a/testing/DHT_test b/testing/DHT_test index 2657a54c591d41ccca9c27e36e771c082120f75d..58ebee8242285d0b368bde2517825d941f2ae770 100755 GIT binary patch delta 6857 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 F=U;NiMmqoi diff --git a/testing/Lossless_UDP_testclient b/testing/Lossless_UDP_testclient index c2bcffb657fbea8a663a01c231d871970e664d7a..ec8d0886dfd6277ac7b63efdcf325f16d226ed2a 100755 GIT binary patch delta 1650 zcmZ8geN0nV6uZg+HDPiNsak&TX4bcmFu|p7Z;i zuY1oO>k`Jggz(TyS~ek+5OTX51uiYS@80hzmdyGSM!(Z-4y8Zb`u>XfVHh&@8sl7e zWXx0cr}{I%Vl7{O4c*4WxO@_OAa#wor5CbfZ*Z?tGHWeW&r^vP8dBC^`(}c#6HM&LDIrTs(mL*U7 z6B=`DGh50CG25$1yq(UmCV^wd({MPaa3RGwk}Rr{>_)dvWcKqLW1$mIbzLn%UFs>D z;7!I!ZCR=dp5)XNeZ@Nq9pj`)oFoS^M0=X5Vqz8=Kzq_;Q4heo_7Vzk(4I&8;etJ@ z(81%q5{hsZyMlSQ#l5~nee_MtE}uWg1GmF7dsguiZ0-ee36i7YIDcRk>g7H@Jol>x zLe!N|nHSJ3P*86v>cx;gBO&u)Yj~4tHkh3$!FdgfwTN*YN+O8OUX! z{XE-JOgy>(1s2|d8@}!Yzk=r*dI;N{`Pl6~XAxZjm+-s>ROftp9Wrxki&gYKi=M=L z))EikyDfWeF2@*ht5ze6V>n_%wQR6f7KhZk5YDZc)|Nn3i4CgVFp}F?v;>2wd!Fe! zyTTr;1*l!Xhb7;oqdCaoW%<6;!DX1f9m4tZ+Rxy}(4?rSVmQnY zRohE&?Wf5#=hzztS%;tF{$hF>V`{-XO4l= z6W}fQB*XSMUfRX35kvRYZr@`jYS_3*xnJxjpk>2{>*g694niZ)x2}Y)hLLqHLA?x< z{RPww3;Zrx0rh^DN&6nZJg!CHZI}tYeuqi>Az@h#&h>Uv+K&ls3Z(n(|6)Pdj+m6h zdLZDpW1>L4iyi}p5|h@uOvkP!e9tQ*^;2hAHT<_iQ{b(}%`Ie@ZfPP9sDVT(h=FK} z!PIQ0VVK)&6SQR@HJ8qc;3Eowt#5C8Z{wD&E##4~nVd8rwHiKcE~g!Et$8U*Q_IRJ z;ny(4u!N#RX=pi4Gqv)n0ovpqrUR)}mJS-Gy@J~@069C>rfeK=wZI!eMoVzN$nl-^bj#Fgj?4*7sscX&zemSWRe6h=p bRbJe+iV{fQZKs=H!EQS~kFs|6!AbuBw@{GL delta 1621 zcmZ8heQZ-z6u-A!_aPtako-~>Wp@fj0M@X3}Hiz z3-=7U%Hd?soOhEgFtK3ys?X4KGK9-5u{%=dxLpbw);~jt#Qali&!oiMs?0xwT|~Wz zTq)?>f-n&FbDRYs{@hEU-8KwzLB5Q1irg3UZ zDV8PAxB~05&GVi^I9;eDvEy`%`*a*Lya#RB1xrVH{j#V^vK`&L$n51!V}Vcq)-*L8 zbt$-P_#tUurkVmbva5<1KUv@eC;cAF<;M_hsp=3aEYOE`NsgI}Y749rifJRX3c2(s z91$`L2#@zvpo_EE0OqZYd3}WX*bA6l{^mRn+yJ+P%q2I<9wVnCc~G3>cgzA|?&HRN zuc{|RErdKv#e&YIgt%B=6${+tapt2)gzSa=mKnv}f?0gyR z>^c)~;&}={$z3hX=8Sk{{tbz99^wH*Uefn#YZk+Y}2%Zfm8c&I0}@H3xC$2CbH|VLP{N#`+J+FA3*Hh>rrCgk6pnj!p-ANt2 zrbMeXO0Pk5gT|HGT1q>V>W!tzI-?2R*u2OHG~<2mPj-sio2 z-`mc28|J$W1JQIbR}hFG2zx3K@DYb*|42%!O7#a`iq&QusD0i(_LS=zh?)k8sJyvq zVjVQ+R@Ll8_2K|NKFa>2J@X>%H^r+2fwGPz7FeXrr^@^_9TC)5QA_*X|Du~oF(jUb zUvkR|Z=#Kc9lcDNLBSjnvNT6!?~>*Fa)LfnCFEGMQpOU>IdEI;v8VCqC<~8ps_m{`H3W+` zo47Si5Zne#Y6)i|;&@MDFh<zoDg;(qw))!g0{!|Pl z^4M8K7XFIocft{S^_~Jglp7=OXFi6LV`itGdGKDC+JK4NNxE`7B1%5M7q-%e0d$kz zHD%{`Q(KUb$D(?%!@Ss0@Z>#|v5Y(me}Y8(7EVWH)8Ft~UJ2O(hw`$?<1muxg4FAKI?om`RVtRp6;?$84}qU<8}7gc`;Q=xCw)ooZl1Z{;I_l@8p zFVJa8#dKIC=5dz&59t0C zZp8T&@TKbtCh2>zpI<*lsjBAWSrV!ooh;zH>9NT)iFqTs<_cZ0bCW5OD-h4eEh6ziX^Vr* zKr3P=bhXryNtkMJm}k!8uNR*+(B5K2F1^)3vY;BV6WS4j!1V8-R);zGTS7ag%(fcV zCr4a@QCM)n^|!1f0;~Nw7*g!7KzzpkAf^iVw~{EF^lwAF?r&HV+kyJXqXT?1ZJ% zet<_@*+|?=KwMmfM8P@9GgW(<9kDj=4e(xr!(3#82(edjdJ+wea_aCsy{eb} zVzoMQG6lhDKvHus8;J2L5sZlIXo?2EK|pjn921&R5VZ9QR$#M}Db{LxWLL78>#r6(f-|Nmm{OLh?R7Xyph3qwD z+4EXyHj-$^QHajbJDLFNdwzuDSpX1G2R^1-^@7mrTx3NB)rIG=m*|u>0M9s|bd0}d z+4&xLx!J$;EK)80?Tr`T@MVX^k?*^YC~+bz>_>(hw@(5R9MnIiH97+ z^VK>Y=fhNO18+`>h@;$;xdBdD^^DALxycn#&Iz;nAx33d=R{J0(V!W_)BgY3lFX9jvU?b z9e31kGS&x7iQ+3eY9QmvUyhDc@|7aizGNhlGFUGYa#bmBSV|!uDydKHG?9Q}efFY( zEGi4G1R;xTp)J7;cN-zS%I@bB6LB;3`F*BPoS?tqY!ek+izNk z${zCNBBaPy1$@!B1F8JJ{UpYQe09LvzLqUL67=dbfSA(o)&-KS);CQOmGqdJGJ8mf zgbfaBm~Hr5iIugyJ%I_*j(v`7Umr^tgaUSS;n#FklYmxa8} WygGJuwV~iV_HGvCsHDB~O3MGm$}Fz{ diff --git a/testing/Messenger_test b/testing/Messenger_test index f2a426f24346815ec08b9fd344e51c984bad140c..ff523d9a60d28b69b67126d71259acdcd306e2c8 100755 GIT binary patch delta 6385 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 CfVnLI delta 6389 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 delta 8795 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 KGKxrx`~L$v*d2@j delta 12797 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 Ml$2)_kj8fZ2Rf%Fz5oCK