projects
/
NeonServV5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
*** VERSION 5.5.0 ***
[NeonServV5.git]
/
src
/
QServer.c
diff --git
a/src/QServer.c
b/src/QServer.c
index fd10beb46cd3965fab8a651b50d70160b8b99a8a..2d77a6b2e92c2fcb837d5597141436d8c59db03d 100644
(file)
--- a/
src/QServer.c
+++ b/
src/QServer.c
@@
-1,4
+1,4
@@
-/* QServer.c - NeonServ v5.
3
+/* QServer.c - NeonServ v5.
5
* Copyright (C) 2011-2012 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
* Copyright (C) 2011-2012 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
@@
-25,6
+25,10
@@
#include "ConfigParser.h"
#include "bots.h"
#include "ConfigParser.h"
#include "bots.h"
+#ifdef WIN32
+typedef uint32_t socklen_t;
+#endif
+
#define QSERVER_TIMEOUT 30
#define QSERVER_MAXCLIENTS 100
#define QSERVER_TIMEOUT 30
#define QSERVER_MAXCLIENTS 100
@@
-52,7
+56,7
@@
void qserver_init() {
if (server_sockfd < 0)
return;
struct sockaddr_in serv_addr;
if (server_sockfd < 0)
return;
struct sockaddr_in serv_addr;
-
bzero((char *) &serv_addr
, sizeof(serv_addr));
+
memset(&serv_addr, 0
, sizeof(serv_addr));
int portno = get_int_field("QServer.port");
if(!portno)
portno = 7499;
int portno = get_int_field("QServer.port");
if(!portno)
portno = 7499;
@@
-69,12
+73,13
@@
static int qserver_write(struct QServerClient *client, char* msg, int len) {
if (!(client && !(client->flags & QSERVER_FLAG_DISCONNECT))) return 0;
if(!len)
len = strlen(msg);
if (!(client && !(client->flags & QSERVER_FLAG_DISCONNECT))) return 0;
if(!len)
len = strlen(msg);
+ int ret = 1;
#ifdef WIN32
#ifdef WIN32
- send(client->sock, msg, len, 0);
+
ret =
send(client->sock, msg, len, 0);
#else
#else
- write(client->sock, msg, len);
+
ret =
write(client->sock, msg, len);
#endif
#endif
- return
1
;
+ return
ret
;
}
static void qserver_put(struct QServerClient *client, const char *text, ...) {
}
static void qserver_put(struct QServerClient *client, const char *text, ...) {
@@
-159,6
+164,8
@@
static void qserver_parse(struct QServerClient *client, char *line, int len) {
}
void qserver_loop() {
}
void qserver_loop() {
+ if(!get_int_field("QServer.enabled"))
+ return;
struct timeval tv;
struct QServerClient *client, *next, *prev = NULL;
int ret;
struct timeval tv;
struct QServerClient *client, *next, *prev = NULL;
int ret;
@@
-199,15
+206,20
@@
void qserver_loop() {
if(FD_ISSET(server_sockfd, &fds)) {
//new connection
struct sockaddr_in cli_addr;
if(FD_ISSET(server_sockfd, &fds)) {
//new connection
struct sockaddr_in cli_addr;
+ #ifdef WIN32
+ int clilen;
+ #else
socklen_t clilen;
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);
if(qserver_clientcount >= QSERVER_MAXCLIENTS) {
qserver_put(client, "E :Maximum QServer Connections reached");
close(client->sock);
+ free(client);
} else {
} 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;
client->lastmsg = now;
client->bufferpos = 0;
client->references = 0;
@@
-284,7
+296,7
@@
static void qserver_parse_U(struct QServerClient *client, char **argv, int argc)
}
client->references++;
client->flags |= QSERVER_FLAG_IN_USE;
}
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) {
}
static USERAUTH_CALLBACK(qserver_parse_U_async) {
@@
-341,7
+353,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;
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];
return;
}
char tmpStr[6];