From 433160418196d4893b073a3165e52c314744efb5 Mon Sep 17 00:00:00 2001 From: bolvan Date: Mon, 8 May 2017 21:55:13 +0300 Subject: [PATCH] tpws code cleanup and simplify --- binaries/armhf/tpws | Bin 54692 -> 54684 bytes binaries/mips32r1-lsb/tpws | Bin 96640 -> 96640 bytes binaries/mips32r1-msb/tpws | Bin 91888 -> 87792 bytes binaries/x86_64/tpws | Bin 72928 -> 72448 bytes tpws/tpws.c | 74 ++++++++++++++++--------------------- 5 files changed, 32 insertions(+), 42 deletions(-) diff --git a/binaries/armhf/tpws b/binaries/armhf/tpws index 886ae12fa6efe54f5f1bad3decfdee200d21fe01..cc680354932ee4d0f751ceaf20a2358164b35826 100755 GIT binary patch delta 7319 zcma)B30&0GzCXV|Gb|(EARx;CGwdLsBWNmUj)I7SyC@kdu34_-ZVO_XxRBsabL9@b zvRq3Wvs~!vRTIq$pLkzt3yYHqdefenzN^jqo?*s_cYE&*pYNRWJHK;&=eM10cz2J> z_B}482AWY89_UdeL~#`XWql*nAU0H$y%4OPOhUw!t?J!wqDC}H+=v%VDp67QYk1j} zf!;mPa_|6&gM!4IC{Csr_2dhRc#g+XioG_OH&VK08rtNiw2JGggX;{CsJ2s{rcxfJ z1SrQ3@T@lNd8wjRz6j&>N{mu6K#jtzSkTw$!J zlN>cTrQj6#%Mm*3dwLFYP41l3_V+Ftbb09Rpp9&u+dNET#IR|OVI^GT8majPZny^+ zKH?8tJCYZF=c=RW{LnRl3OL#=)?bb88OH2-7ehr|j#g*Q!i)oWf?EK^@nW}5>H#of zC;Pbjl8H~a>8Tgjxh0U1z1#yR7A*nX)7`y8l%HK0SXEKyUY%X9&8oZ+X6saUtCB>| zk4Ve|mIM1g;#uy4HM`J#CnkCn#-F>7(v&&KYhfJYks7`fq%{0uSaYunDB+xjIYKms zh>C_yT;!3^Zl#h3rM8EyM zJjN>~_*+;Z<8u$C=Rp!702zcxJjh$Ul9fj~{>p1Tt>p>czM8qn0-3!(yYg$^$*zk) zUUTI`-i;Hq)r0Dl)a-hdF}*%RxLBR_EUk-G2F=gd#$EFf9kBIeAE~y1lMu>(zE5rfKI> zX6sPnMZ5hy;CrV6Q4kh|i43yj$39WJLGDYcHl_T$huTlrj)ZC@?tc{y8NzyoM10#rvfI&Kv%x&8|V!QPmDDzW1U}o z;ca;658gE_tCdE(h~agSLToj(ijZ`QUyBK`4{8EI3q(t{_e6ggMNgI4nt&+&Zw?$A zEL@tZQur&sj)j|3%+`E(MOur4Oj9gr1KT4nb%6(V&wJ8GG|In48c%}2ZRC^hwy#pGFBJqkLx(-kK0qoMiu#RY zvvnB4D%at+s1KL*;}vz)sE?5K+KReUe7k*sN=jsHfM4N3#cZwd!5$7D6{DMip~Eo0 z%7DEbK64KeO>@vb#E~uCFwJs|ae*K6(C%D?u=&Xy8B;qCb~|=f z{xCq@%VbEm8o`rh=pjeeWj|@M4*vPw4gXW_5BxAd=OZOJ_i7C^@6FMH`ojGb9fh)AHDd;s4a`MZc%`kvL1o#@}WYh;?w;a_b{ zs?N=_<$7r3qR8Ix)`>_nF6I-Wd{d=s@(&{{M@R&ItJqyO8T2AxGjInk+=;Rp_y!Q@ zX8@v(@CQ-J6UJf!cjSf45xD^hcq|WX^8%amOy0lH9*hOvFdXgq@a%wp!OI3uj?Ds3 zdOZ`R9D}Tk_Kg`VM}W#{F6&gdLJP+g`r1*%8Mt$lmqf=|)jT-jpoQAbH zsBi)?utyq+}Cia&8wrLNmY18TC%c*>CC7)s3i{2Rt=`{4C{9 zU8Q!iJ^sh(ZWSoE1C7TltGj^bAQmu$jFDW7f z2FuJf07kTF;JJuO%hq0sLRDPedoJx^AJgl!nm3v(F@H8{jC~Ytekl7^T4wcWP+ZQC z;GG!;bts93Kwg|Nf?W8^45kvE(C>YUXOGP1g8llD7z*6UK)g^oQQVJLX9iPG-jSI` zNnDrNjr1JUUq^x5wf{BG0 zX%YRfk(J8vD={8EIs^*~fwjQ9z~A7{oZ$-ja=#%zQ5bg}dd4ReXNqzK8=-R?dks57 zC-~B^A+*mDJv@P^mWPcP?O%%koQ9CIz%kTM0mr#=L~KwPM0g@k{UAbhr~KM+2lp61 z9uXPT_D{JzMn)p$V@J-#qPZ|qN1gfh$TisJ7U$~8mAB;T@LR&ixtpkl2aSqSDv5`T z3Rh|?`K?h4=n#92?oH7=X!IruX6xw4p!=9dm^Na68ro3PxAwZ+qttLv8xGI2U@O0r zr>DR3FM0iG7x#Lm6Mf1vp9#PovErFDI>RTP(bGMydnS_dSUo14uJM2|iGeWHTO{3d z!J^U{O6one@XkJVEmdyUikKL>B9FslK3>15Pps_41TI6aNw z3FCZy7I@)0DRLXcoC@FXa2@sr&zCok)4FDPW1dR>U|d-HC9Vjp3~FupH7!c{JI0+# zt{?XlC3DdDG#bvi<5Rr)!BR04H%H9TkvER-L~eX~{IggE;RONFYH(#7cJ-p7RHo-kf0{UjqBwUFQ-90NNgpco4sV${ zg5KoYQ@QZ?^CYU~lbGx%CGCW4|NmmCV|>g08PENn;|uMR$w9ZK!9Kt_xh!S7Y-=gh zPbxSS>k-0@EhdO_^q<_Kzf{0YjB0SbYu;4%o2}6kv_uGS3o;%}^@JlQIvXvkr>!O& zr2a3MDaZ2h3oFT|2v^rAM9hF?;9-yTpcyCWKP)~o-N;`9rmI0d5}TRjvrFm^andZE z|8I}LK}g-fmBU;Mrqu4{v9okOKT8f;WxyrJ%&TVU=(=UctOQl2+`v}Fkx2cFLqE>rWRrettUr$TR0B&{f_tKSf?eQ9sEK=SSj<3SBUS zmh#L6*~EN!fu7dzG+3{bvL18ZG3~BCgt^{u@ zUtXw7V(>iSTc;~bpq12wdN+q|2I!`8=vK_(xQQ<1K8q4)KF?f~Mgf*xixv_RJABC| z%I3pM7AngZS(0BK?m;z{70bUS>}|Pk^p3xF)7Ge(lVpvbgJ-u8KdI)FU;Dw))}ck) z6|Q_E7KgU=jcn|VomY+s4!mh=@-vp>>ble_*JvQN1Gz)xui(F|9OEjlB#*B0Z!4E! z!lGgwdAK_+DhA%MDjk~LTvebxgG2W?4_>`q{X&zi(Ztr(3Dni%v!)HvLJnP<;L#Ie zq^RyZZ0&g5B@V2Oq|1D1Z8uuQUL||r-^2JW=P7Tdc;)^quUJDHzOvagLwU!WpU^Kn zc3l94@ceaY8ks%KrxhPrw}ftS*U}VP%+Hth?qR#tJPc9cRBfW`nCF zUAolzG;Zpr9lY7#J-{RMH!ui{H`9 zBK#MD-`>F=1c{qfqT#Y7XuXO2kjQ%(cZdxn3V>47Yb-PQDp5BcurV7B+qiKhDIEIN zbh^%~-uhM9zQM9=(-H+!Ki*>YUw6IP2)x#U-H}g1yoF=wz}8=>E$`ZXg!yg+d_voV2Ej{Ro*a45jqnbodsk7d3^XUqkX=)ZEHG)w|Ae1Qg}tf7aVS0 zLyIl@%!Pz=Bk65(wDhZt(7kQA455@l@&G9$2N(tGv-s}Yi#$=83KUcTJpbPcz0TL$ zaO6}p?8n>%Oz(`KC`;};?<>fd$2<0rRQ&yHpS5+iMl6yBp*357yk~1Hu&8&s5cOw| zUH#h?U0Nt|3&{lL_tNsP8_|sa^b6WK;e5F-~;#M6> zTk$Je(R*9<|Fji-sug|yk2IH`^RZm3bXU~faTBk$-2Lk&jk@N#t&l8b=Vq%d73WmS z`fAU#k@&G7AD9fx02TpDfwjP9Kz`)61d{p52P=ZZPxxz`E9B87o>e_Dz&;r!{1;t4 zmTzocOe$7inB;=QZDe|15K6fV2u%dcG0;yzw-Dd4{WY!UQ< delta 7841 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 MuGie#r@4J3Y^Ni<T@Um6G2^<8&jU04#@ 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 HbM}7$vj&Z% diff --git a/binaries/mips32r1-msb/tpws b/binaries/mips32r1-msb/tpws index 7bbe3909fd082713e12add175d73f063848db8f6..912d2d66cbf915ea7b3468277cc128fb5f264945 100755 GIT binary patch delta 20923 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 F{~uRNx7Gjv delta 21693 zcmc(He_WJRzW;e11_eZY7y*YL!ZSY{P*Fx8MMQj<8D&x=@<&p-#R{dRDWz>>7L&5d z)?8pc7T)sP&MKMTmIXGrX=OR7mD{Bo+q&i6>+Z6}E!%9P-FDZzd6)bCJkJa>1C!qG zUteB5^PF=&pYu7N-{*7Aj1B!Xdg$HgR+CWkLvzivxiS;*Fc!@Od@_6r3S)Nl`Qeco z@wB(CHA$GtGX+UF%WXn#$`EtAjqy^#pMcHcr3ELncWwu-7b?W5)%={0C7-u6E;>el zz+bVB*^5PHw=~+jEp|JfEY6SCTFb?m-x9&N8{>G?R(2 z#ld1M<5)ZvF10L~+RCcs=`Fk6=>%iSx#_xu8J)aJR{}b1y7h7UXt?DflM?wa#;w5M z^5|{ij5YjZ^!?(DLT(%PM~r2TuNU6o2glDt`@Qk9@I5{>{&6v-jPHtBDW>G{{+J>_ zCd3vCzvZr2lYXifE82*%wqoXed{^w^B|oD9tYy%ZvMJP7d2~)aISPAi0I!AQ+U+i& zzD8-*3;W}45vSh9tKu@m$rZdlE@RHrOQYsnuQC52el~6yn4LUfzBuC^?wXK`PW=Rj z@H2jLLW$m>1FiDldKn%bAD<=cQN=P8hcA@z65kZR4#3ulMWUf@|3p)=p;X zrtRc~6K@d>m4wG%nGnZgCZ;AE>LXy5aor@cjAPO|z2R6mE7Lya-ILOU2YKJ5-Fm~h zQNZIWa5>*K`F4GZGzxftU!I&Q&dgSEjNBqw#e{rbE|ut0ETd320X0py%B%7D7k*yK z6~5uRgjK?ycvV84KBaOLdN!}rXYyAQEC{%Pgc5PmA};GQ^eH=l7vccZih)-lPMW4c zJ)@xMykGwj#O|3gOPrC%2d2yvXJqmCM7ua6nO7#FH-Ya;Ocf_D;|CMT)qa_{N=&|m zuTREO?cv1Ick-&FWyvWg{f-}Eh_u`IiKJP=Q+zPVq)$0NYThz#NOlPI8qvW~z}eiB zoG*B|FL{|bQRMMc%Y-2f^XqWTv@dz%)RkcI!>Nk!IyV^hqWvR-OZbFeGGqxpE~TUi zKjt|p4rr_n?H}}bQWguhy1P!vySiSN>!Z9w(~HxYBkPbF+lH>Qvb*a|xv|TKq~l{Y zJasLnWjFbk$Ie*R8CJ)tZPP8$OBb*R<(%G-6QLWO|3rrhXSP2aWOC zG;@QSMnG3b?*POyOirbrUWUF2(v0AInB=QaO;6s2McQPqS=# zON#gny+KdG|% zhK{4Z3H?G9&&hKxK zfXci*EfLm?3ieaCwCr&=Qopr^Rni;#sOqkkC^jCrB8{OPlXVu%Ru{s$>f#0QQuGkP zXhATnfI)@&lEOC98%!&zS8Pa@%#e0Gkjeu{=*RF@nY7j`-!ubSFc<+-C1wt37Kjx4 zi423%Nql7C#?*udzx(7qo>)u2CyoEWS0 z?XmOkr5hS7N$Q}c;w>#eRDlRO(n`zQYzt*8_(A~%-6)fgPpKNkg40wwXIQ8JjEerF~vO;Bo7~~YG;y`7t$KT-OkWY zocm*5p*GFoO=i13tvftDq=^2MHD$&QAPLB*1!{5#&!{26Zn}%-STYel<(66M9PxiK z=SJ?eWXA45?u|q4eSn{{%+aUyg|lKf&SR#VOzCWtFt?KcsxYv%nlj6$&&T?W)AQG4 z24G#MnGLotQu|0+YUncL3^*w{7I>uCtRuJRLQ4Nl^mj+q?J6~ zHb>O|LxYmlL!m`{mo1+!w`J<5*+zkke89G}NIQyYLQHc4r76g5(lKho7bS}hv9jCU z8-)G&`@DK?Dj0ltZcd82{gcnC_z2?SC|2sJ$!y}jxh9i>>4KydEpSc0%qN1Rrd{N^ zJTr=&>^!SzWV|wODmt6;<_o_^v^t=z!Mv6F%vLZEqT$4)Tq;Ntbi6iyov@bs@=NrY z?W0fqbb)(4EsAP?NXkM03!wvIq(aSlbPzoVp zs`%Ak`JwrDrOM?kZwlotX9Wt6^TFlgmh$vMOs)){tpA%f`CquVa9*-zW?)T8U5R3(cal;06 zL_1j)gg^t^TfnVCVY9egls4T$*s9}2Gts|BIo22qQi-~gR~MxTGu2NsKUk!mu!@u! z>4CY}+~TS2pFb*P=pX0B3+K;B{1)umaHZ()=Z6;33H;NA*+M^;inD~{>Q+)-oG<)_ zyNeeKvD}Bx*Y+=3EPTe5MKkrrI?xCSC;ii0Dy5@v{Gxo}EubXwfkm0Z^ZQG(gj}9o z0#i_O3Nb~(X?4b8USF~pC)&!z8G7TWQ)t4ExO;IL4!T4-iOY*~gayX*&jfz;Iu5zEYO8l+-L}`)Ucm=2-K`6DUsPGPOU%`v*Gp#0r zKi;Znrj}nPzer8WM6?6OOL5)YW6u;&0#8ih)AA?r_v{n&Cd!1Nw76Iv6LX4jZ+0H8Wbddf=ldL4;G)a1(CX-IIl>OA;||A(mcz`JEVBun zBCVdAkk!r%c-L{sX^M3Wsc1Jl_(Er<;Na_=cZep1pLFh>s4!fZVFqs9<|_QAB^%=s zT+G)*mw>0ZZ^_DNg%M!tQX3AFuBA`RJ#5iQyCi=tn|OrjEm690Sx1>IUed>4TaqkM z!+%J0uxOFlKt&(Jb!B-XUWH{Qy*@@%WFuy$(_4jZDVtM*VOcin6x>uQZX<5v1P~Gl zjGC9w$B9ff5NLV97;wD&LfIbSFkkP=7reaHwGf+epKEihmoyn8>ASgdV;Ugq zZ(Jqx^6negCV8`7!@=dX;R{_}+y$!Q>-%{6vc(C#5U#%k*Of#YbG>}aGJC@8_0~pb zOmQ@BETi1a)9&P_mSqV}{^_!u)q`C>W9g_}qnm4-aMjsvLIub4pHYGuV5D@>)@1Iq zJ9Uh?jnv2a$Jn{S$(k`{ZFk17o12Wd0EINO-JLf(`NrjCqG=27UY<&?zU4Dv^1m&& zL9p!dd1&8JUMsZo_+AU|Zi?n#lqXGc%9chJqscPmaW1X+(DDM+2rSBwg=`ed#Oy4n zV=`UU`gS{IwnVZF>~``A73L(T?Awh4;RYIEI!PJ6YJrH3itQ$+++4?49uD%55L>JS z4yRO+Ei~Ov>EstGGL3^`t!%bhSPYvDal=h3Zv(OWnJy2tFNh_N5QCxv z#F*kWHg90MWIGs6e2j^1GWL`~v064-b$;@e5c2*pe)gu_z*+MbS?MoY%A5 zcvwwgToi)bxO% zXpCTl)0xP0mPS`L8KHAEV^$N)FD5YScBd@j3c}(TzS4sil4RiW<;JlveBT6>a62=QX9lRx!6O70n&I@>cVrJ~q%~ z)BrN>9$V2SHs$j~6xlY3GF`lsGf2spGONf6)$AKD8C!Vwt!YUu6ne=fWHDfBvrPqj z;8s(Lu>j#_LlQlK-6^M7&+J_w#BiftNptdKYm-T72_s{4-TMfp6qEL$ADPTApOwFV=_FzDzy_Bc-BEn39k zVWJ7uJ6rg>>z4?ne9Cunq1yy_XY-WO)njxkg6fn~Uh|#pNsu5GdBfXeY(`reVBVj~ zj-JoI6D6R_qCw)LLL;f)GsxmQoDLp!M^>^bq*|YN{siXcQSp^C$dx;i8%$R$HB10s z=|43)PEu$gwWd%!{1Y-ZtTyGRCX9=$DB&ZvNF{7n$*CoFC^>RA(j!x#c*SN6=uz~k zo}NoGTMwi7h6Oq{l&((jF_H0K-LU}jPp(e0n~oJHvr_8^rUA=JO0fa=)u@R+@{{DV zl%kuV54vmV#2cKCBg%mNm2as|1+jhAHTe9z+KIBj_T4OeR(-b&g@PAtFF*I)wb*av z4Q6~gH{2v#;s-X&0*()#UVeE4o%t;_xfowvlN;NMGC)#`5l@W+WBq`5_t)+e=j`IU zYX23ut~-|}Q0?TRP-4)5T3)o@nLCY&jvGTqDY8hj^vCP&G^_KLg<^2aT|dF$y#FpM zs=2@2)rW(@*^NgqvT0K$KASczq@z21zIgW(A?dv6#kQ8j5|Q#POicng#XS3-nPMvA ztM8cwWcNL{ix?ZYr-H_8n@cF~*KNi(s^_FVEDDR)B1iAz2RAPz$iU`#sVGdl1xxWb zrZ6TOvz})L%UhdH#!J(n&Mm28+FiVSOPN|ym51@(z9nBBT@f~VY0FH=GUeWyWV1}w z9d?Dp*27E?tI41yFZbM=G0t2UFU>s5yYGD=&YXk151s(2-MS&p>>TO#Z%q}=wfyo{ zlQ>)E(zdnVy+k>kJOx{f!d9u5&#_t0F$H56Xfb$4oG4R2M_&gY-xcVio!)_R zg0>B8ZSBpD5w-M@T6)fHn=c5LU%c-b0meUc|2kZoUAg}W8>;z2W2l&+rpUVD0#|-$X~o?`*N6J|Bg9ghK}2In903%Y#lLz>{N}=zvCV;!^VprFp1OF^J?wY z_`n^)*L?7SvKi!Nm7`bn*Sm?qnm0ot>?FcoJsO*LZ^=@Pv?dh7FMV%$N-q*V75iRt zVtg|_mnluE;&}Okxp4Gd4=zMFc>UqvdvK@GRf})@4PE$RUUK7`3G7_)Qsyh9O%PA- zWG=q0J`-5TBI77CAQP5ao-@0#Re3Cp=EhFZRokp{@n`DOCb|^MTdwMODWl)=oQt2S z&(Clva6vnBXOqiFmQP*Pz;I$UY;Cq$p7_wrR1GB}xay&sZX99*UZW`6j9S5IJV_}E zl1+w76@k^Os*BL+1b+dSfQyKpn`s0o7P}8>y*fVhkU6Ch^^|}rdeDOJb-W5T1eHoo zBhT6Sqm;%@9g_fkX$*95r#Weeg0tl?bLnMl1eMxqJpJKiahWdY@F19}=XDR$amMrT zoYac;4tGm8p56|H#RIq-4vu4Ari-6{c+d1v_5M;wq(c{Ecv z!>b=HvZ7S<7ZV<*9rWcyB892o#SLDFORVX8)S4_OlBq<|Jss8BUz+E#LV(`kS05#f z85)*@Vr|1Je4c2y&18&KS-|NCOIw=9v2w{b{CCTEgaWZ2&k2gFPZ;v|N2P`qak&fC5{tB{%#8=nE`?#5KT(M2AL$U_iOISIsz zjmwK0k=EmgJH+?^l@W0Mbnw3(#{oByrtR2bcQr)~;7h*Om`pe^IBNpVYra3rYVIJp z=qEZzFGs1CBKplDD@T<$o+x82FYo>StTlrq#pqg5RXRL3UdkVWyA^4bqS}^&8+3Sm zNii0{;{|)o)6P(C48vA23PBas=#IT+{DR=%Ui&0-H^j4aJx_;*8GZcH-nHZ{`)(2j zc1Z;{@ijZ3V8_}*Zr`B zCUyTX?>2K@*Xv9Yy%ZJd-mc0I28F28_@xbYOfW2o)lhRZd4xHS^n;4uBKmMX!5H;v zoOT(}7s%VDuXyqP)MO1^V*l7%EH(_2+!njVz_;wr5G_}@Xa9b2x`E656RY{R`0iDJ z(RJ39=HD=O%!p%5DcTot#5;g(z7@9V;5i2}^yZ5M($I(J1LgO8{egRcX_4?9|4ZVa z#G*dQ>J>i@!(VYCRykn41P6$s2q=zj7%q5jco-2I&kaw` zBRy3M;@DDS{xh|qfdaI@;yF)cB-^T(LcWh{ zG9TX66gnj@@#?2C#8Q#FpPEx-(c$o2YLzVN#TsG8OQj<77OJ-qEjWmi-xH3i7ReIt z$Cvn}r>y!BOB6suunaUVx9t~8=kVUP`AN@`IcZg*OVvEBzW?CVq?a@R;-74V#o{IV zvpnZu7LM(!4_2g3H^AVP`KNJ#b(pOdy+Cx+Z0BG3$%7_w$x=Q5D$lZN)eEXxp2yEb zs>yS(aQr{dBjKF?TtctLf8Gfu$-Uq%IU`I;Ps4<&7l|rsn%8mV=~Tjo69E%fKco$a zwB>2kk9oZ5={Y9o#^IiT&2VDNOUy&QB!US~SysGfX%?=#z`%v4=iRa-gBb4IKzVY> zqpA_01{xz_NLo?}_}&7xHU)UsjO9Wyg36f9D9B_qs1W`_X5qEZEXL(Z`!lADMI}V6 zc>KbrJC9)BQ*g=g={s;G;&|cdp22566@{00-?OPuLeHgV(?n=i_v5F6x(FIfdOB%> zqJ0rk)kGd_Ll=irgRG&ojy)={yYowk{2@6bG_T~%{&`~9Tt?)EwK8fdqY z-^V5BuJy(9ZRum5K%I@XDV9%lMC_&i8y+8XA?L04*h&Q;n`^A;S<@p!i54oRxJ{AW6 zx`dwX?K#;yLA=$g+8jf)6EnAD#Ez~0JT_jMlTE0k9XO-`k6Ni)bd!≥_v;CUfI* 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

?7#KI` zu|F)9l^F2(!1uBv0h!ONuVa`!#XVWitlo6+?*T$3&=07lE!Jhfj9y4*x2ecEs&7jn z|DXrjB6xK!{jM#X?4p`KViimCSp>CtR#|jiIYYZ-$!Lkr{zFAZ$c(r07~{(_qpKhC z8wZvk`lu~Zv0Enf$)k_|2q7=g;G22)EoGGW4DWa8j++s|+riGJuKkfiL#z_L za+3|6dp9FO%Aew4Vd~H|xf=T2jTjdn4RfKCPQ0ZO{8*j-a3fN2UUqd=zVwkV2@q!C z7u%ocv0E9WhTg*)7s1pEs&vI#>(i^^ijKtTxA|9d}YiAE91LhJVGbmi*>mmTiQU4_f%vp z!`K|H86++BK-xBWaoh#kc5et7LN)jEa5GwVKOXng9rsgkRr&UQMo8pvtiATm11v)M z3iB&@$X`%bg8Biy0u3AJy@x5;&f_c=4U=Eo*-MLA z&DQs8;7JBPnBlQ4Sn9kV z2jVw_E{{_}DxbIQTv#;twVf3#`cQw46Q#_e6NMlL7wy?+oU$0 zM3AwPw-X5r8M64v^)3yzuA#d$i>1C!;2th5bOQG#X@e8V;JcPe7o5moGERzgCV@Q$ zS6VFg?qoi)>9G~!p)Rn=)mGpjFj7!K$HaDxJQh})WP#G8fwSnP=;2kCUdIfm#JQkRn|nun__n{*FhE z0p#`4Fp$aHR)Hin$E}f;F@enxK+EwkYZKHQw@upPifHSt0-J!Tk=mGw&62Ad0^q8p zY&VROvC<4T@Vzfp1555n#~7F_wYeeW`I5Igz)~sI9Rt2yTINmyQ@gCgpRYO0S%>3< zC=4XvOFQ6MKk9(5lFqo3Jbr>CkBL-?jUn}0Y)rVWMd$Qn2)4nww7$hi?@Of~7;*#G zNgF*d2lh!V9wdTKmLxY%5=ZVxsh%W{yeQ4{Bts(oH&`qZGbt~6{5t!p$C9=ZiNJ95 zM2ZfBts7&rJ#3;J2Kj>I-I=6xdS;`=GT%kQ&uoFx#LlEApZm6T8-APlV~~z?CMx15 zX_O>3`utXgTZi}4Q-F<@&tq}KlOmPKS&7W=GEmlWPMWQRjzSq1(@Dmi{RpO~O+LfR0XeJWOsA=taPH+z6Q5C%_veS054)dDOIg!ZKr=}Q86bB#RE>T6g}UE3`$J}05@xU|d{ zi%*%1?_I-=Q6YTNZt1Kq7T`$|@gwoU1`roGoVVU_ZtUe`BD2>&DYqVy`As>m-y#6HL(g72U!`46Kv4l{vV*-K#bjB zk9=9tJ{vr0gO_^XBcQ*uAb_aHJ9KA0Wy@~!DQI{4lmEE_1%Bal65C#Czrq?fn7 zV~bD9Xs)}Y2_Y$N>>u;kv-&q_Q3&bfX8*^-%RbUU)^4`_BV)6Vbf2}^zxT1H)kn%! zq0Qmn&E&^dTEyDLwsx_vbP#Rta$CFHm&j}h5($Obdi={Dd$tEi*`cHl54Z@>_4@!T L+w;<~KoarakEe&7 delta 15228 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 XDv0#r0oMY$9So4!CY!GKlJNflpYy(| diff --git a/tpws/tpws.c b/tpws/tpws.c index 3b2fc49..b22e844 100644 --- a/tpws/tpws.c +++ b/tpws/tpws.c @@ -77,7 +77,6 @@ void close_tcp_conn(tproxy_conn_t *conn, struct tailhead *conn_list, } static const char *http_methods[] = { "GET /","POST /","HEAD /","OPTIONS /","PUT /","DELETE /","CONNECT /","TRACE /",NULL }; -static const char *http_split_host[] = { "\r\nHost: ",NULL }; #define RD_BLOCK_SIZE 8192 @@ -109,17 +108,18 @@ bool handle_epollin(tproxy_conn_t *conn, int *data_transferred) { { if (bOutgoing) { - char buf[RD_BLOCK_SIZE + 4], *p, *pp, *phost = NULL; - ssize_t l, method_len=0, split_pos = 0, method_split_pos = 0, host_split_pos = 0, split_array_pos_offset = 1, pos; - const char **split_array = NULL, **split_item, **method; - bool bIsHttp; + char buf[RD_BLOCK_SIZE + 4]; rd = recv(fd_in, buf, RD_BLOCK_SIZE, MSG_DONTWAIT); if (rd > 0) { + char *p, *pp, *pHost=NULL; + ssize_t method_len=0, split_pos=0, pos; + const char **method; + bool bIsHttp=false; + bs = rd; - bIsHttp = false; for (method = http_methods; *method; method++) { method_len = strlen(*method); @@ -136,7 +136,6 @@ bool handle_epollin(tproxy_conn_t *conn, int *data_transferred) { if (params.unixeol) { - printf("Replacing 0D0A to 0A\n"); p = pp = buf; while (p = find_bin(p, buf + bs - p, "\r\n", 2)) { @@ -163,23 +162,29 @@ bool handle_epollin(tproxy_conn_t *conn, int *data_transferred) { *p = ' '; // insert extra space bs++; // block will grow by 1 byte } - if (params.hostdot || params.hosttab) + + // search for Host only if required (save some CPU) + if (params.hostdot || params.hosttab || params.hostcase || params.split_http_req==split_host) { - if (phost = find_bin(buf, bs, params.unixeol ? "\nHost: " : "\r\nHost: ", params.unixeol ? 7 : 8)) + // we need Host: location + pHost=find_bin(buf, bs, "\nHost: ", 7); + if (pHost) pHost++; + } + + if (pHost && params.hostdot || params.hosttab) + { + p = pHost + 6; + while (p < (buf + bs) && *p != '\r' && *p != '\n') p++; + if (p < (buf + bs)) { - host_split_pos = phost - buf + 7; - p = phost + 8; - while (p < (buf + bs) && *p != '\r' && *p != '\n') p++; - if (p < (buf + bs)) - { - pos = p - buf; - printf("Adding %s to host name at pos %zd\n", params.hostdot ? "dot" : "tab", pos); - memmove(p + 1, p, bs - pos); - *p = params.hostdot ? '.' : '\t'; // insert dot or tab - bs++; // block will grow by 1 byte - } + pos = p - buf; + printf("Adding %s to host name at pos %zd\n", params.hostdot ? "dot" : "tab", pos); + memmove(p + 1, p, bs - pos); + *p = params.hostdot ? '.' : '\t'; // insert dot or tab + bs++; // block will grow by 1 byte } } + if (params.split_pos) { split_pos = params.split_pos < bs ? params.split_pos : 0; @@ -192,36 +197,21 @@ bool handle_epollin(tproxy_conn_t *conn, int *data_transferred) { split_pos = method_len - 1; break; case split_host: - if (host_split_pos) - split_pos = host_split_pos; - else - split_array = http_split_host; + if (pHost) + split_pos = pHost + 6 - buf; break; } } - if (split_array) - { - // we havent found split post yet. need to search. - for (split_item = split_array; *split_item; split_item++) - { - l = strlen(*split_item); - if (p = find_bin(buf, bs, *split_item, l)) - { - split_pos = p - buf; - printf("Found split item '%s' at pos %zd. Split offset is -%zd.\n", *split_item, split_pos, split_array_pos_offset); - split_pos += l - split_array_pos_offset; - break; - } - } - } + if (params.hostcase) { - if (phost || (phost = find_bin(buf, bs, params.unixeol ? "\nHost: " : "\r\nHost: ", params.unixeol ? 7 : 8))) + if (pHost) { - printf("Changing 'Host:' => '%c%c%c%c:' at pos %zd\n", params.hostspell[0], params.hostspell[1], params.hostspell[2], params.hostspell[3], phost - buf + 2); - memcpy(phost + 2, params.hostspell, 4); + printf("Changing 'Host:' => '%c%c%c%c:' at pos %zd\n", params.hostspell[0], params.hostspell[1], params.hostspell[2], params.hostspell[3], pHost - buf); + memcpy(pHost, params.hostspell, 4); } } + if (params.methodeol) { printf("Adding EOL before method\n");