handlerlogin: use std::atomic for counter and lockguard in ban check
Tá an tiomantas seo le fáil i:
		@@ -18,12 +18,15 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
			
		||||
SOFTWARE.
 | 
			
		||||
*/
 | 
			
		||||
#include <atomic>
 | 
			
		||||
#include <mutex>
 | 
			
		||||
#include <openssl/evp.h>
 | 
			
		||||
#include "handlerlogin.h"
 | 
			
		||||
#include "../logger.h"
 | 
			
		||||
struct LoginFail
 | 
			
		||||
{
 | 
			
		||||
	unsigned int count;
 | 
			
		||||
	std::mutex mutex;
 | 
			
		||||
	std::atomic<unsigned int> count;
 | 
			
		||||
	time_t lastfail;
 | 
			
		||||
};
 | 
			
		||||
static std::map<std::string, LoginFail> loginFails;
 | 
			
		||||
@@ -34,6 +37,7 @@ bool HandlerLogin::isBanned(std::string ip)
 | 
			
		||||
	if(utils::hasKey(loginFails, ip))
 | 
			
		||||
	{
 | 
			
		||||
		LoginFail &fl = loginFails[ip];
 | 
			
		||||
		std::lock_guard<std::mutex> lock(fl.mutex);
 | 
			
		||||
		return fl.count > 5 && (time(nullptr) - fl.lastfail) < 1200;
 | 
			
		||||
	}
 | 
			
		||||
	return false;
 | 
			
		||||
 
 | 
			
		||||
		Tagairt in Eagrán Nua
	
	Cuir bac ar úsáideoir