Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Donald Haase
Cockatrice
Commits
c65f327e
Commit
c65f327e
authored
Jan 27, 2013
by
Max-Wilhelm Bruker
Browse files
server crash fixes
parent
4f97db62
Changes
7
Hide whitespace changes
Inline
Side-by-side
CMakeLists.txt
View file @
c65f327e
...
...
@@ -7,8 +7,11 @@ if (NOT WITHOUT_CLIENT)
add_subdirectory
(
cockatrice
)
add_subdirectory
(
oracle
)
endif
(
NOT WITHOUT_CLIENT
)
if
(
WITH_TESTCLIENT
)
add_subdirectory
(
testclient
)
endif
(
WITH_TESTCLIENT
)
FILE
(
GLOB sounds
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/sounds/*.raw"
)
INSTALL
(
FILES
${
sounds
}
DESTINATION share/cockatrice/sounds
)
FILE
(
GLOB zonebg
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/zonebg/*.*"
)
INSTALL
(
FILES
${
zonebg
}
DESTINATION share/cockatrice/zonebg
)
\ No newline at end of file
INSTALL
(
FILES
${
zonebg
}
DESTINATION share/cockatrice/zonebg
)
common/server.cpp
View file @
c65f327e
...
...
@@ -140,7 +140,7 @@ AuthenticationResult Server::loginUser(Server_ProtocolHandler *session, QString
}
users
.
insert
(
name
,
session
);
qDebug
()
<<
"Server::loginUser:
name="
<<
name
;
qDebug
()
<<
"Server::loginUser:
"
<<
session
<<
"
name="
<<
name
;
data
.
set_session_id
(
databaseInterface
->
startSession
(
name
,
session
->
getAddress
()));
databaseInterface
->
unlockSessionTables
();
...
...
@@ -228,7 +228,7 @@ void Server::removeClient(Server_ProtocolHandler *client)
qDebug
()
<<
"closed session id:"
<<
sessionId
;
}
}
qDebug
()
<<
"Server::removeClient:"
<<
clients
.
size
()
<<
"clients; "
<<
users
.
size
()
<<
"users left"
;
qDebug
()
<<
"Server::removeClient:
removed"
<<
(
void
*
)
client
<<
";
"
<<
clients
.
size
()
<<
"clients; "
<<
users
.
size
()
<<
"users left"
;
}
void
Server
::
externalUserJoined
(
const
ServerInfo_User
&
userInfo
)
...
...
common/server_protocolhandler.cpp
View file @
c65f327e
...
...
@@ -277,6 +277,10 @@ Response::ResponseCode Server_ProtocolHandler::processAdminCommandContainer(cons
void
Server_ProtocolHandler
::
processCommandContainer
(
const
CommandContainer
&
cont
)
{
// Command processing must be disabled after prepareDestroy() has been called.
if
(
deleted
)
return
;
lastDataReceived
=
timeRunning
;
ResponseContainer
responseContainer
(
cont
.
has_cmd_id
()
?
cont
.
cmd_id
()
:
-
1
);
...
...
common/serverinfo_user_container.cpp
View file @
c65f327e
...
...
@@ -26,8 +26,7 @@ ServerInfo_User_Container::~ServerInfo_User_Container()
void
ServerInfo_User_Container
::
setUserInfo
(
const
ServerInfo_User
&
_userInfo
)
{
userInfo
=
new
ServerInfo_User
;
userInfo
->
CopyFrom
(
_userInfo
);
userInfo
=
new
ServerInfo_User
(
_userInfo
);
}
ServerInfo_User
&
ServerInfo_User_Container
::
copyUserInfo
(
ServerInfo_User
&
result
,
bool
complete
,
bool
internalInfo
,
bool
sessionInfo
)
const
...
...
servatrice/src/main.cpp
View file @
c65f327e
...
...
@@ -151,6 +151,8 @@ int main(int argc, char *argv[])
sigemptyset
(
&
segv
.
sa_mask
);
sigaction
(
SIGSEGV
,
&
segv
,
0
);
sigaction
(
SIGABRT
,
&
segv
,
0
);
signal
(
SIGPIPE
,
SIG_IGN
);
#endif
rng
=
new
RNG_SFMT
;
...
...
servatrice/src/servatrice.cpp
View file @
c65f327e
...
...
@@ -289,6 +289,7 @@ bool Servatrice::initServer()
const
int
numberPools
=
settings
->
value
(
"server/number_pools"
,
1
).
toInt
();
gameServer
=
new
Servatrice_GameServer
(
this
,
numberPools
,
servatriceDatabaseInterface
->
getDatabase
(),
this
);
gameServer
->
setMaxPendingConnections
(
1000
);
const
int
gamePort
=
settings
->
value
(
"server/port"
,
4747
).
toInt
();
qDebug
()
<<
"Starting server on port"
<<
gamePort
;
if
(
gameServer
->
listen
(
QHostAddress
::
Any
,
gamePort
))
...
...
servatrice/src/serversocketinterface.cpp
View file @
c65f327e
...
...
@@ -87,6 +87,10 @@ ServerSocketInterface::~ServerSocketInterface()
void
ServerSocketInterface
::
initConnection
(
int
socketDescriptor
)
{
// Add this object to the server's list of connections before it can receive socket events.
// Otherwise, in case a of a socket error, it could be removed from the list before it is added.
server
->
addClient
(
this
);
socket
->
setSocketDescriptor
(
socketDescriptor
);
logger
->
logMessage
(
QString
(
"Incoming connection: %1"
).
arg
(
socket
->
peerAddress
().
toString
()),
this
);
initSessionDeprecated
();
...
...
@@ -123,7 +127,6 @@ bool ServerSocketInterface::initSession()
return
false
;
}
server
->
addClient
(
this
);
return
true
;
}
...
...
@@ -716,6 +719,7 @@ Response::ResponseCode ServerSocketInterface::cmdBanFromServer(const Command_Ban
query
.
bindValue
(
":visible_reason"
,
QString
::
fromStdString
(
cmd
.
visible_reason
()));
sqlInterface
->
execSqlQuery
(
query
);
servatrice
->
clientsLock
.
lockForRead
();
QList
<
ServerSocketInterface
*>
userList
=
servatrice
->
getUsersWithAddressAsList
(
QHostAddress
(
address
));
ServerSocketInterface
*
user
=
static_cast
<
ServerSocketInterface
*>
(
server
->
getUsers
().
value
(
userName
));
if
(
user
&&
!
userList
.
contains
(
user
))
...
...
@@ -734,6 +738,7 @@ Response::ResponseCode ServerSocketInterface::cmdBanFromServer(const Command_Ban
QMetaObject
::
invokeMethod
(
userList
[
i
],
"prepareDestroy"
,
Qt
::
QueuedConnection
);
}
}
servatrice
->
clientsLock
.
unlock
();
return
Response
::
RespOk
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment