From 7ea4083dac98c209de01e37fc2955ebe2b3f626f Mon Sep 17 00:00:00 2001 From: Ugo Cirmignani Date: Sun, 7 Apr 2019 11:28:17 +0200 Subject: [PATCH] Some refactoring the release is now a Release Candidate --- Makefile | 4 +-- build/modules/auth.o | Bin 3848 -> 0 bytes build/modules/configRead.o | Bin 13968 -> 0 bytes build/modules/connection.o | Bin 23040 -> 0 bytes build/modules/daemon.o | Bin 4640 -> 0 bytes build/modules/dynamicMemory.o | Bin 5344 -> 0 bytes build/modules/dynamicVectors.o | Bin 7584 -> 0 bytes build/modules/errorHandling.o | Bin 2056 -> 0 bytes build/modules/fileManagement.o | Bin 15016 -> 0 bytes build/modules/ftpCommandElaborate.o | Bin 43920 -> 0 bytes build/modules/ftpData.o | Bin 19928 -> 0 bytes build/modules/ftpServer.o | Bin 35880 -> 0 bytes build/modules/logFunctions.o | Bin 1696 -> 0 bytes build/modules/openSsl.o | Bin 6728 -> 0 bytes build/modules/signals.o | Bin 3280 -> 0 bytes build/uFTP | Bin 125104 -> 0 bytes ftpCommandElaborate.c | 43 +++------------------------- ftpData.c | 30 +++++++++---------- ftpData.h | 1 + ftpServer.c | 4 +-- ftpServer.h | 2 +- library/auth.c | 1 + library/connection.c | 14 +-------- 23 files changed, 25 insertions(+), 74 deletions(-) delete mode 100644 build/modules/auth.o delete mode 100644 build/modules/configRead.o delete mode 100644 build/modules/connection.o delete mode 100644 build/modules/daemon.o delete mode 100644 build/modules/dynamicMemory.o delete mode 100644 build/modules/dynamicVectors.o delete mode 100644 build/modules/errorHandling.o delete mode 100644 build/modules/fileManagement.o delete mode 100644 build/modules/ftpCommandElaborate.o delete mode 100644 build/modules/ftpData.o delete mode 100644 build/modules/ftpServer.o delete mode 100644 build/modules/logFunctions.o delete mode 100644 build/modules/openSsl.o delete mode 100644 build/modules/signals.o delete mode 100755 build/uFTP diff --git a/Makefile b/Makefile index a718517..85663b8 100644 --- a/Makefile +++ b/Makefile @@ -5,10 +5,10 @@ OUTPATH=./build/ SOURCE_MODULES_PATH=./library/ #FOR DEBUG PURPOSE -#CFLAGSTEMP=-c -Wall -I. -g -O0 +CFLAGSTEMP=-c -Wall -I. -g -O0 #FOR RELEASE -CFLAGSTEMP=-c -Wall -I. +#CFLAGSTEMP=-c -Wall -I. OPTIMIZATION=-O3 HEADERS=-I diff --git a/build/modules/auth.o b/build/modules/auth.o deleted file mode 100644 index 274c74722fa29f576ea0f8a8358d40307c6708e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3848 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 DE>?ZX diff --git a/build/modules/connection.o b/build/modules/connection.o deleted file mode 100644 index b07252a6f98dd42736cc2e4bc438d5120cb2f8a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23040 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 IQo{Cs0(~=}O#lD@ diff --git a/build/modules/dynamicMemory.o b/build/modules/dynamicMemory.o deleted file mode 100644 index 0ea65055a0a4b357b5fa3b00f541ef49da1967f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5344 zcmbtYZ-`V?6hE_LYNqbyf79R*QX8w|ZYr+QpYhMr8|^0@W-OYAdHq)>SmO@5^e^l>4;QUnZ__S={c%hmo zm+?ou`3Qb$_;Y^Bw?4bm8h91^=eh52@)P3?2<}zcu-j)tRPCCWnCg#MakAA+U4%#0QM)F>BbIDWr@Nzs zOs9LJc6D&}(kkQ+f7W=eizD6~*!sR5nmt|9NVt&+zHui95I z^3bl$ZIbD!rq_vG_H3|3_CmWpx03K~v=S5JH3)u@iRWy;(LP|Dlc=UGvCE#RtciL( z_6!F%hv|uIPTv#ta2^kSBf`j1X=Dy@rRvgxR*LiXLHjUT^JYb5#~I*~!-;jC!|d>y z;p8zX7$GL5CX-Ufl**(aj!CJjY+zDk31W#}`l5X_s?5@sQHC{63F&*WmR3a_oO$(V zHx*Pv`qd1&$)LAcVjy~2+8%yOOQ_c+) z9m{vELb>2u{)l6h0^d2K2$Y$XD;C{+&M&xS%kezd+iaCx%X8h5HSBs;Npe}mLdCZV zzEes;{5Uu8Eq9oPq%`lILrxs#E4#im>N%$iZcr&kF*qkNGKwo2q(x?UP|}>`u;<){ zhlBg}?Y6ozLqXXOtevTCsopIQ?F?kM@8!P!RPXi&6-@kiW}zg`9)-l2uEd6=ixy8N z05*d9hjIdc_AKvuy<^|9g&motixw;0!%_>dOxFvkmgAo${a#%^-qgQD`p0zr*{1$I z*5lS;|H<76w7~dqGokdi=(k1s-$=ivMSpjsze##oGR)smQ31pVQZ0agZnaY<+urN| zNl3Ocha@bRhvPFKq2Y_k0&jA}@rxpFA(AA>E4D@Y$X*btdrHEh7F(8N=viT3ka7K5)&D4qv8lml6#xTj+5H<5joN=4Qz0QAJz_mX`; z3roiyfO$;%BhGQx&lT0d1M0}z=LTheP@a|*Kj%BCZ9DqcEnigAjH@>~zy{JY-ngZt$H4KtLg8~4xt9aLO|r+gDGKu7?qqzxz}Ha!3Hl;W zr)Hni>`})&rwyFrc~Rq8q1nG?*fY;$4E~ORGe4i<7|TkH|3kx``Q^Ke@_=KQ=S#9j zOpg;E`6!%!=D8Y!<8v2;{xy3l&ug@uUg!BE1_b>|E^L=^2!1=zMGH|~C zt{XVtbNqy0e!kBjRT(S!xgkhZd{2ExxaB#;T*`OO_>el8^K+0Is#GB5xvGB-6WC=1i^7vF!}*5%##PgW_W?UOWK-y%P2b3-mfgibmW<8u02XW{eL9CCs@q! F{{e8tM(6+l diff --git a/build/modules/dynamicVectors.o b/build/modules/dynamicVectors.o deleted file mode 100644 index 5a967dfdd0db6c4f0fe80c7598011e2f4f63223b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7584 zcmd^EZ){sv6+bWTT92ijSD?+h13M|qpn9wBhp{g`CAyLwfU6bs2;0&cvIvZD;LmTkUOY?QN{~wtfEC8!Dw@C8E;u z3b&Ppw^H_Vkcr#Ei^u1$E7bu}th5Plx-7iHEiZ9XNVhCxEG*70=R1W=lo61zNO9Q_ z3u3PMH{?evdB68vdsmdH7Z0y}NjpiD<>5&2iX+m05Od9cREB2OZwl`%ol@0~Lbn8k zKFdP4Gz{Ic_G#tBkMip+0AR&w5wgE5-J4=TPcIk7Z+SR^d0u`eBaB6IOg%mF<#(nsj~wky&w7O!;k|Hbb8~Z0$Sr%?6zr~d zEQ>k!yg4S)ohdFmp1Zi#Eu=e(buAN%nkbrtv#QP?!eQCJ$R`)pUVQo}x{El$SvA4M zsf*+-EE6+^cIY^t#gx>EUTaobRqoc-GgIXicTp|xJ|W%L>l1pVE*Z?dHW}$&=yDgQ zF7esU<5?OMd-ZDM?@+`^=juZ?IjgI+D;6;{UDxEOjbU%<6y9`6c!gCjaYIPAq-cYB zQwf0vy-6!o=c{{6$?r`iArqzd-J6shh4y=s9okSIhOVbRbfJ4w$)9vxZ&FG^_Lro4 zLw8$=VN`p&1f^e?f{R?NdspwW5 z=~lk%-k7>XHrTm*8{N4os&fT7)ONzQyCwnStiGw9j?klSdnIanop#&vY3L(P-v1{q ztv=E1W(-yqNu1;@d%Z4@L_dtgmmKLXcezW7H~pCe z@a9Bea`;3leG=k@$>DCifP)7P>}zdHoG4`Th1SQSd!y|SfAO(`y6t$bqcht6$mcYS zX#&6}=-YYrFgT|o&V9|>!t)Nm{h&W6Kg2)#cSOG5bYT0|rXMtK3+u73knKZ!d`JyL zD*$|p#$Uh}9%JtoLm}z-KAtC?eOxE>s8YZj&eQmgn(;gR@nstS4t|>$O{2d5TQsix z_~S47xmEA-JO+1b`513&7PoYn_B(YaO-| z0CuuGRSg2b=Luh;&}!cRpqKC$DOFVu0FWYlph<^Nbp`-agkRFIu2BG3AiSCUoBDf= z@Htu{wU+?!HsK~ebrw(@0QI(R$*ur=PXN9*0LOVW^4}YPA9eJ4zDrB3>KOpCgzvmd zC#q@;06fCK{xOZK+5~`~68^-U8aM0kE5g4?Td&Ro%HZj2YHTF^R3@Dt&rL?t(DRKa zpGxZ6gPCk5HU3)ysjWIPMWgMEj(_xB|a_4W?9N0LYOclWtTjNb3|Cv%z9 z=;*jw61*MLcVn5c^n{uifIh^7IGtxsmKMb!$j)qb2l* z>Q<0O8cfrSm`3wez5Rg43QJ^TQ%fJiv7`+CG{c)2{%wYDXZUG`?_l^W!|!JJ&l!%T zY2t1r?nGKZPBA#1D-_HhkGjDhXZjy!_!)+CKR>ek7)JaV)8~HvV(FW>?*-`JOT2~o zW3M*)uQD8e=QDVP;XKa=iMQ-^=w&$fb1VRVBLM$5!+G3x;$u7R5r*@)Cj;=`1>o-l z;61bvI9%gD0RLV9ev@!qR$fm0JVDC&!dE6{@hPD z)8~Gk4bVRup#MDeC41jrV>qAJKLhZ4sPEZ++5+(T0Q_nIUJk%JsSo4&>}KnHhT(j_ zUSc@k-+wTi>o+0!67TUk*-bdkm)9FU;~IU;$%y_Rh2~Gh&GXN3Qa}tp=J{&I!p-y8 z%NA~)udZ6Sd9M4rg`4NJEsR$&u6aKEjD?%$pB@W0&n?3iZk}^yE!;d8y<*|!ISQha zr^oWC6A+!u=k)imxyofmQ_+0pR34&(seB5eCnhH$nj6G83#Og0bE?07yCJ@{ne zVb%LVn`MTRL%GyghL+(&3+^vYf#}8;v%e2eT^OP1`hvBEHDmORl<<(@zeb2ZvE0#? zj;-P@l+O}Q?ZcO2R$L=?{4bEt4{F~*@v&yOnD{geU+nl@WN+T5jf_+N{`&xlu{Yn{ zWN*ul-{<^~2IPO9?3Ya-60`nB4hQVtvif}+pp)!z|IpUh)3BO{y>=+av6|KnoY{|D}v3CjQg diff --git a/build/modules/errorHandling.o b/build/modules/errorHandling.o deleted file mode 100644 index 46c51ee78339601f84257a2cb8ac9a5988ded750..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2056 zcmbtU&rj4q6#lwJL0k}x2Mt8`vi^wDfTAcG18jC_%pwWWh#IYhEwGX8Vmq6xCa4LC zNz<5c^6bGs!kY&V=zriJpvflg0d9LR!Av{DPG;MSen~qsU*GrMym@`|CSNS16a^d# z?x4MD<6BpIJ{e9Y(T6k)-T$R;H8Z-u+0y;mu5UE`*@hk*qBg;7QxA+?{rxq%(*2#! zbZpSq)@B2wUk~yv-QNkB-)EUh4~$lvWc&Nq_-MgwBQTnJP}>##eW7WDo*!quiEQaf z23fBcn91cPG8c@cnnP-taqX%$GJIvc7A{9$kKWKm#x6!Q-6l?kZ$No952Ze!45qt# zwiRFq(L>?T*Hr(&yHu|4aH^c{?uowLX4>oGcg7`wZn_J5`*GjZ*vbGZ)Hrjf5Q-*1 zMOd8V5 zXug15FB1T#S*|Gny#W5~M>sF=vd8JncKcfE+ zg8dP}|3|_8n80TQdzu?ZbSEI>D9`Hv&3joP))F+2xY4-AXRf_&X~eD*XeEnS(3U(8 znp=$)%hgK7b_g`5N^EWBo-ynZYxy}MnZ0JNxK_pH@&6YzFWP(ZAIPK08v8EI}KK=JZ$nkG7eRONK zvB##D+EfUx=i@Zf%NXJY5@h;8!u~VNa8c6p^XHgPsNV>?LU~@aepJi#ynZx{e0CId q7XK|9j{;$z$$Hv*a_uNu%<0o`)dq8S0DAAn>7TLvTL+dAWc^=4!0m?s diff --git a/build/modules/fileManagement.o b/build/modules/fileManagement.o deleted file mode 100644 index 187f1fc3a63f68a7b6600ebbdb2f2c01cf09cbde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15016 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 diff --git a/build/modules/ftpCommandElaborate.o b/build/modules/ftpCommandElaborate.o deleted file mode 100644 index 284b52f8c22041ec3ba9fca9794fe9e1801ea02e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43920 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 L6)99Vs_Fk9b2XNc diff --git a/build/modules/ftpData.o b/build/modules/ftpData.o deleted file mode 100644 index a7bd9e67200a1fb407fe1c2791086b27ce4437c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19928 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 QvQ+$k*u4DJE>8ac127!bq5uE@ diff --git a/build/modules/ftpServer.o b/build/modules/ftpServer.o deleted file mode 100644 index 40248459e7e9de8799f3e06a11c8b17c65ede62d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35880 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 bSx5Ksq{5WjPhSgh+@HrUelJ&S^8Wt^sD}mO diff --git a/build/modules/logFunctions.o b/build/modules/logFunctions.o deleted file mode 100644 index ca9f615bcc981f9f1cbb548c2e221b736934f594..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1696 zcmbu8&ubGw6vw}t?JsSVC?13g_M%j@OJaqVBGR;MI!I{5HlPPtw#lXq?QTkT7TSux z5QMM@{S*94MD0Pm<=A5{LJmFXtp}kpzq-q`x#$OW-^`nN^WJ=U^TsZhGKK+#fk#MY z37^blJjaJ~$YK;#()qdfVxJlE{wPm6uMS8j>efj-aBBhp>Db4GFXW?r_?bnK&i5X- zarKbI_5tbSNNo2=v)eNP;dwH`ZOm4>#P}xn?UC3%u9GQoE*<3O{Mg6h!ouwMM0GU^ zXf!@;O%sab-Fp=6T66gN48iNQ0z z9Du8-dbkDvZc4wJ^ScAM3-B17VjurfA3ru*Yo#ct(Pk?Mts1u4&48{neQ%k%{uX?9 z!(+2nMByx!EAz#&Qz?~}?Gl;qPZEgZnvOuQX zD1bjFf|n_OHsv3e{tUoBh3I+VV{1weSmBOO-Bnm2Z40}uMs07?wWzmEVbxvg!deYO zShbe#djW+Nw5Vq-E>$Oa%@EtYb*IsGeNW~6U)X(E59%GF?(Cbvn#Vh?;J$h~ik%i7kdr`*f@$6h(d&XON WsKaLo`u(r;iJy~)K2Jh9di-Cs&ZZCm diff --git a/build/modules/openSsl.o b/build/modules/openSsl.o deleted file mode 100644 index b85496d25c803298dac6491bd2779b4626583062..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6728 zcmb_heT-aH6+bhJ^n-0#QLua{1F}$7JKYuu&_L7O&1~Ps{eaGHXpHzeJ9B4u+S&Jp z_fcBHmL}U8#tl#tOceNo1fxb{@E-{fB5RD)k4TFCp?_d(42Ct^n8lzO!zP$>?>TSI zyzWIzILY?C_dCDyyXW3>@4NR+A1#ayXEPaK%fMb}KecV+XWIAs^zA;_0^Km>H2?N9 ze15GP0G9F2JZ2$h9y_oO3X-)~|8wSnU!a(|rw3=@LXQTVW?|J?EUY@sv;5q07Uo+J z_d1W?lL$GBpTK)&wOeo&3$0&k{f{7-`w&UfdRwhI-*TGqs?(fWZs(knuuOZQm5FXN z!0Xh=OG)w_*)DS*IAq!RA0cBnK&@A>cuw;T4nMv0=+)^_K??O_4AcAng3cu4h~32a zBv)Ofh51#u{M7d_jgHE+i}wn4S+}mRWZ8t<{X*!@~0T zEyl}>WA8bOQ>~Has`L2mG}YP_WFloN)SB~a&A8<>r&gO|7ZwX^3+FSZm!j>?;uaLa zo|n%#&2!Gr&u5(sUb>vjuUKd0=8wjs_H=2@V#3M(+V-T}O|v>^k(^$NH|X3~hRzn& zFprg;NkePvCDc)~g~D29VSWux{PrcBP|2+5xmf=o>-T-QK6f~gKF3;I|FgOWXxyk* zny#x{e3kuIzh}Iu>dA=CTT+TD4Y2PPJB7dvd*D&hw*O)sMZ( z4Nx?3f)?(9Vmy6Vl_TVChLJFgRbcMN{SIax`ucLc;hx@#X2SlVp*^|nQ`4~*#ko83 zx8?hH?7kz`kGoFnx-;MZrCSXQpVrv{WF9^MnPWYfYr8jWJd**q4$L3g82&S`wdd>E zp)HqYo$d`Ajqh%X)pLmb#;xPOO8#O;{CE=o2>Hi5{3D6~S@M5M`c1gjf0g|2NPqUP zN&H*n*H_Lj`^Utu=Ny2w{p)BWYINuyN#gG&|7FrYtlg&nA|_&+W9e=PWx%=+VYMaGQt zk10>RRm z)WUzmg8#vS|J{OLY03Y63%|$0zb0$y@@CcyDA(l{3xB5tAGF~2TkwhnKVrd8Sa9$g z$}5KTd>Q8ANF8&h<0{ns@{yW1<5pv@9MyaeY87$s)uM@p^1`qV?*7qsChFXM6-b^RoqZT zaRbVARr2Bnw?#fe!EEzpw;rMmesZ+vntk7$Q_-wn0Ze0P@}TRfhoGT?zz-mdDk=zc z`;DOHMXrWJx7q-8tQL{*P`#$SND7xV!osC#KZv00d)3-Z9Hi)Nm=YTv87;UY;c%_4 zl9b|5x#E=J;$fu2d2diVT8h+{)p7F8`VS4MAPO~WMn!HzsX%H#BaT8iczgd{+8vrx zi|dumLFV~q!IycyE%-9e3xY56d{^L~75VhhK7jSg3H%4GzxX+=XK7Nog zf0A&#;C$or*w+MKj{jkS-zs#D3cOF?j|p71`!wNr!FFe;U*8pc+3rsSF57)o;9n5! z{*rLKpgzABek1sD+};svBl& z^8&9~_>T$xPQial;Qa#sfxveO`~{2tix&L%7X05rANK<8*Hzd_{cU9CBICO)_DrBu6Y>Gr<} zpfzpr+#Xx{8P_ms$~lb2?SG2{$*Pj$rKaqxdy((#+t hsXbbYe)xGRC7$YzKJ%t)kM2H>&#t9 z#2-qHxP(Yv1nqw|u^UU6R#UPL)_p-d;PG?A`Z3FO~u+Q-l{LFmOI9@qGO40{SuVVOtFlwuQ5W0q_x_8YIFC1u2EzTS6T1||c0H!A= zUp7XTN=;uhjkD$%^VG@HXPdD&`tj(C=BejSBy=2~hJ}#(;2d&m!?~k_{R7)M;0Yu@ z!jtqEKREnZesbtOd$4~%>RySpz-3jRzZ4tLki9GQPpNtU27ooG`%Ts5ZzjS21vK$} z_^Z>)q|kE*0R-d75 zKtq(R>^u%X$?;=kM9{5)=7{YXBQoF>IkOU&m&o(z8i8qzD37kLUCF!5sO1gMQ`ajd9VsQTao{;`oe40&2g8dk8Yx4hG`qNEW zMK=F)n)&-#8uGfQ`6G(`dHyJ$Ua1;#LdK+$?jan5!2a|%Av<@3WqFm^jioNK{ioX5 Q%YQ`v|8TmlF|z*u0D>S48~^|S diff --git a/build/uFTP b/build/uFTP deleted file mode 100755 index c404c95805f98593b79e92618375ce88e1028ca0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125104 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�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 z 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 z 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[%d].workerData.threadHasBeenCreated = %d", socketId, data->clients[socketId].workerData.threadHasBeenCreated); if (data->clients[socketId].workerData.threadIsAlive == 1) { - printf("\nPASV PTHREAD CANCEL"); - int returnCode = pthread_cancel(data->clients[socketId].workerData.workerThread); - printf ("\npthread_cancel return code: %d", returnCode); - - returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); - //fflush(0); - data->clients[socketId].workerData.threadHasBeenCreated = 0; - printf("\nparseCommand PASV JOIN RETURN STATUS %d", returnCode); - - printf("\nPASV THREAD CANCELLED!!!"); - - printf("\nftpData->clients[processingSocket].workerData.threadIsAlive = %d", data->clients[socketId].workerData.threadIsAlive); - + cancelWorker(data, socketId); } if (data->clients[socketId].workerData.threadHasBeenCreated == 1) @@ -543,19 +531,9 @@ int parseCommandPort(ftpDataType * data, int socketId) void *pReturn; if (data->clients[socketId].workerData.threadIsAlive == 1) { - printf("\nPORT PTHREAD CANCEL"); - int returnCode = pthread_cancel(data->clients[socketId].workerData.workerThread); - printf ("\npthread_cancel return code: %d", returnCode); - //fflush(0); - - returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); - data->clients[socketId].workerData.threadHasBeenCreated = 0; - printf("\nparseCommand PORT JOIN RETURN STATUS %d", returnCode); - - printf("\nPORT Thread cancelled!!!"); - - printf("\nftpData->clients[processingSocket].workerData.threadIsAlive = %d", data->clients[socketId].workerData.threadIsAlive); + cancelWorker(data, socketId); } + if (data->clients[socketId].workerData.threadHasBeenCreated == 1) { returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); @@ -588,20 +566,7 @@ int parseCommandAbor(ftpDataType * data, int socketId) { if (data->clients[socketId].workerData.threadIsAlive == 1) { - void *pReturn; - - printf("\nABOR PTHREAD CANCEL"); - int returnCode = pthread_cancel(data->clients[socketId].workerData.workerThread); - printf ("\npthread_cancel return code: %d", returnCode); - //fflush(0); - - returnCode = pthread_join(data->clients[socketId].workerData.workerThread, &pReturn); - data->clients[socketId].workerData.threadHasBeenCreated = 0; - printf("\nparseCommand ABOR JOIN RETURN STATUS %d", returnCode); - - printf("\nAbor thread cancelled!!!"); - - printf("\nftpData->clients[processingSocket].workerData.threadIsAlive = %d", data->clients[socketId].workerData.threadIsAlive); + cancelWorker(data, socketId); } returnCode = socketPrintf(data, socketId, "s", "426 ABORT\r\n"); diff --git a/ftpData.c b/ftpData.c index 33fce72..e762cac 100644 --- a/ftpData.c +++ b/ftpData.c @@ -565,6 +565,15 @@ void deleteListDataInfoVector(DYNV_VectorGenericDataType *theVector) } } +void cancelWorker(ftpDataType *data, int clientId) +{ + void *pReturn; + int returnCode = pthread_cancel(data->clients[clientId].workerData.workerThread); + returnCode = pthread_join(data->clients[clientId].workerData.workerThread, &pReturn); + data->clients[clientId].workerData.threadHasBeenCreated = 0; +} + + void resetWorkerData(ftpDataType *data, int clientId, int isInitialization) { @@ -645,24 +654,11 @@ void resetClientData(ftpDataType *data, int clientId, int isInitialization) { if (isInitialization != 1) { - if (data->clients[clientId].workerData.threadIsAlive == 1) { - void *pReturn; - - printf("\nRESET CLIENT PTHREAD CANCEL"); - int returnCode = pthread_cancel(data->clients[clientId].workerData.workerThread); - printf ("\npthread_cancel return code: %d", returnCode); - //fflush(0); - - - returnCode = pthread_join(data->clients[clientId].workerData.workerThread, &pReturn); - data->clients[clientId].workerData.threadHasBeenCreated = 0; - printf("\nReset client data JOIN RETURN STATUS %d", returnCode); - - - printf("\nReset client data thread cancelled!!!"); - - printf("\nftpData->clients[processingSocket].workerData.threadIsAlive = %d", data->clients[clientId].workerData.threadIsAlive); + if (data->clients[clientId].workerData.threadIsAlive == 1) + { + cancelWorker(data, clientId); } + pthread_mutex_destroy(&data->clients[clientId].conditionMutex); pthread_cond_destroy(&data->clients[clientId].conditionVariable); diff --git a/ftpData.h b/ftpData.h index 8211d16..ae1c049 100644 --- a/ftpData.h +++ b/ftpData.h @@ -277,6 +277,7 @@ int searchInLoginFailsVector(void *loginFailsVector, void *element); void deleteLoginFailsData(void *element); void deleteListDataInfoVector(DYNV_VectorGenericDataType *theVector); void resetWorkerData(ftpDataType *data, int clientId, int isInitialization); +void cancelWorker(ftpDataType *data, int clientId); void resetClientData(ftpDataType *data, int clientId, int isInitialization); int compareStringCaseInsensitive(char *stringIn, char* stringRef, int stringLenght); int isCharInString(char *theString, int stringLen, char theChar); diff --git a/ftpServer.c b/ftpServer.c index cb4332f..c32785f 100644 --- a/ftpServer.c +++ b/ftpServer.c @@ -512,7 +512,7 @@ void *connectionWorkerHandle(void * socketId) void runFtpServer(void) { - printf("\nHello uFTP server v%s starting..\n", UFTP_SERVER_VERSION); + printf("\nHello uFTP server %s starting..\n", UFTP_SERVER_VERSION); /* Needed for Select*/ static int processingSock = 0, returnCode = 0; @@ -674,7 +674,7 @@ void runFtpServer(void) if (ftpData.clients[processingSock].buffer[i] == '\n') { ftpData.clients[processingSock].socketCommandReceived = 1; - printf("\n Processing the command: %s", ftpData.clients[processingSock].theCommandReceived); + //printf("\n Processing the command: %s", ftpData.clients[processingSock].theCommandReceived); commandProcessStatus = processCommand(processingSock); //Echo unrecognized commands if (commandProcessStatus == FTP_COMMAND_NOT_RECONIZED) diff --git a/ftpServer.h b/ftpServer.h index 634a8b0..63b9d91 100644 --- a/ftpServer.h +++ b/ftpServer.h @@ -27,7 +27,7 @@ #define FTPSERVER_H #define MAX_FTP_CLIENTS 10 -#define UFTP_SERVER_VERSION "v2.1.0 beta" +#define UFTP_SERVER_VERSION "v2.2.0 RC1" void runFtpServer(void); diff --git a/library/auth.c b/library/auth.c index 51108d5..b5e4d68 100644 --- a/library/auth.c +++ b/library/auth.c @@ -12,6 +12,7 @@ #include #include #include + #include #include diff --git a/library/connection.c b/library/connection.c index 43030a3..a299f0e 100644 --- a/library/connection.c +++ b/library/connection.c @@ -595,19 +595,7 @@ void closeClient(ftpDataType * ftpData, int processingSocket) if (ftpData->clients[processingSocket].workerData.threadIsAlive == 1) { - printf("\nCLOSE THE CLIENT PTHREAD CANCEL"); - void *pReturn; - int returnCode = pthread_cancel(ftpData->clients[processingSocket].workerData.workerThread); - printf ("\npthread_cancel return code: %d", returnCode); - //fflush(0); - - returnCode = pthread_join(ftpData->clients[processingSocket].workerData.workerThread, &pReturn); - ftpData->clients[processingSocket].workerData.threadHasBeenCreated = 0; - printf("\nCLOSE THE CLIENT JOIN RETURN STATUS %d", returnCode); - - printf("\nClose client thread cancelled!!!"); - printf("\nftpData->clients[processingSocket].workerData.threadIsAlive = %d", ftpData->clients[processingSocket].workerData.threadIsAlive); - + cancelWorker(ftpData, processingSocket); } FD_CLR(ftpData->clients[processingSocket].socketDescriptor, &ftpData->connectionData.rsetAll);