From fae951728bda1efc04665b43babc6662e4682b0d Mon Sep 17 00:00:00 2001 From: JamJar00 Date: Fri, 18 Nov 2016 00:04:39 +0000 Subject: [PATCH] Initial fix ideas --- Hazel Networking Protocol.docx | Bin 0 -> 14680 bytes Hazel/Udp/UdpClientConnection.cs | 26 ++++++++++++++++++++------ Hazel/Udp/UdpConnectionListener.cs | 19 ++++++++++++++----- 3 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 Hazel Networking Protocol.docx diff --git a/Hazel Networking Protocol.docx b/Hazel Networking Protocol.docx new file mode 100644 index 0000000000000000000000000000000000000000..fd9c96517a436cb12a3312e79d665aa112648a00 GIT binary patch literal 14680 zcmeHug;yTQ^7f0nI|K+W!QCB#ySux)I|O%!;O=fgLU4C?2=4Civ3u{{-Ob(e{R6){ z=X9Mj-SgBt({I&O&r@Bp5+IQwe!qg)}n-%hKmlN3+p9cB}3tjX|!mB(LHQidO^QoklKWtnp6_C_FE>R27 z0>zH4q~%tq=B#GEkwX+l0=01oZ!hB_P{eLv1334j1JNXTt3)n_+fedzS3*;;o4G_R zR-s}|L2}$~$9ET&GQ#r5?5=^#^0s;V)~YNk#>_SV^as;ETIr&5CgTt{R@r>G1G~#l zR`(zPz}p)LK=yAgi5H9AboOp%((fJz^X`&5_C}Ttv^2lT|GDD-VgLKfqnF2ZnRnB{ z@|^{|1WdNeEp=h$Nz)okEMqQ0Kx&9dqAV|%&%eHKEi3?Q9q4@?o|=xIaCgWMaoR}G zI>$~@f(vVhntRah)_7`j1tbQw70|oR*>1t6@7@}}3=xS@3O$? z*`XA=-6?`GBcvFgF(9tX%d}IPzf19E%uc1Boii8J@PH`g7VZefZ5_k%hBoG{NoJ&u ziT<%xtJR};7~jkgX-;uNg>6YkOOg?*Uk;6Z-ZpvYp4VB_8yZ9fl>-$@`{Ze?iLCy* z7q*MV%W_7bR;We?aR?nhL4%u~9S;8mUSBU-3f9N|)8#_DQl zYg=Ycm`h8{-1rIQvdK@-e`!cC4a=<38imPD=7EdQ36tgF+ED<(=A8x=< zBuiELJ+HUqyIy8lr&ev|G|g)xe&1PjibJ#7RL(`zr}ie4=&XHm0vR6nhxet-e_PE~ zL`Q85GypKo0stVr8^iBb^H+O0*3fX+Zbb7wlY9da@iOCVbh&bqmQHk*BUzNWZbrz_D5f0mGCzC~U zS-9GFO}ozsjP@@`f<~ux#aIw!iesNdhJIk>Wm>02KD6YAM0Q>Z&xdCvb($isM2Ez+ z5{A^ImgQKBn)0{3$b~6ZBu+X0gzFISncK8aGy2jIKTyHiP)1}*lCRE5K1R+YQj@GG zv*$GdW6A!|^#Z>azJ094dN|QV!$V&o9FnV;7-z`w(Bq;6hqonZd(Ts^%->?UPgOF>Jxzs(vY34 zJELgAZad_Mu3Ok$gE`=c+b$)A`Q!lUNoe< z852U&<4i@4PSnX3F_>9tS2E9aAqxmU`22`WqgKt06tfA{jaJlM7W|{UF`V{?Dn0Vh zYQwZ9K7ng!l$t3_O)gb^}rB2IB9FTS{w7=JiBAF(M+i7yi$dBCUb30KV;@EEuyy|rTA_) z1kw28bfb9I)kgX;#AH{RIA?;e4NN9k{XCZX)9y1V5Gl-+?x*sd^U){kr*7fUBbDI| z42?DOLDk0nG5fRvu8-8_u~0AM*x}9U#u0VU^NflXsv2DTT=Ls5qFiB=EbIR4NeQ09 zwM8wNbSrskcQUXp#h=ASInaxVk(B2p&7f>{L;^ji`ru%k^|&)b5yQ9GWVl|9qT}km zoSxu4T^uG|5F5JO+n=|UtZ6mLRMI%xlwRS0d>TlJ&`U^G`c6|xP$Kw%#UKVf!lP*H z#DLz;PQlna5`&X8Ej1mM8d(4pd_5DOA0!%5-!5$Am>>!4T6Zjrk~GK`*@I2FNWP$b zTD)POEea?uAp4lbOedn0rDez68t>K3p}fHCxj>U3+&Hqz-^U?)q1w?tK^;l zHNc-_Htdy|!K&AXY?R_EPDF#!Bf=XkdbMQFtn7wL=*L%Pi&LfrR$)=*j5xXwIm`J0 zT8#@+pO^SPwRCwM(TWHzF)20VkwYnQOl&8y#cfmFI%qpy`l(eRv>;VMyTW!Afn8)V zh+h5Ho`~Vd249$v>2s_srrTPwbR|3|S;Ip$he5%)AY)-$0tomm@$rR;PSPu|p#S<_ zbY!zdBtN+f%*$*H3)t+>i~Oi+7(2OL29um9H|ah6|3-tYIiOV#Eh-d%|f!n z4b*EA9DC5B#6szqYNPSx0{T#{rgZ8Lv^i!Fy(nIjO%uiwJc05_9a&lb`NeX#s6DY9?P;n+=C`_^u$OHmI z<)WpEwG8WWhFnra2<-3+Qa?5nqsk?|k!x{F#{e%je32CB|Cp+nQkXyNDM9$qL2AlLMK90-W<~RdtbqxAChz_JQ#%eOz@j-k9r^#cF|h&zi6p zu%yZC`SOCV1>=dqG0>V+zx2zrFn4a?MX$)2 zKe`EQ*eG;)5Ut1f#~}4C2y`=ko@&+HTz2dR#Fc&a!|ci+V9rzK*f7yrW$;@@O2Wix zgcnd*qLhc9zLj@|=$ zU?$^NWf_bJ8AL`)?Nb_Hi>Di5Z>Pv?nKd3LW%;~K&W70pm5O+K&9V>2dEKiZdDgMO zGZN}6d+9c41Qdte)WpGQgidsb|kt|gadi*#R+B79@`N)n#+WdzQsvz8-37lAqL-* zFXxJoeS6_#&@c!hz|fKu$K{djt)h&>6}5XuC@1HgocfNsUXW?pKY2AnHYAvnr@n1P zs|VA(7(D8vU<-Q62MwQbv6^$dw9Dt|I~?u*pgEF=94V_FE_6-*a!`_STuL5&a3|O6 zNw1qsd^kXjYF zg9qIetBF}{VfPkExo29)?$m;31NKA&Q}{jcC5#I%aZLB+U|KVsEM-cVQ#%w!#~d0`c7zLsLsocpnc zr?T0!p|VN~XIG-ClCj*|s99enZu*PHw@y&K8^a~kgjVFmVQOuQw%8lHaCdb`MdlSOl z5#v-oxOSd1=00qieJ7Ms>&;OhU2*I-#l%G8(eVXKu}kUeO+%GVXTZe=L04~2M>c$P zEfJQij2W}ZZ+?C!U*H{3=f3&!gIWkmb5Wmjf#bhD6w?5?X}*xp zc_#->C$8BtN#Q0hbD+(n^(@)g%5XdQ6Mr3x<#rA^>pzS3Oy|aZ4nPq`{S<-ULZS{I zTYXQUcELad})si-bF+$|w-)`Ht^$M&sA_Ay@Qw*yu#tG`GPJEsxm8$zuQUoLxOe_%`PXezF zv>S#5CSe!Q7=lvwaZu8LX-b(YMNl)KJ1HvXaEsKWfQBqTft1*KcyNgj)JGLacy!wG zeBaXPOSOcg=Z>q)G0v%;%qQ(!$N)=GCj+=x(Mt(nVTicFGAd1L=J*(%Qv}URj54mF(=);m`?VhgC(v20@M>knAAX z2P5<>nN7?W)?In#)5JN-%|Xh_u%{DT}e(2FARKMiVP zaw*Q1vY@M+p)Mb1%dW_1$FrW@U#|}y;n+%9%^!spk$ANr%mVQsVg<*>XX~U^dMLSAvI8F2mYQbY_`3&*7Oak5k}Z^TARn2%vw-L$Lnc}nuE*71LF;&o|U43 z=JYudPaJElW)K0Q>&+u){E=EtSxYpKYoEneoyNDT+IB16GwpJf$8ws>UMH;f9!g0RIZfE2O?_y^#oR!jU|0JD-xAEiLXnWgA5J6X z6na~hvZEsFwIJhDg2+1+4eA$;l&}DuhVZ%qQw%bsagFqfS%ZbC_R`)%yOxh1t=5Bt z%;>%fb@SyaF=_J&j9QXWae$*+9e96&xoH>(Tkt`T;k9(N9uqBR_0=Q3N?68NTy-mK z0#nFxUZrb~`q`Q;X+bPLEJY@#9t;(-;eHk6u&P#|m`5g9BbGPojo*?)SX&6kHf=Fi zvfuzG(+t&BZxP*FA&WX)a^9bB4gA4Gi}PnV-y4oms(jy*FA2M()6SI)(wCVZWe&9jHp?EMG{n*9&wghd@gV!_+=un$Q|N=nx|(h=>+pu^CqP*b199L*!oBi6tO zWwpylK`;sWk|!e&si{wuQ0IS|*Pu1%j4ErOZkPe1lZmU1I5bnz9whAMq*RWJSJ9F( zh8e}tcpYk65_5{@w(J06iwf0v*VYMi^c$wUB9&-XkJRTW>aCY4>>faJgshlTM5Gv4 zWHlNNXPjLL$l;na)0W3Vw6egD%9QaCd)wt_S+r$hCIxFQpSD^#x-%$B&n3BtKzk8} zTab(A1hmGQne&P*cClm5-Db)WI3uO2)DD=Q^?Fb4 zmJ+2Wj+GuqvuE*dL8?}Gth=Y-%qnWjd!*3y_UfC*oi4F19d+G%u zVZ1*skeE-gQD3aZxd)Dj{o^R#n)A(VAO7|m){re-hI&6q0_Yj1Sf zL|@J|H=1c@&5d@+9V$$q*0r_lMykd}GT zOlMR<5pjxy1yh5#u+iXz<|j57x5)K5Vicopy7{?nQGIB7$V%sY<*3LPDjZ+V&$VxB z1h)|!?SdORb}Iofv*EqWn^*zrVaT7rFnWq%V$Rp>uEX|w@8IrFqfAS_bDf_YGF{&H zL;g?!4gJ9@g5-iqDDB> zqZ6bXAgFGj_CrZ9{Jw*gfiH-)IOh=wtp%OA_!vou0gAJEg&Mb88(gRqh&aXj z$)CjYpTkrTJ*7Lgz^Ztd#8GtXzh1#0dC~$#BKM+g!=wALtLUcS@()sV`Y^R-bZ zg4*`bR<3LuL|AaBx`6nxt8zR;P$AOy?l6_;f_)~>_Uj{bi&ciGd0=wBmYzX`FX%YO zVqaquL-!9if68zmj(XN*=?Ed#tA?f}5MzOlKOixzg^shdgG!|dSlr4TrGn{?53ivn zBfXRmMUUtnsg2aO@0Dll;}vUS2;$YP=tZs(KxR@+=jUa>4)SazTG<2(_6v}SZKL?W z_My>NKV%9`5*%W|u4^i+n4=r#TcHJU6Sqwf0j;?gYvl9L%o{ioZ5&*Yb6&3EIj4qs3! zIYv_ZDh@j1i7(Ik;s@z8h3oW~(ha+Nzm4Dr+uhPgBKvUQj=vtI&AiyHy(0Y6OMz!^ zMS19*GUs|HQjz~yYZ|}jg%$PmEscJAE40Nen{U%02A^Tv;s&1L43Fhhlql3LfN1J1w7o9_nE_v^|!k=dnj3QphAn87{;0Jde!Hp-lP%OHc-JSBOej6iee~IUzl_p{=ofAKwQfUrSI`-!@o!d_<@Z zk)8!TALl#WIh69)nBMT?SmLlX;`t; zt4#Ti$*NV1i_d*U%W{-0GzoGF3(4Tgt3r--80%t;U-OGa86Oh;*l8%?&Dnjz8D(hc zCp|J5J(hYP9CbhNl0jslSZQNC9ZS@tb2dPS^HWU8$<;-mwdGz1r8dl)t1UGqLhB9l z0qNUYK7KcNlFvV;R*J0g)=%C?G~fUL)Ia`t7bAUzzeI%NWI3C3I>i2UvJ=jaovfI^ zkg{S0<%djWX@w0>fW8#n*;|5TC@J0-SOTlo;~Y0tx6RP2#k=X%H)-%no6P)kXGt9R zQob%=qG$?eG?jGV7w_h8;;|-Fa%f1|s(!a4+3B-;GV@w%HJ6!cN7C5iatVVZ)UpOv z=}#RwaPd7<*+xTFbJ-*{)+MYR#E*8%+Hx_}HElorm)r66GqREL)&>1qcN12DSH%mD z5zj10KOiNTxmrZkpK{m3JIp%eGkS*Y2L-}}r7?q$r}<9Z9@jJCtUs| zNDIG^wO;0vL;EE1kVv{efR)$KV$&CqEL96#tz&S%R@F=Wfh6bEY|@LfgGp1-#sk?< zEo7T6d@F~d?iruTCx*r@V+(ZrQs$#i3b7rku^2}guis;dM-7Qu(&(0q-BmtPRGcmr zMBQ_|=JRPh<a`NeO}16{)FQmIM_7)&Fq03D_B*rF{*~R5P4#L29cGjGkJ5x)=`S4MF zB276=19;#_=$I^+W)=8CLenlYjTLdW7CTn}(kUagN{TiiIyfc_Yf@sA?On`ui6zz4 z>!AL}pE1#O*x*INps(ERGZAC(%FE=A72q36YWlh?i`tHe_au2Jx-xUDepNhLj2!%p zM?n}2Tle?1>f1*nT|AsciKs|q!<`fdR@GKir=MGd33Zud^cH>q{j5{D=!vCdT~slW z zJW+=aT_56FAmG#2WCqR!+{O(jN?#i(h*68NH$O*(=xLLkS$Dal1ARt(?H|wK_cs6N z5rOk1(~j>RarC}d1L?0GVPIqbd!+oIOT5q9`wG8A0N#sq&*~5(pLgqph~)vOyAl>Q>9h)HU?3#BT#ffs`4#=T!U78orda5s^FK$aT9ph zt)+|O$Vx+-OR(C9KK~fiuj-$d!4YQBCF>Hl|8Y=_tfYz529&KkCIEDYiWI4fY|bzC z_Ly(_fnR)+63%4Opf2xD*-=+5Nsir8wv)H(?5aO`w=_q#K?PPe$v%l~(|$nS6WYtL zDNE0VY%;wc)}SB0b9 zSFL2=d#hQ_9h)XRx@wf0ssRzW$%2EfEoa6Jza~<%NG|8KV3)gatRZlEtS^CqKh5be ziMx-8qj(Q@+^@*^-BdSt!}5ebko`>FlFPm+dgHG9XH#9=;g>as2LO~q0f6^q-@g*z z4vub?M!$dP9e=fQSY|=)Utb^bf{4;yZ5Oo~to>?y=xj;GV?ragI%K9JNNkux3WY1y zYsdSt8H!p=LQWIn?#}vkj0wHu#joeo$1mvqd=){bj_FY#JnrIIpW$WK6?u|t7it)v zhBWKUM!P*z$Vm7yFrTXkBi=+^+WY?X%;)L!KuV3fs6GPpBkj83MX#ZjQabDB&qi&9 zSQMR`IBDTuKWQ80BjbmE$%{aZULGw=F~O0qA(2qK@nquU;Yr7oq!0X|@(F#qiEGW6 zsVd<`j$eWQr(270dTk*$Tn_gI;UX$mp%H~NhXgY%5tR+yG&{hEipF(NWtMfza0H1W zfi4TLth3e;f~^r-fpg-R5>=q^DIraUD+)~?!#lhZizeG#kSd5FakP=_Z*+O?qzf?{e~NfC~xn!~&t zcRfZ%Rvr3K=^qBshu3?@Xo=fXMvQNgEZjgVtSAQY53QJdZrt?nLmSK}nlVu1+tfA1 zyNMk1A9ao#S)Z~LyK#^iXW`Y96hRNKk5vT}NS)|8Um9P}uas};7L`|+asiL);2xmv znmtt^yFuuQ3lb{$uFsk&6!hT%Av`&QIuB%Mi`-i~}!uzD+v8R@r?k z(NowCrFmi|VaO7i_6p?iMAavy7C*B5mb%>Tpt3H&?06{;H>y*bGo5U{e_Vjg;ZqW< z-Ki)Def628=Q7ZHRv>T`a7Yj(7-2+>I1E8T+r_;=@!8~xlF=P%7)uD;>l*>c=%2BuGUd1 zQLJS;Nq(tX)hg1Y36JK90`nLMO#wvUTaTofIevz|l#LnXh%1{~Rej2+InliM$=-@U zU&x#cS1F%A zS1ZP`jI4fpR;2U-sS)Kn+@~R3hW$S9kPR7oj!&ytgjXj~_RoGNs@p~lS&9C5nf%~v zLka!SdQ;~oSHbAHR30CsS~tyxvP_Yqnv0<;4MvlmC0h(*ey$s(GgG9NCaQ;Q3VOW+ zxL?Owieyb_iL2uE*_>$`1s2FPWA&W8^dn4iuMaRNI7?z~pjA<3f*GVGe)oA6Pkw`S z@J-Hz9LoavdSaBlLjd;87zi9oYD?^6T#9jR1{jtg+S&TG+n`u%V9qLQ;LwD+&zFd4!ybkU?PUX`keQy5XH63E^g&U-^Z zr78yL(@`|&>eEsCO=#!o`4s}tsT4E7a9=@Q=nT39dQ<&_!Wh9|&`hAwDaWMOL>wEC z<2P&tBZ6Sj9MBn7_~KQVme2iB$Ngf?GWq=jsdVYa6vp`1(MrOx(tmQA>@aJrHWW^ePB-%CC)7PuJ&3sL@~jY}YV&rL=Y- zJFYs&%_BI|Phj%&p@*$F5Orc?3Gaqo-k#-M1l)-D&qK#+sQpxzdR&u9b8=uT{_%j3c&8s-kXyt{C zZM7LG;3^7-o(-r4DS#n%`a@#eNJdyTe^5+?H#d2^w%*0U~0t> zzV}OI1;BQ-1%goPW&ho!v_82F3|J>W}kMR4giWh%hk@)lOy)MkWl^wN4d3vkdIcOvB zU#An?}qUaQ!AA~?>@IOT5o=pZ!;Bg#n3`(-v+RJ8hhA2+Z1 zk6v-iEFT9`M%R+$+hc)Pf6LUJnZlT#<(MYfU`33o<67%sIXj z7*Xh(D^mL~68mKwxPp4HPHE|MGalAIWLaCG$bC5IUHe<*OcB1xc~=HAbhj?)6k7w& z&Bko(nEPJ1FblbT!_IxyghL^E@AGwP@UeGBY14$Gd#wy6w^0#H$ST{E4R&HC*42W8 zQdNom5c3t&=e@hBj9_Sd*4F;Ze})A8lgohm)@KoSPRv6t9hi&bCM$zM%gYFWj?6{R z?U}#dzyDC17Mz?{rE(cLwMrhBW$HGmUJ`*dUn8vD;3C6yaT1lqxcMNVtFpv|O2fF_ zY}^SGt6uTlN??w)BZ};+qyBl6Q{DugbKbLNWLZ+H<_WDL>$`T%hM$himFkC1e+c_; z*ecXcEx(H;UiNQL+Le7u67ByH)+*bj1vGyV|9-6ZUhVf@lBP1dS^4C@iMZ+6X7iHy zKg8h4`>)RI{7w9F6OZJQs=j2@)C}^9a?Smu*pB8F?0Ml5A{%)B9o=!u(th1ksx%+Ao~-Te4= zik%uIo9tL3<@MBMr=BfZg=tN?+*HklFm`ZqiFeaUjs=^KW_Ua&vBGA^WR$w@IF5Lp zyQ*bux%#?Dde^k(GFQ9OekN(%VZP>qE`c@M&+OsC(<#rc;H4&ZtS^x8U9qQl^s*EI zsI_%6a201-nqw`cut|-U=PLATDxErsUU6CaSbUu5%xB zDMrSg#LkD6QR7c&s}+6?@ww zc4OxI8)FM@9*%$op^F?M)c!h2rw^gLYkLfZStB_2*RiBJp(3F#^Gs5_$S+nMc0SAn zpD2WDT-?j?C~BL0O7Kk&>S<>ZMxfZt@grUr@W~$0Fm}}m_BP1(aB){FXf$z_r$G$Z z){=59W-vQ_JS+Tc-pEI#>9baM8ruyQOF&e@n2=5-qfa-ltN6#52M#_R-f|Z;IkUrZ zwo=HiPp~ix!kBA=u1TABrYj<7p0DOlp|yBg4JYOA0^zrAzk(Xfp9ao|b(VVU#G*^h zk4p|VzIiJ(7>M2 zroMV;zo8o20Md2Rw8`<5wSQX}ztgb23i8!SiM`T8k1R9gDC-MY=fOmQ^^H1)p5)uQ z=hBhC9Jg*}GXk)r4W7s0P5NNF3~uV9`?X_Bb6Wt~w-xo|BM6kZ;(!_Xr2D4V%#6$f zyw!7gn(rMfEo+Zal!$3no*ubpRdGSSn{HC-&x~1TwwIyvGQ7)Y!be@EAA6aU+qXeT zCHo|AUI(;s(iWGww@!y^2EF#GUbPXDSGsTHEKV#s!w)a*(2G5p9`RLqmWEAyD$Lc& z1iuaOS;u0;0*xPJiOp2fR4u}Y!6(lkgjqiQytZU%r?-ZU$2(3e{G?4>KT)DnL0qD| z^RzJ%`bNXh`6yT~CM7Y%?Hp+~m)d5T&P+~wF1}V!pElfQYAGxE>pz5N6+re@t;^EoRdyf6i8a@87N;=)# zDH;EoB?bSmbLi|1<_}I02$=evUjFA2wBOl+zleV*NRyTLyMn(L%=`rlh<_(4|585l zEAa1?1b+qAy>GSo|J4=zs_EC=<$vlrc(1ejuf68K!hhY}^C!F*<=^mM_xk**;@3>> zpDNz4{`lDc3yc3N{MVe%pKw&Xf5ZQl0s0mHYv$ljJp9Lh protected override void WriteBytesToConnection(byte[] bytes) { - //Pack - SocketAsyncEventArgs args = new SocketAsyncEventArgs(); - args.SetBuffer(bytes, 0, bytes.Length); - args.RemoteEndPoint = RemoteEndPoint; - lock (socketLock) { if (State != ConnectionState.Connected && State != ConnectionState.Connecting) @@ -71,7 +66,26 @@ namespace Hazel.Udp try { - socket.SendToAsync(args); + socket.BeginSendTo( + bytes, + 0, + bytes.Length, + SocketFlags.None, + RemoteEndPoint, + delegate (IAsyncResult result) + { + try + { + lock (socket) + socket.EndSendTo(result); + } + catch (SocketException e) + { + HandleDisconnect(new HazelException("Could not send data as a SocketException occured.", e)); + } + }, + null + ); } catch (ObjectDisposedException) { diff --git a/Hazel/Udp/UdpConnectionListener.cs b/Hazel/Udp/UdpConnectionListener.cs index f999202..1d10489 100644 --- a/Hazel/Udp/UdpConnectionListener.cs +++ b/Hazel/Udp/UdpConnectionListener.cs @@ -180,14 +180,23 @@ namespace Hazel.Udp /// The endpoint to send to. internal void SendData(byte[] bytes, EndPoint endPoint) { - SocketAsyncEventArgs args = new SocketAsyncEventArgs(); - args.SetBuffer(bytes, 0, bytes.Length); - args.RemoteEndPoint = endPoint; - try { lock (listener) - listener.SendToAsync(args); + { + listener.BeginSendTo( + bytes, + 0, + bytes.Length, + SocketFlags.None, + endPoint, + delegate (IAsyncResult result) + { + listener.EndSendTo(result); + }, + null + ); + } } catch (SocketException e) { -- 2.39.5