From cfe613fe896531d4db3a2419213a406176a59f1b Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Fri, 6 Jun 2014 18:55:00 -0400 Subject: [PATCH] Added configuration option "STARTTLS". SSL variable now resets on disconnect. --- Jupiter/IRC_Client.cpp | 15 ++++++++++++++- Release/Jupiter.lib | Bin 216542 -> 216542 bytes 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Jupiter/IRC_Client.cpp b/Jupiter/IRC_Client.cpp index 4821ada..22ab0bc 100644 --- a/Jupiter/IRC_Client.cpp +++ b/Jupiter/IRC_Client.cpp @@ -1252,7 +1252,7 @@ bool Jupiter::IRC::Client::connect() return false; Jupiter::IRC::Client::data_->sock->setBlocking(false); - if (Jupiter::IRC::Client::data_->ssl == false) + if (Jupiter::IRC::Client::data_->ssl == false && Jupiter::IRC::Client::readConfigBool(STRING_LITERAL_AS_REFERENCE("STARTTLS"), true)) { Jupiter::IRC::Client::data_->sock->send("STARTTLS" ENDL); Jupiter::IRC::Client::data_->connectionStatus = 1; @@ -1269,6 +1269,19 @@ void Jupiter::IRC::Client::disconnect(bool stayDead) Jupiter::IRC::Client::data_->reconnectTime = time(0) + Jupiter::IRC::Client::data_->reconnectDelay; Jupiter::IRC::Client::data_->dead = stayDead; this->OnDisconnect(); + bool ssl = Jupiter::IRC::Client::readConfigBool(STRING_LITERAL_AS_REFERENCE("SSL")); + if (ssl != Jupiter::IRC::Client::data_->ssl) + { + delete Jupiter::IRC::Client::data_->sock; + if (Jupiter::IRC::Client::data_->ssl = ssl) + { + Jupiter::SecureTCPSocket *t = new Jupiter::SecureTCPSocket(); + if (Jupiter::IRC::Client::data_->SSLCertificate.size() != 0) + t->setCertificate(Jupiter::IRC::Client::data_->SSLCertificate, Jupiter::IRC::Client::data_->SSLKey); + Jupiter::IRC::Client::data_->sock = t; + } + else Jupiter::IRC::Client::data_->sock = new Jupiter::TCPSocket(); + } for (int i = Jupiter::plugins->size() - 1; i >= 0; i--) Jupiter::plugins->get(i)->OnDisconnect(this); } diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index 6744876d875ca74f51d1de529f6c09d9674241bd..386001223115ea6990411213877d309253a96083 100644 GIT binary patch delta 15599 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 J-e2hY{tYW-M*RQ) delta 15665 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

Z1}u6YoBEt z+hrH(*=1s(weN|AEKsNHzY5fc_cO4p#9EArHT;dqI`+7qHKzvhANGWEz<+^aXRu!R zb54YIcedgH$EVoMd7tfOd0;Mjpz;uS;G_5DEbB{GOanKL2oI70Ka<@EGK9~8edin6 zYsw0L&KXR;I3NBw&s``vVDC#nm%6^rZG5Z6JSRV7mE`NpeIN03OqTi`<|V?Tb!l1z9G>4bMxQ%udD5Eh-vu<^p3Kwh zK4vqMp(F#J{FuQiGrGzn%u=dp%qQ)edEX~uX2=^9S=cZv(+56L{dHv{TZcjy$HGK{ zW8pHrze$bP<)6R{BeM&NHdhkoNr*3w1KJIWxDgO44RgDKnlZ|4tS9Gq)%GSG?s z&Qs!>@Pto{RzU#Xdb5+Rvwp{}l)|;)cbs1Ytx>;cK}c-*hP3tfoX8Mk6p+|6SE3-T z&CZ0j-7*$8k^zg`8jxZ3Eih+3f6SKzr1>rUlwCm}lebHapK?G8t}Bi+$RwD;K4Z98 ziRV#pS!`*JKK>c2O$y0HH|>N!Us3cQJi#cDf>iQ3AC9$w6dDH#t%bw$o=m+GLW~$X zXX#1)5-l~A)=!<}fq{r3Rplvt_M{r8kAA_QZNL;>N=a?8rZh4aX>Q@*SuvbDkz&}2ZURsBEOBPyWWrq7#P&P?$hP-R2Sk(j`LJ)Z-up+m zJ3aVn7(R0HBa%$;TxT<@JN_qbsL0ha!&~Z}{3TKFNmN zG=BfiyB%=9Nzcb(xB zB#ya!#yAF1DE;5|Z@K@Yq<~K>355}7xe1gD+_tlv2k=Z1AA|d45Wn>fxJZ?sW1g7p z>394@{)+c|u3pe&?u3>ArLFA?aJ{TH z{=hU#{9ZZF9V-kny`{8&s>eLgVXI5WOn_tdq0}vDV|C?l7*$<)nLz{4g%`}t=l%=o z32!sXKt@Cv>UHG>xIN}9a(cGiPga!oDu@2X@no+rxoE9RLlJg~gH8Imx=ZW`JJ^aZ zn_xpbN)b7K*%T363+xcUJqMdI`6pN zOVcaQ3hq&EyYGE3D%ZUCwWo9IT-SR{O5f|rX_sBsd$h}A4U!OF?0tk1mKH?^!;3oW zx{j`SIbuBlJM7WK>LVfGNEtWy_16z}VgrzS|Jcdo;q#r`M?Cl1`MIvMYc9N!97?*d zo)TfFy13?Ly5yj$uCDhk9@)$1!?+OFyb-o@(Do45d!cvbrA45d>%H#Nh*pYoMC(zA z^YF8Y!42Pr>xBc^TUIgtEs><^ouL+zY@W5u`xaxsW*eh>7#l-G+Yn|%vz!?S zH_l|Z5by2b#>Pl14P|sMAB-hPw)J8oi{oN?8^>wsIN{zBr{Uj}*0!A$atQ>SPo)41DQyDP+vG5);h;s_1uDb`h-hALz zP@;nZ`|UmJ%=Y!K;v-TON8*m^sCTb`_ZG_rGgc+FH4Ns|CJvi7gdK)&ASe>f3~|kS ze*^^`jCG}x>KNR(I1xueZNGL94F*bQpxH4t!#9ewQcV~7IVpHKy|cb`r2ktIJrF1E z7ZY6b*E|qnUR5iClS33d%Gk3a3I@r;^s*$_d*vw!h5?}rKT&t{2=kE0FQ)*xA&G%3 zoo`XHYaUL@cj}YLF27d5K^FG%q~(pkq9>TR>ON;$uqm;lJ~m8nY)$o3Q~1m_xjKat zv&1FoT{PU_n=&0Vj-*ivu@)&o#X=U&OvvAD*5&+PPiX)AYbNq~#YCfc%|v&kr#Oj{ zTWCadCmGSJ0}=ZANp4>P_>xH$wOF)~sqqhFBee*UIr%Dv+b3H`2&prLN$n%`-4ajnN{Ej!kP{rrhbibzeBWG@Xx-^g}5M)6ZN; zQMEVq)oC+0`PjlgJcET7P<}nbzzThkGt>BB?o2nm4SL_1Y2i%Pm(O