X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2FQServer.c;h=a9e36faa7b21d907ff6b70cf36dd69ed4964af06;hb=689da1db7e2517c187ce76c6c553e20d630a7f36;hp=fd0e8e6676a1486bc5ab12059dbf265a279ddfe2;hpb=2b9e305af713f0960ac0cd7645af3e0ef85a8515;p=NeonServV5.git diff --git a/src/QServer.c b/src/QServer.c index fd0e8e6..a9e36fa 100644 --- a/src/QServer.c +++ b/src/QServer.c @@ -1,4 +1,4 @@ -/* QServer.c - NeonServ v5.3 +/* QServer.c - NeonServ v5.4 * Copyright (C) 2011-2012 Philipp Kreil (pk910) * * This program is free software: you can redistribute it and/or modify @@ -163,6 +163,8 @@ static void qserver_parse(struct QServerClient *client, char *line, int len) { } void qserver_loop() { + if(!get_int_field("QServer.enabled")) + return; struct timeval tv; struct QServerClient *client, *next, *prev = NULL; int ret; @@ -203,15 +205,20 @@ void qserver_loop() { if(FD_ISSET(server_sockfd, &fds)) { //new connection struct sockaddr_in cli_addr; + #ifdef WIN32 + int clilen; + #else socklen_t clilen; + #endif + client = malloc(sizeof(*client)); + clilen = sizeof(cli_addr); + client->sock = accept(server_sockfd, (struct sockaddr *) &cli_addr, &clilen); + client->flags = 0; if(qserver_clientcount >= QSERVER_MAXCLIENTS) { qserver_put(client, "E :Maximum QServer Connections reached"); close(client->sock); + free(client); } else { - client = malloc(sizeof(*client)); - clilen = sizeof(cli_addr); - client->sock = accept(server_sockfd, (struct sockaddr *) &cli_addr, &clilen); - client->flags = 0; client->lastmsg = now; client->bufferpos = 0; client->references = 0; @@ -288,7 +295,7 @@ static void qserver_parse_U(struct QServerClient *client, char **argv, int argc) } client->references++; client->flags |= QSERVER_FLAG_IN_USE; - get_userauth(cuser, qserver_parse_U_async, client); + get_userauth(cuser, 0, qserver_parse_U_async, client); } static USERAUTH_CALLBACK(qserver_parse_U_async) { @@ -345,7 +352,7 @@ static void qserver_parse_ACU(struct QServerClient *client, char **argv, int arg if(argc > 1 && !stricmp(argv[1], "1")) { client->references++; client->flags |= QSERVER_FLAG_IN_USE; - get_userlist_if_invisible(chan, qserver_parse_ACU_async, client); + get_userlist_if_invisible(chan, 0, qserver_parse_ACU_async, client); return; } char tmpStr[6];