From 7b84400332411f643927b7704942d6934365d5fd Mon Sep 17 00:00:00 2001 From: Neil Dorin Date: Wed, 7 Feb 2018 10:17:26 -0700 Subject: [PATCH 1/2] Updates to GenericTcpIpClient Class to improve stablity and not leave unused sockets behind when disconnecting and reconnecting. Fixed edge case NullReferenceExceptions --- Pepperdash Core/Pepperdash Core.suo | Bin 81920 -> 81920 bytes .../Comm/GenericTcpIpClient.cs | 35 ++++++++++++------ .../PepperDash_Core.projectinfo | Bin 1014 -> 1011 bytes 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/Pepperdash Core/Pepperdash Core.suo b/Pepperdash Core/Pepperdash Core.suo index 13825704127f14846a82deefd04aec1cf9999bdd..aeb466dc4aad1ac2e2228cf7f6a0c4f6c6d4f808 100644 GIT binary patch delta 1200 zcma)*T}%{L6vywGof&u5Ex5}rY+JwqWOq{(mt<`T23Z0H`P!mj{I2*FF*Rnbo5pTa zI!&53F-mk#lOc_%Jn?{m09S(v%?5QbMq*ss7vo3uq4lLkiLM{0?Dhr=U+%qU z?wRwy=giSGNzV!XWYL6AQ?J|V`K2xWFG@s62MNm(m`qg5b%9lsf zlM=4}cLRRp@nF?D``v5%*e4?3&uqs5BD7cn^6LRs%;`fA~n4AI2;YNM*A;_ zn~lWKKhKl>)=YF{EE0_l!j3$bX+P`4D+Nw$c877OA%NO%?u@S~Wt*s#cd`&YQLhWn z?x`@EfcK2;HsjLRr}_^$AQ!(odyINI*mDc3C#s}O67hDC%TRXbbM<^tlR~lR?3~Qe zuni6g=s)bh?)n3$O=xF7{|}Ky|=blDJ^AG5@?~)b}y+dlGHeXvO%mO+EJ#ADJv>3+cMtPnAjNx z+p=T{AC$l5ZpJT0!v{YY=`m>>&VeYRCJSWQVxs%946-GQ8q-9Lk-O)DB>TAC6d7a&dJ{ozZ4s50@Tj zoYN-yEQ~?BT&}!M^G%{E_f3PeQ9;T!$T#De?T*P!x{JWvAAV%*bEf?iI9>`OoBx#} zjja`_^VIlKEZO%7hxRb1yfGQr9|uHWKB+Qg%s3q-GF-y>`UDKMHB!5IUa} zNxcmH1%>GK?ZNza@w9(ZG3y3ArUaLcw};h!Cw~Qx-a3H`ZFX@b;I+!n$BNp-V%2X( zOv@pWt-Hqq$#vm1IpmJ^m&CaBjzkGAf2JzUtWQ?PRhhCfbIkT`7S&OsWGbTtrNr_Z zlRILjVhU`lLUuRga7|PT?E12FHDsqH@=qoOg}3OcU3M z<)S*`fAa?zj$KB?YZQ~slM2#RL2 zN3;^}6Z;6gA=-!!hy>A293T!7hlmcMljtJ48DiUmdWT}**I8joJ}pJ?WD~B$j=?)` zr$){bKis6+8nAaT>rE7TX&d_kO==rZA!>hk@M2jKH>7g2koM#-hqZ)3Rl zGyMLGTexRD4Q8%e=zMu=CTZg%60R+7RYwfmuC^BNv2=-rW4t(Dt#R_l8Ksb4^_Z8v O*FD!$&1AQ5i}DZQ^j1dz diff --git a/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs b/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs index e24278a..5635e33 100644 --- a/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs +++ b/Pepperdash Core/Pepperdash Core/Comm/GenericTcpIpClient.cs @@ -194,12 +194,8 @@ namespace PepperDash.Core { if (programEventType == eProgramStatusEventType.Stopping) { - if (Client != null) - { - Debug.Console(1, this, "Program stopping. Closing connection"); - Client.DisconnectFromServer(); - Client.Dispose(); - } + Debug.Console(1, this, "Program stopping. Closing connection"); + DisconnectClient(); } } @@ -217,8 +213,8 @@ namespace PepperDash.Core public void Connect() { - if (IsConnected) - return; + if (IsConnected) + DisconnectClient(); if (string.IsNullOrEmpty(Hostname)) { @@ -233,8 +229,11 @@ namespace PepperDash.Core } } - Client = new TCPClient(Hostname, Port, BufferSize); - Client.SocketStatusChange += Client_SocketStatusChange; + if (Client == null) + { + Client = new TCPClient(Hostname, Port, BufferSize); + Client.SocketStatusChange += Client_SocketStatusChange; + } Client.ConnectToServerAsync(null); DisconnectCalledByUser = false; @@ -243,9 +242,20 @@ namespace PepperDash.Core public void Disconnect() { DisconnectCalledByUser = true; - Client.DisconnectFromServer(); + DisconnectClient(); } + public void DisconnectClient() + { + if (Client != null) + { + Debug.Console(1, this, "Disconnecting client"); + //Client.SocketStatusChange -= Client_SocketStatusChange; + if(IsConnected) + Client.DisconnectFromServer(); + } + } + void ConnectToServerCallback(TCPClient c) { if (c.ClientStatus != SocketStatus.SOCKET_STATUS_CONNECTED) @@ -254,7 +264,8 @@ namespace PepperDash.Core void WaitAndTryReconnect() { - Client.DisconnectFromServer(); + DisconnectClient(); + Debug.Console(2, "Attempting reconnect, status={0}", Client.ClientStatus); if(!DisconnectCalledByUser) RetryTimer = new CTimer(o => { Client.ConnectToServerAsync(ConnectToServerCallback); }, AutoReconnectIntervalMs); diff --git a/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo b/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo index bf301034f29c4da337da95013b9c1414c154bcd3..a204af2484b5307bd609a78eff2c46c4882ed03f 100644 GIT binary patch delta 891 zcmV->1BCqc2lEGzg@0myo6>hL^VKS^pJvVc_dluXoLbJJpI*?Xdpo-a+dF&ozc;)4 zk9PMS?e35F_aEGU_;7c7=fR_$9cnkHb|;U1-{1GURsFVDUZhWpI-j;xUF6O0`};bu zzwht+`p5mh$LPj5X@BbVYaV@F_`SYv+I;as(CX8g(7&j&#o6plb`foGQY}_AuGyE%Th5Ak z;fF+x4U=@bnB=q9)w-VM$MtkxT;`T4C)MiuP4%oQXL;Rx^vH1U9=-K6pR6yAm)9pR zzxwFW_dXhr?|<6=+k!yceU+Da*5v8SZ2C64$Upl2FByIGMX@Xv>&3I8UR-5$ z{*wf{s6e*e@y^Zz`v2|&g8${ZU9H=fS^KlgzSPqf*|Ip#o7Ro*9(@{T1tr-RS+P8( zQ7$IswR>%!zVW8B`|7MLsX;K@@xAfh{rjJO`caQ6U4L?Xo50X#vz@&Mv+Uj^JGg&u zHhVCAaPPs+gHI<99~|6&xR>n$kj&&D>Ppf0m(QzdR{pHhe1IE;K2P&izMSRDDfLB+ zWoUapr0wfsu_|BBvwC&1ZrW;b+_rTwS+{v}wrunIJewMLO1Ov9{mK4pe|mrS;pEf% z_p|edM1R;%^Vu}pn|(?I^a*!+;PT4tyBH?^quY1-L!6}ke0+cO(W|`SVe_BAWMpRO z)1evqc3u+TfqBXD*@L}&vXk#Vynp{;cJKWDrw?`xCi#O;_xJD5rnC6G#6bqLaSOn= znvHl@|1X_`2Sao4BEM>@WmBEEU9s4CIK4l+w|_Gudd+6%2M_O0?|qt0Cm8F_?0%g5 zJ!l;{xDn>9DBtVl|D{Af7$W+s{Jez6Q7s3UKfiZ=evr>5q|W!J)7gXF`}ZdgA0F)I zpFY?>IGF6ksXq)hn1)*bztuDhclZC&`FJ=qAFqGn`9@uIzB9eQbAL9=r?Z3X!NI-R z{&eKQ{k`1>_jh)ulgWdD=@^6>%*HKX-)c4nd;5RaWOP2TVb9Lc+&sh73lZBn$d+=cD&&CJ3IuSH}$@hQBFJWh`I4`CdxSz(e RE?XJi{{!_idBn#J003rT|H}XX delta 894 zcmV-^1A+YW2lfY$g@5wVqqbhtFH`#JWxiVF_0z1G|NbXcom0bE^wSIabZ=+(V0&kG zd+*+x-TRMrA3WOI9e?^@_x{d%jiLzwhfG_x~QF8}q@8K1c^Xm=sI@Jw|UlEq_2=7k_qyFYD^3sn@gRdG)L) z^JTWkf0oheVzd$r3c`ReJ8P)F_S(?>^>x$cix+}bpVWl?MV&3qW^b~KXoHh#v7%wk zzFgjNQp^iKBw}osqtnGCpS`Zu^)x@Or}N@6x07~Kt*+lx&#H2k*Ud+d4DasITTk=J z`r>$bee&|FkAEJ0@1ybfuKi!$H2JbE2*ll2d6{QTp1#bcZ?lX1qwoKc(MMkt%VM!! zJS*zORaWOeNuY}gWZNC@>^z|V?>->-U#{ELx_z0oKfByZJ$;cai}So`-T3a&r*T$L zl6{dC%VQelVp3ka*Y@cfZ#uiL&dQP+1j8NQ8}B{Xzkd&UcBs-N$F~U#eRh!D&-Nbd z987jU-MhEDv$wZ*fAa9*WU~M1Wcpxle?l!~CI?YhipIZuUQM&|XPxE)+$i*Uny>QZ zEMHEkFJdf1+xsDHUl)s2`Fft!tCMxpR*U1dt&7RJ&6~4jo7d;r)WB21J)G`O_GkOk z`@0V(pMT!JpPfG>!hV|1rrF-?(@!T4eZt)yxV&=vE{2K!==Pod5GScWAKxE+^eS(7 z*!<@&8JQXSbZCaYotFf7U|zC(_Fylc?Bu%-@85rz-8;YkDcC!I@ag{k{n>ODpO-ku zU^Z?6_*SzK@9O`hbMRnj4qoI}ZMAHw^R_D%JAV(S_hv0Q2Yf&d(3>*<_L(>`$jN@(`fS z5BBp Date: Wed, 7 Feb 2018 10:21:38 -0700 Subject: [PATCH 2/2] v1.0.4.* - Updated AssemblyInfo Version --- .../PepperDash_Core.projectinfo | Bin 1011 -> 1010 bytes .../Properties/AssemblyInfo.cs | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo b/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo index a204af2484b5307bd609a78eff2c46c4882ed03f..81f067a05d418874bf8667888995c66179337a85 100644 GIT binary patch delta 890 zcmV-=1BLwa2l5Ayg@5wVqqbhtFH`#JWxiVF_0z1G|NbXcom0bE^wSIabZ=+(V0&k8 zd*{KM-JM5!JCE)?96#7Q*nRNn1N!XI&JMMkQ@fK#zwht+-Ku_DEHBchMV(LEsxI>8 z_x*hx*x&c}ef{J9-(z%RKA6!5>A(k*V(Guf=#8i452)+Hj(_lFUHvrmdbT{To)u-j z%oh32GFn}XR)Rr67!YP>4fWSv8@j)~ZrXhDLa^$Sny|m9v&Gr$O?DA&a8fN+G_2W| z%Ue#0dEtjdj16;ix|rm%*VVe7=EwDPUR>sO(oU+?^_%KhRnGFd`RI}1-938iX+BwB z951g=UVin_qkr#xG#=lz|I3>uU$zB-xce$E^Q_6!m)Z1fc9DPd{a-Tr=!;@mEY^!> zMZLJn>ij1ObWwq9yW^dm2lW5l2L%7ib-P-(FSGV%mwTzFFS2EEo;R%<-#z*?&I(Gh zFS25JOru;(%4_%9K7Hd&XZO`vSyF>wxa0lt?!l+K2Y(;+sM00Jw+Re=_V9dnI?b~O z5BBo?+4=td{fB##z5VHQXR`NTcQ>0-OPR?*)Rm&~FP~S_to&K0`2aTxeV*p4d^yXP zQ|gNt%h2|INZZ%NVpYDLXZ7l2-L%!>xNYlVvTpO{Y}w}Zc{Vlh4B@8xll|HL^#1O{ z$*1@4XMg7piLjsMvuU(m8lAGzTy8tF~G;)p^?$i=Btl`+u{0J2Rr!Y<7O|@c#7Pr`dFZvF^<7 z$I0J=){%o7Vcv@JyZ0?V>HVGivspf!9b^v< z?sLudClBuL?LN4_vpbzk9t=#!Ak<(sZUOsNvoYA)|GOrm^MMU|c82EWY1U@rS=PGQ zIM~~ne7ZZ`KbRh5ds7s0Qk5G+yDRo delta 891 zcmV->1BCqY2lEGzg@0myo6>hL^VKS^pJvVc_dluXoLbJJpI*?Xdpo-a+dF&ozc;)4 zk9PMS?e35F_aEGU_;7c7=fR_$9cnkHb|;U1-{1GURsFVDUZhWpI-j;xUF6O0`};bu zzwht+`p5mh$LPj5X@BbVYaV@F_`SYv+I;as(CX8g(7&j&#o6plb`foGQY}_AuGyE%Th5Ak z;fF+x4U=@bnB=q9)w-VM$MtkxT;`T4C)MiuP4%oQXL;Rx^vH1U9=-K6pR6yAm)9pR zzxwFW_dXhr?|<6=+k!yceU+Da*5v8SZ2C64$Upl2FByIGMX@Xv>&3I8UR-5$ z{*wf{s6e*e@y^Zz`v2|&g8${ZU9H=fS^KlgzSPqf*|Ip#o7Ro*9(@{T1tr-RS+P8( zQ7$IswR>%!zVW8B`|7MLsX;K@@xAfh{rjJO`caQ6U4L?Xo50X#vz@&Mv+Uj^JGg&u zHhVCAaPPs+gHI<99~|6&xR>n$kj&&D>Ppf0m(QzdR{pHhe1IE;K2P&izMSRDDfLB+ zWoUapr0wfsu_|BBvwC&1ZrW;b+_rTwS+{v}wrunIJewMLO1Ov9{mK4pe|mrS;pEf% z_p|edM1R;%^Vu}pn|(?I^a*!+;PT4tyBH?^quY1-L!6}ke0+cO(W|`SVe_BAWMpRO z)1evqc3u+TfqBXD*@L}&vXk#Vynp{;cJKWDrw?`xCi#O;_xJD5rnC6G#6bqLaSOn= znvHl@|1X_`2Sao4BEM>@WmBEEU9s4CIK4l+w|_Gudd+6%2M_O0?|qt0Cm8F_?0%g5 zJ!l;{xDn>9DBtVl|D{Af7$W+s{Jez6Q7s3UKfiZ=evr>5q|W!J)7gXF`}ZdgA0F)I zpFY?>IGF6ksXq)hn1)*bztuDhclZC&`FJ=qAFqGn`9@uIzB9eQbAL9=r?Z3X!NI-R z{&eKQ{k`1>_jh)ulgWdD=@^6>%*HKX-)c4nd;5RaWOP2TVb9Lc+&sh73lZBn$d+=cD&&CJ3IuSH}$@hQBFJWh`I4`CdxSz(e RE?XJi{{!_idBn#J003BZ|Hl9T diff --git a/Pepperdash Core/Pepperdash Core/Properties/AssemblyInfo.cs b/Pepperdash Core/Pepperdash Core/Properties/AssemblyInfo.cs index 010930c..5be34b2 100644 --- a/Pepperdash Core/Pepperdash Core/Properties/AssemblyInfo.cs +++ b/Pepperdash Core/Pepperdash Core/Properties/AssemblyInfo.cs @@ -4,4 +4,4 @@ [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Pepperdash_Core")] [assembly: AssemblyCopyright("Copyright © PepperDash 2016")] -[assembly: AssemblyVersion("1.0.3.*")] +[assembly: AssemblyVersion("1.0.4.*")]