From: <ps...@us...> - 2008-08-30 08:35:05
|
Revision: 1180 http://znc.svn.sourceforge.net/znc/?rev=1180&view=rev Author: psychon Date: 2008-08-30 08:35:11 +0000 (Sat, 30 Aug 2008) Log Message: ----------- Close listening ports if we have too many open fds The alternative to this is a busy loop which is a Bad Idea (tm). Next rehash will reopen the port anyway, so meh, this is the best we can do. Modified Paths: -------------- trunk/znc.h Modified: trunk/znc.h =================================================================== --- trunk/znc.h 2008-08-29 18:59:05 UTC (rev 1179) +++ trunk/znc.h 2008-08-30 08:35:11 UTC (rev 1180) @@ -236,6 +236,15 @@ virtual Csock* GetSockObj(const CString& sHost, unsigned short uPort) { return new CClient(sHost, uPort); } + + virtual void SockError(int iErrno) { + DEBUG_ONLY(cout << GetSockName() << " == SockError(" << strerror(iErrno) << ")" << endl); + if (iErrno == EMFILE) { + // We have too many open fds, let's close this listening port to be able to continue + // to work, next rehash will (try to) reopen it. + Close(); + } + } }; class CListener { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-10-31 19:11:02
|
Revision: 1268 http://znc.svn.sourceforge.net/znc/?rev=1268&view=rev Author: psychon Date: 2008-10-31 19:10:51 +0000 (Fri, 31 Oct 2008) Log Message: ----------- Fix --disable-modules, someone forgot an #ifdef :( Modified Paths: -------------- trunk/znc.h Modified: trunk/znc.h =================================================================== --- trunk/znc.h 2008-10-30 17:11:55 UTC (rev 1267) +++ trunk/znc.h 2008-10-31 19:10:51 UTC (rev 1268) @@ -235,7 +235,9 @@ virtual Csock* GetSockObj(const CString& sHost, unsigned short uPort) { CClient *pClient = new CClient(sHost, uPort); +#ifdef _MODULES CZNC::Get().GetModules().OnClientConnect(pClient, sHost, uPort); +#endif return pClient; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-01-23 14:20:36
|
Revision: 1342 http://znc.svn.sourceforge.net/znc/?rev=1342&view=rev Author: psychon Date: 2009-01-23 14:20:24 +0000 (Fri, 23 Jan 2009) Log Message: ----------- Use unsigned int instead of uint in the one place where it is currently used Modified Paths: -------------- trunk/znc.h Modified: trunk/znc.h =================================================================== --- trunk/znc.h 2009-01-23 13:50:53 UTC (rev 1341) +++ trunk/znc.h 2009-01-23 14:20:24 UTC (rev 1342) @@ -211,7 +211,7 @@ VCString m_vsMotd; CFile m_LockFile; CFile* m_pISpoofLockFile; - uint m_uiConnectDelay; + unsigned int m_uiConnectDelay; #ifdef _MODULES CGlobalModules* m_pModules; #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-03-30 09:36:30
|
Revision: 1455 http://znc.svn.sourceforge.net/znc/?rev=1455&view=rev Author: psychon Date: 2009-03-30 09:36:26 +0000 (Mon, 30 Mar 2009) Log Message: ----------- The "isSSL" param to some CSockManager functions should be a boolean Modified Paths: -------------- trunk/znc.h Modified: trunk/znc.h =================================================================== --- trunk/znc.h 2009-03-30 09:03:54 UTC (rev 1454) +++ trunk/znc.h 2009-03-30 09:36:26 UTC (rev 1455) @@ -27,11 +27,11 @@ CSockManager() : TSocketManager<Csock>() {} virtual ~CSockManager() {} - bool ListenHost(u_short iPort, const CString& sSockName, const CString& sBindHost, int isSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { + bool ListenHost(u_short iPort, const CString& sSockName, const CString& sBindHost, bool bSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { CSListener L(iPort, sBindHost); L.SetSockName(sSockName); - L.SetIsSSL(isSSL); + L.SetIsSSL(bSSL); L.SetTimeout(iTimeout); L.SetMaxConns(iMaxConns); @@ -44,16 +44,16 @@ return Listen(L, pcSock); } - bool ListenAll(u_short iPort, const CString& sSockName, int isSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { - return ListenHost(iPort, sSockName, "", isSSL, iMaxConns, pcSock, iTimeout, bIsIPv6); + bool ListenAll(u_short iPort, const CString& sSockName, bool bSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { + return ListenHost(iPort, sSockName, "", bSSL, iMaxConns, pcSock, iTimeout, bIsIPv6); } - u_short ListenRand(const CString& sSockName, const CString& sBindHost, int isSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { + u_short ListenRand(const CString& sSockName, const CString& sBindHost, bool bSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { unsigned short uPort = 0; CSListener L(0, sBindHost); L.SetSockName(sSockName); - L.SetIsSSL(isSSL); + L.SetIsSSL(bSSL); L.SetTimeout(iTimeout); L.SetMaxConns(iMaxConns); @@ -68,15 +68,15 @@ return uPort; } - u_short ListenAllRand(const CString& sSockName, int isSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { - return(ListenRand(sSockName, "", isSSL, iMaxConns, pcSock, iTimeout, bIsIPv6)); + u_short ListenAllRand(const CString& sSockName, bool bSSL = false, int iMaxConns = SOMAXCONN, Csock *pcSock = NULL, u_int iTimeout = 0, bool bIsIPv6 = false) { + return(ListenRand(sSockName, "", bSSL, iMaxConns, pcSock, iTimeout, bIsIPv6)); } - bool Connect(const CString& sHostname, u_short iPort , const CString& sSockName, int iTimeout = 60, bool isSSL = false, const CString& sBindHost = "", Csock *pcSock = NULL) { + bool Connect(const CString& sHostname, u_short iPort , const CString& sSockName, int iTimeout = 60, bool bSSL = false, const CString& sBindHost = "", Csock *pcSock = NULL) { CSConnection C(sHostname, iPort, iTimeout); C.SetSockName(sSockName); - C.SetIsSSL(isSSL); + C.SetIsSSL(bSSL); C.SetBindHost(sBindHost); return TSocketManager<Csock>::Connect(C, pcSock); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-05-20 08:48:32
|
Revision: 1510 http://znc.svn.sourceforge.net/znc/?rev=1510&view=rev Author: psychon Date: 2009-05-20 08:48:22 +0000 (Wed, 20 May 2009) Log Message: ----------- Ask SSL clients for a ssl cert Modified Paths: -------------- trunk/znc.h Modified: trunk/znc.h =================================================================== --- trunk/znc.h 2009-05-20 08:10:00 UTC (rev 1509) +++ trunk/znc.h 2009-05-20 08:48:22 UTC (rev 1510) @@ -287,6 +287,9 @@ if (IsSSL()) { bSSL = true; m_pListener->SetPemLocation(CZNC::Get().GetPemLocation()); + + // Ask the client for a cert, if it got none, nothing bad happens + m_pListener->SetRequireClientCertFlags(SSL_VERIFY_PEER); } #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-05-20 11:19:28
|
Revision: 1514 http://znc.svn.sourceforge.net/znc/?rev=1514&view=rev Author: psychon Date: 2009-05-20 11:19:17 +0000 (Wed, 20 May 2009) Log Message: ----------- Revert rev 1510 "Ask SSL clients for a ssl cert" This commit breaks webadmin. This was found with firefox. If you got any client certificates imported into firefox, it will ask you to select which certificate to use a couple of times per click (once per HTTP request which means also when loading images etc). Since webadmin by default shares the listen port with znc, we can't limit this SSL_VERIFY_PEER to webadmin listening ports. The simplest solution is thus to just drop this. Revision Links: -------------- http://znc.svn.sourceforge.net/znc/?rev=1510&view=rev Modified Paths: -------------- trunk/znc.h Modified: trunk/znc.h =================================================================== --- trunk/znc.h 2009-05-20 10:36:34 UTC (rev 1513) +++ trunk/znc.h 2009-05-20 11:19:17 UTC (rev 1514) @@ -287,9 +287,6 @@ if (IsSSL()) { bSSL = true; m_pListener->SetPemLocation(CZNC::Get().GetPemLocation()); - - // Ask the client for a cert, if it got none, nothing bad happens - m_pListener->SetRequireClientCertFlags(SSL_VERIFY_PEER); } #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-05-20 11:56:17
|
Revision: 1515 http://znc.svn.sourceforge.net/znc/?rev=1515&view=rev Author: psychon Date: 2009-05-20 11:56:15 +0000 (Wed, 20 May 2009) Log Message: ----------- Add CListener::GetRealListener() This allows access to the Csock* which does the actual listening Modified Paths: -------------- trunk/znc.h Modified: trunk/znc.h =================================================================== --- trunk/znc.h 2009-05-20 11:19:17 UTC (rev 1514) +++ trunk/znc.h 2009-05-20 11:56:15 UTC (rev 1515) @@ -273,6 +273,7 @@ bool IsIPV6() const { return m_bIPV6; } unsigned short GetPort() const { return m_uPort; } const CString& GetBindHost() const { return m_sBindHost; } + CRealListener* GetRealListener() const { return m_pListener; } // !Getters bool Listen() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2009-07-18 15:44:38
|
Revision: 1567 http://znc.svn.sourceforge.net/znc/?rev=1567&view=rev Author: psychon Date: 2009-07-18 15:44:32 +0000 (Sat, 18 Jul 2009) Log Message: ----------- Fix --disable-modules This was broken since r1561 Modified Paths: -------------- trunk/znc.h Modified: trunk/znc.h =================================================================== --- trunk/znc.h 2009-07-17 21:04:41 UTC (rev 1566) +++ trunk/znc.h 2009-07-18 15:44:32 UTC (rev 1567) @@ -179,11 +179,11 @@ virtual Csock* GetSockObj(const CString& sHost, unsigned short uPort) { CClient *pClient = new CClient(sHost, uPort); - if (CZNC::Get().AllowConnectionFrom(sHost)) + if (CZNC::Get().AllowConnectionFrom(sHost)) { #ifdef _MODULES CZNC::Get().GetModules().OnClientConnect(pClient, sHost, uPort); #endif - else { + } else { pClient->RefuseLogin("Too many anonymous connections from your IP"); #ifdef _MODULES CZNC::Get().GetModules().OnFailedLogin("", sHost); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sil...@us...> - 2010-03-08 16:51:08
|
Revision: 1815 http://znc.svn.sourceforge.net/znc/?rev=1815&view=rev Author: silverleo Date: 2010-03-08 16:51:00 +0000 (Mon, 08 Mar 2010) Log Message: ----------- Added debug output for the listeners IsHostAllowed check. Modified Paths: -------------- trunk/znc.h Modified: trunk/znc.h =================================================================== --- trunk/znc.h 2010-03-07 15:46:36 UTC (rev 1814) +++ trunk/znc.h 2010-03-08 16:51:00 UTC (rev 1815) @@ -179,8 +179,9 @@ virtual ~CRealListener() {} virtual bool ConnectionFrom(const CString& sHost, unsigned short uPort) { - DEBUG(GetSockName() << " == ConnectionFrom(" << sHost << ", " << uPort << ")"); - return CZNC::Get().IsHostAllowed(sHost); + bool bHostAllowed = CZNC::Get().IsHostAllowed(sHost); + DEBUG(GetSockName() << " == ConnectionFrom(" << sHost << ", " << uPort << ") [" << (bHostAllowed ? "Allowed" : "Not allowed") << "]"); + return bHostAllowed; } virtual Csock* GetSockObj(const CString& sHost, unsigned short uPort) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |