Giter VIP home page Giter VIP logo

dirtsand's People

Contributors

boq avatar branan avatar deledrius avatar dgelessus avatar diafero avatar dpogue avatar hoikas avatar mystler avatar sszperling avatar zarothye avatar zrax avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dirtsand's Issues

Ghost Avatars

When a player crashes, the vault marks him as offline but the game server doesn't send any kind of page out message to remove his ghost from the age.

DS::FileStream::atEof() UB

DS::FileStream::atEof() relies on undefined behavior if the file is opened in read mode. It basically tests for EOF by trying to read a character from the file and put the character back for future read attempts. In Ubuntu 20.04 on WSL2, this causes the character read by atEof() to be discarded. This is also true for Alpine running in a docker container on WSL2.

SyncedObjects need owners

We need to properly support ownership of synched objects. This will definitely fix some of the weird kickable warping that we're seeing. Hopefully, it will also fix the weird issues where lots of game objects get in a weird state when multiple players are in the age.

More verbose help listing

This is a request to have more information when using the 'help' command, as well as the ability to display more help for specific commands if necessary. For example:

ds-918> help
    addacct <user> <password> [adds an account]
    addallplayers <playerId> [whatever this does]
    clients [lists currently connected clients]
    ...

If more detail was needed for a specific command rather than a short blurb, typing 'help [command]' could be used to display that information. An example would be the modacct command; typing "help modacct" could have the console output what the different flags are and what they do.

Test and Set not robust

Test and set will currently do two very bad things:

  • Allow any client to release a lock, even if it was grabbed by a different client
  • Not release locks held by a client which has crashed

Layer SDL assert

When using the Debug client, plClient throws an assert when reading the Layer SDL descriptor on link to Relto.

Deleted Players not Removed from Hoods

It's awkward to have two "Branan"s as members of the Neighborhood....

DeletePlayer should probably remove the deleted PlayerInfo from all PlayerInfoLists he's a child of. Or, if we're planning on adding undelete support, mark the refs as dead in some way.

Error during build on GateServer

Folllowing the Dirtsand installation tutorial here : http://www.guildofwriters.org/wiki/Development:DirtSand, I get the following error during the "make" command.

dirtsand@vm-debian:~/src/build$ make
[ 1%] Building CXX object CMakeFiles/dirtsand.dir/GateKeeper/GateServ.cpp.o
/home/dirtsand/src/GateKeeper/GateServ.cpp: In function ‘void DS::GateKeeper_Shutdown()’:
/home/dirtsand/src/GateKeeper/GateServ.cpp:239: error: ‘sleep_for’ is not a member of ‘std::this_thread’
make[2]: *** [CMakeFiles/dirtsand.dir/GateKeeper/GateServ.cpp.o] Error 1
make[1]: *** [CMakeFiles/dirtsand.dir/all] Error 2
make: *** [all] Error 2

OS: Debian 4.0.6 64-bit

Sending KI notes/images

Sending a KI note/image (publishing a vault node) does not send the vault node added callback message, nor does it set the sender ID properly--you have to log out and back in to see the ki note/image. "From" appears as "DRC" (node #0) in game.

Junked SDL Blobs

If a single Age file is encrypted, DirtSand will send down junked SDL blobs until the offending Age file is decrypted and the server is restarted. This happens for all Ages, not just the Age whose files are encrypted.

pfKIMsg causes crashes

When a pfKIMsg is sent in an Age, it causes other players to crash.

The other players never receive a pfKIMsg (based on network log output), and using PlasmaClient it appeared that sending a chat message caused other players to warp to the sender's location before immediately crashing.

SQL Files Specify DB Name

dbinit.sql and functions.sql specify the database name "dirtsand" -- this potentially corrupts the vault (in the case of the former) if attempting to setup a second shard with a separate vault.

Misc Linking Error

Weird Linking Error that I don't know how to describe.

A links into Neighborhood. B links into Neighborhood. A links to Nexus and then back to Neighborhood. B cannot see A though A can see B as default man.

Use sendfile in FileServ

Currently, the FileServ does lots of wasteful userland copying by reading in chunks, then writing them to the socket. We should convert this to sendfile and reap some speed benefits.

dirtsand CMake issues

Hi,
I wanted to install dirtsand and followed the read me, but I always get a error message at the Compile from dirtsand in step 3 of the README
$ cmake -DCMAKE_INSTALL_PREFIX=/opt/dirtsand ..

_

CMake Error at CMakeLists.txt:41 (find_package):
By not providing "Findstring_theory.cmake" in CMAKE_MODULE_PATH this
project has asked CMake to find a package configuration file provided by
"string_theory", but CMake did not find one.

Could not find a package configuration file provided by "string_theory"
(requested version 1.3) with any of the following names:

string_theoryConfig.cmake
string_theory-config.cmake

Add the installation prefix of "string_theory" to CMAKE_PREFIX_PATH or set
"string_theory_DIR" to a directory containing one of the above files. If
"string_theory" provides a separate development package or SDK, be sure it
has been installed.
_

Could you please tell me which path under string_theory_Dir I have to put in?
Thank you.

System:
ubuntu-16.04.3-server-amd64

Package:
libssl-dev (v 1.0.2g-1ubuntu4.8)
postgresql (v 9.5+173)
postgresql-server-dev-9.5 (v 9.5.7-0ubuntu0.16.04)
libpqxx-dev (4.0.1+dfsg-3ubuntu2)
autoconf (2.69-9)
automake (1:1.15-4ubuntu1)
libtool (2.4.6-0.1)
git (1:2.7.4-0ubuntu1.2)
apache2 (2.4.18-2ubuntu3.4)
libpq-dev (9.5.7-0ubuntu0.16.04)
libreadline-dev (6.3-8ubuntu2)
g++ (4:5.3.1-1ubuntu1)
zlib1g-dev (1:1.2.8.dfsg-2ubuntu4.1)
postgresql-contrib (9.5+173)

          cmake (3.5.1-1ubuntu3)
          cmake-qt-gui (3.5.1-1ubuntu3)             

Relto Bookshelf Busted

The Relto bookshelf will never accumulate any books because DirtSand does not add the player's AgesIOwn folder as a child of the AgeNode on age initialization (AuthVault.cpp v_create_age).... psnlBookshelf.py, asks for the ptAgeVault's AgesIOwnFolder.

Console command crash

As of the ST::string merge, DirtSand crashes when attempting to use a console command with zero arguments. The restrict command is affected by this issue. The crashing line is dsmain.cpp:190

ST::string arg_str = ST::string(cmdbuf + args.front().size() + 1);

OpenSSL removed SHA-0

OpenSSL has removed support for SHA-0. This causes Types/ShaHash.cpp#L75 to not work properly and break compilation. This functionality is used to create email address style accounts, which has never been particularly emphasized by DS.

See: https://www.openssl.org/blog/blog/2015/07/28/code-cleanup/
"We also removed support for the broken SHA0 and DSS0, the CBCM mode of DES (invented by IBM and not used anywhere), and the maintenance of our own free lists, OPENSSL_NO_BUF_FREELISTS."

Creating public age instances

After some hours of desperation creating a new public age with dirtsand, I suddenly noticed that the static_ages.ini file is only read on the very first startup.

There should be a way to easily add new public ages, e.g. by re-reading the static_ages.ini on every startup or something like that.

Problems with string_theory

Hi, I'm trying to build dirtsand but running into problems with string_theory (maybe among other things). Please see below for the error message I'm getting.

I'm on Arch Linux, I have the following versions of the prerequisites:

  • gcc 9.2.0
  • postgres 11.5
  • readline-8.0.001-1
  • zlib-1:1.2.11-3
  • string-theory-2.3-1

Any ideas? Thanks!

[dirtsand@home build]$ make && sudo make install
[  1%] Building CXX object CMakeFiles/test_sha.dir/streams.cpp.o
/opt/dirtsand/dirtsand/streams.cpp: In member function ‘ST::string DS::Stream::readString(size_t, DS::StringType)’:
/opt/dirtsand/dirtsand/streams.cpp:29:16: error: ‘ST::utf16_buffer’ {aka  class ST::buffer<char16_t>’} has no member named ‘allocate’
   29 |         result.allocate(length);
      |                ^~~~~~~~
/opt/dirtsand/dirtsand/streams.cpp:30:46: error: invalid conversion from  const void*’ to ‘void*’ [-fpermissive]
   30 |         ssize_t bytes = readBytes(result.data(), length * sizeof(char16_t));
      |                                   ~~~~~~~~~~~^~
      |                                              |
      |                                              const void*
In file included from /opt/dirtsand/dirtsand/streams.cpp:18:
/opt/dirtsand/dirtsand/streams.h:55:41: note:   initializing argument 1 of ‘virtual ssize_t DS::Stream::readBytes(void*, size_t)’
   55 |         virtual ssize_t readBytes(void* buffer, size_t count) = 0;
      |                                   ~~~~~~^~~~~~
/opt/dirtsand/dirtsand/streams.cpp:36:16: error: ‘ST::char_buffer’ {aka ‘class ST::buffer<char>’} has no member named ‘allocate’
   36 |         result.allocate(length);
      |                ^~~~~~~~
/opt/dirtsand/dirtsand/streams.cpp:37:46: error: invalid conversion from  const void*’ to ‘void*’ [-fpermissive]
   37 |         ssize_t bytes = readBytes(result.data(), length * sizeof(char));
      |                                   ~~~~~~~~~~~^~
      |                                              |
      |                                              const void*
In file included from /opt/dirtsand/dirtsand/streams.cpp:18:
/opt/dirtsand/dirtsand/streams.h:55:41: note:   initializing argument 1 of ‘virtual ssize_t DS::Stream::readBytes(void*, size_t)’
   55 |         virtual ssize_t readBytes(void* buffer, size_t count) = 0;
      |                                   ~~~~~~^~~~~~
/opt/dirtsand/dirtsand/streams.cpp: In member function ‘ST::string DS::Stream::readSafeString(DS::StringType)’:
/opt/dirtsand/dirtsand/streams.cpp:54:16: error: ‘ST::utf16_buffer’ {aka  class ST::buffer<char16_t>’} has no member named ‘allocate’
   54 |         result.allocate(length);
      |                ^~~~~~~~
/opt/dirtsand/dirtsand/streams.cpp:55:46: error: invalid conversion from  const void*’ to ‘void*’ [-fpermissive]
   55 |         ssize_t bytes = readBytes(result.data(), length * sizeof(char16_t));
      |                                   ~~~~~~~~~~~^~
      |                                              |
      |                                              const void*
In file included from /opt/dirtsand/dirtsand/streams.cpp:18:
/opt/dirtsand/dirtsand/streams.h:55:41: note:   initializing argument 1 of ‘virtual ssize_t DS::Stream::readBytes(void*, size_t)’
   55 |         virtual ssize_t readBytes(void* buffer, size_t count) = 0;
      |                                   ~~~~~~^~~~~~
/opt/dirtsand/dirtsand/streams.cpp:59:21: error: ‘ST::utf16_buffer’ {aka  class ST::buffer<char16_t>’} has no member named ‘front’
   59 |         if ((result.front() & 0x8000) != 0) {
      |                     ^~~~~
/opt/dirtsand/dirtsand/streams.cpp:61:27: error: assignment of read-only location ‘*(result.ST::buffer<char16_t>::operator const char16_t*() + ((sizetype)(((long unsigned int)i) * 2)))’
   61 |                 result[i] = ~result[i];
      |                 ~~~~~~~~~~^~~~~~~~~~~~
/opt/dirtsand/dirtsand/streams.cpp:66:16: error: ‘ST::char_buffer’ {aka ‘class ST::buffer<char>’} has no member named ‘allocate’
   66 |         result.allocate(length);
      |                ^~~~~~~~
/opt/dirtsand/dirtsand/streams.cpp:67:46: error: invalid conversion from  const void*’ to ‘void*’ [-fpermissive]
   67 |         ssize_t bytes = readBytes(result.data(), length * sizeof(char));
      |                                   ~~~~~~~~~~~^~
      |                                              |
      |                                              const void*
In file included from /opt/dirtsand/dirtsand/streams.cpp:18:
/opt/dirtsand/dirtsand/streams.h:55:41: note:   initializing argument 1 of ‘virtual ssize_t DS::Stream::readBytes(void*, size_t)’
   55 |         virtual ssize_t readBytes(void* buffer, size_t count) = 0;
      |                                   ~~~~~~^~~~~~
/opt/dirtsand/dirtsand/streams.cpp:70:21: error: ‘ST::char_buffer’ {aka ‘class ST::buffer<char>’} has no member named ‘front’
   70 |         if ((result.front() & 0x80) != 0) {
      |                     ^~~~~
/opt/dirtsand/dirtsand/streams.cpp:72:27: error: assignment of read-only location ‘*(result.ST::buffer<char>::operator const char*() + ((sizetype)i))’
   72 |                 result[i] = ~result[i];
      |                 ~~~~~~~~~~^~~~~~~~~~~~
/opt/dirtsand/dirtsand/streams.cpp: In member function ‘void DS::Stream::writeSafeString(const ST::string&, DS::StringType)’:
/opt/dirtsand/dirtsand/streams.cpp:98:23: error: assignment of read-only location ‘*(buffer.ST::buffer<char16_t>::operator const char16_t*() + ((sizetype)(((long unsigned int)i) * 2)))’
   98 |             buffer[i] = ~buffer[i];
      |             ~~~~~~~~~~^~~~~~~~~~~~
/opt/dirtsand/dirtsand/streams.cpp:107:23: error: assignment of read-only location ‘*(buffer.ST::buffer<char>::operator const char*() + ((sizetype)i))’
  107 |             buffer[i] = ~buffer[i];
      |             ~~~~~~~~~~^~~~~~~~~~~~
make[2]: *** [CMakeFiles/test_sha.dir/build.make:76: CMakeFiles/test_sha.dir/streams.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:77: CMakeFiles/test_sha.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

Starting Game Server results in segfault

I set up a new instance of dirtsand from scratch on a freshly installed Ubuntu server 17.04. Logging in and configuring my avatar works (mostly) fine but linking the first time to Personal will crash the whole server (as well as my bash). It happens every time I select my player after logging in with my account. This is the crash message of dirtsand:

ds-918> [Status] Running on 0.0.0.0/8080
[Lobby] Running on 0.0.0.0/14617
[Auth] Login U:admin P:{ password hash } T: O:win
[Auth] 192.168.0.41/50224 logged in as admin {17e4dd60-4b4e-4104-be20-a97d12c89a05}
[Auth] {17e4dd60-4b4e-4104-be20-a97d12c89a05} signed in as Admin (10104)
[Auth] 192.168.0.41/50224 Requesting game server {b4cf331d-b586-499d-b33e-20feeafad256} Personal
Segfault at bin/dirtsand(+0x11b590) [0x563c86865590]
    from bin/dirtsand(+0x11b6c6) [0x563c868656c6]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x37140) [0x7f67a2ee3140]
    from bin/dirtsand(_ZN3SDL5State5mergeERKS0_+0x28) [0x563c8688027c]
    from bin/dirtsand(_Z15start_game_hostj+0x7ee) [0x563c86853921]
    from bin/dirtsand(_Z14find_game_hostj+0xa9) [0x563c86846e7d]
    from bin/dirtsand(_Z7cb_joinR18GameClient_Private+0xbc) [0x563c86847028]
    from bin/dirtsand(_Z11cb_sockReadR18GameClient_Private+0x81) [0x563c86847841]
    from bin/dirtsand(_Z13wk_gameWorkerPv+0x171) [0x563c86847c31]
    from bin/dirtsand(_ZSt13__invoke_implIvPFvPvEJS0_EET_St14__invoke_otherOT0_DpOT1_+0x34) [0x563c86813a53]
    from bin/dirtsand(_ZSt8__invokeIPFvPvEJS0_EENSt15__invoke_resultIT_JDpT0_EE4typeEOS4_DpOS5_+0x4e) [0x563c86813071]
    from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEE9_M_invokeIJLm0ELm1EEEEDTcl8__invokespcl10_S_declvalIXT_EEEEESt12_Index_tupleIJXspT_EEE+0x43) [0x563c868142bb]
    from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEEclEv+0x2c) [0x563c8681425c]
    from bin/dirtsand(_ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFvPvES3_EEEEE6_M_runEv+0x1c) [0x563c8681422c]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xbc0ff) [0x7f67a377e0ff]
    from /lib/x86_64-linux-gnu/libpthread.so.0(+0x77fc) [0x7f67a32937fc]
    from /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f67a2fc0b5f]
Unhandled exception at bin/dirtsand(+0x11b590) [0x563c86865590]
    from bin/dirtsand(+0x11b6e0) [0x563c868656e0]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fc86) [0x7f67a3751c86]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fcd1) [0x7f67a3751cd1]
    from bin/dirtsand(_ZNSt6threadD2Ev+0x21) [0x563c8680d8bf]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x3bec0) [0x7f67a2ee7ec0]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x3bf1a) [0x7f67a2ee7f1a]
    from bin/dirtsand(+0x11b6d0) [0x563c868656d0]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x37140) [0x7f67a2ee3140]
    from bin/dirtsand(_ZN3SDL5State5mergeERKS0_+0x28) [0x563c8688027c]
    from bin/dirtsand(_Z15start_game_hostj+0x7ee) [0x563c86853921]
    from bin/dirtsand(_Z14find_game_hostj+0xa9) [0x563c86846e7d]
    from bin/dirtsand(_Z7cb_joinR18GameClient_Private+0xbc) [0x563c86847028]
    from bin/dirtsand(_Z11cb_sockReadR18GameClient_Private+0x81) [0x563c86847841]
    from bin/dirtsand(_Z13wk_gameWorkerPv+0x171) [0x563c86847c31]
    from bin/dirtsand(_ZSt13__invoke_implIvPFvPvEJS0_EET_St14__invoke_otherOT0_DpOT1_+0x34) [0x563c86813a53]
    from bin/dirtsand(_ZSt8__invokeIPFvPvEJS0_EENSt15__invoke_resultIT_JDpT0_EE4typeEOS4_DpOS5_+0x4e) [0x563c86813071]
    from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEE9_M_invokeIJLm0ELm1EEEEDTcl8__invokespcl10_S_declvalIXT_EEEEESt12_Index_tupleIJXspT_EEE+0x43) [0x563c868142bb]
    from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEEclEv+0x2c) [0x563c8681425c]
    from bin/dirtsand(_ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFvPvES3_EEEEE6_M_runEv+0x1c) [0x563c8681422c]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xbc0ff) [0x7f67a377e0ff]
    from /lib/x86_64-linux-gnu/libpthread.so.0(+0x77fc) [0x7f67a32937fc]
    from /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f67a2fc0b5f]
Unhandled exception at bin/dirtsand(+0x11b590) [0x563c86865590]
    from bin/dirtsand(+0x11b6e0) [0x563c868656e0]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fc86) [0x7f67a3751c86]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fcd1) [0x7f67a3751cd1]
    from bin/dirtsand(_ZNSt6threadD2Ev+0x21) [0x563c8680d8bf]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x3bec0) [0x7f67a2ee7ec0]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x3bf1a) [0x7f67a2ee7f1a]
    from bin/dirtsand(+0x11b6ea) [0x563c868656ea]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fc86) [0x7f67a3751c86]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fcd1) [0x7f67a3751cd1]
    from bin/dirtsand(_ZNSt6threadD2Ev+0x21) [0x563c8680d8bf]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x3bec0) [0x7f67a2ee7ec0]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x3bf1a) [0x7f67a2ee7f1a]
    from bin/dirtsand(+0x11b6d0) [0x563c868656d0]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x37140) [0x7f67a2ee3140]
    from bin/dirtsand(_ZN3SDL5State5mergeERKS0_+0x28) [0x563c8688027c]
    from bin/dirtsand(_Z15start_game_hostj+0x7ee) [0x563c86853921]
    from bin/dirtsand(_Z14find_game_hostj+0xa9) [0x563c86846e7d]
    from bin/dirtsand(_Z7cb_joinR18GameClient_Private+0xbc) [0x563c86847028]
    from bin/dirtsand(_Z11cb_sockReadR18GameClient_Private+0x81) [0x563c86847841]
    from bin/dirtsand(_Z13wk_gameWorkerPv+0x171) [0x563c86847c31]
    from bin/dirtsand(_ZSt13__invoke_implIvPFvPvEJS0_EET_St14__invoke_otherOT0_DpOT1_+0x34) [0x563c86813a53]
    from bin/dirtsand(_ZSt8__invokeIPFvPvEJS0_EENSt15__invoke_resultIT_JDpT0_EE4typeEOS4_DpOS5_+0x4e) [0x563c86813071]
    from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEE9_M_invokeIJLm0ELm1EEEEDTcl8__invokespcl10_S_declvalIXT_EEEEESt12_Index_tupleIJXspT_EEE+0x43) [0x563c868142bb]
    from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEEclEv+0x2c) [0x563c8681425c]
    from bin/dirtsand(_ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFvPvES3_EEEEE6_M_runEv+0x1c) [0x563c8681422c]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xbc0ff) [0x7f67a377e0ff]
    from /lib/x86_64-linux-gnu/libpthread.so.0(+0x77fc) [0x7f67a32937fc]
    from /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f67a2fc0b5f]
Unhandled exception at bin/dirtsand(+0x11b590) [0x563c86865590]
    from bin/dirtsand(+0x11b6e0) [0x563c868656e0]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fc86) [0x7f67a3751c86]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fcd1) [0x7f67a3751cd1]
    from bin/dirtsand(_ZNSt6threadD2Ev+0x21) [0x563c8680d8bf]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x3bec0) [0x7f67a2ee7ec0]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x3bf1a) [0x7f67a2ee7f1a]
    from bin/dirtsand(+0x11b6ea) [0x563c868656ea]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fc86) [0x7f67a3751c86]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fcd1) [0x7f67a3751cd1]
    from bin/dirtsand(_ZNSt6threadD2Ev+0x21) [0x563c8680d8bf]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x3bec0) [0x7f67a2ee7ec0]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x3bf1a) [0x7f67a2ee7f1a]
    from bin/dirtsand(+0x11b6ea) [0x563c868656ea]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fc86) [0x7f67a3751c86]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0x8fcd1) [0x7f67a3751cd1]
    from bin/dirtsand(_ZNSt6threadD2Ev+0x21) [0x563c8680d8bf]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x3bec0) [0x7f67a2ee7ec0]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x3bf1a) [0x7f67a2ee7f1a]
    from bin/dirtsand(+0x11b6d0) [0x563c868656d0]
    from /lib/x86_64-linux-gnu/libc.so.6(+0x37140) [0x7f67a2ee3140]
    from bin/dirtsand(_ZN3SDL5State5mergeERKS0_+0x28) [0x563c8688027c]
    from bin/dirtsand(_Z15start_game_hostj+0x7ee) [0x563c86853921]
    from bin/dirtsand(_Z14find_game_hostj+0xa9) [0x563c86846e7d]
    from bin/dirtsand(_Z7cb_joinR18GameClient_Private+0xbc) [0x563c86847028]
    from bin/dirtsand(_Z11cb_sockReadR18GameClient_Private+0x81) [0x563c86847841]
    from bin/dirtsand(_Z13wk_gameWorkerPv+0x171) [0x563c86847c31]
    from bin/dirtsand(_ZSt13__invoke_implIvPFvPvEJS0_EET_St14__invoke_otherOT0_DpOT1_+0x34) [0x563c86813a53]
    from bin/dirtsand(_ZSt8__invokeIPFvPvEJS0_EENSt15__invoke_resultIT_JDpT0_EE4typeEOS4_DpOS5_+0x4e) [0x563c86813071]
    from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEE9_M_invokeIJLm0ELm1EEEEDTcl8__invokespcl10_S_declvalIXT_EEEEESt12_Index_tupleIJXspT_EEE+0x43) [0x563c868142bb]
    from bin/dirtsand(_ZNSt6thread8_InvokerISt5tupleIJPFvPvES2_EEEclEv+0x2c) [0x563c8681425c]
    from bin/dirtsand(_ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFvPvES3_EEEEE6_M_runEv+0x1c) [0x563c8681422c]
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xbc0ff) [0x7f67a377e0ff]
    from /lib/x86_64-linux-gnu/libpthread.so.0(+0x77fc) [0x7f67a32937fc]
    from /lib/x86_64-linux-gnu/libc.so.6(clone+0x3f) [0x7f67a2fc0b5f]

My configuration:

DS: built from latest source (tried with an older commit too; same result)
Client: Internal, Debug; built from source; startet with /LocalData and /SkipPreload
OS: Ubuntu server 17.04 x64

From dirtsand.ini:


File.Host = 127.0.0.1
Auth.Host = 192.168.0.29
Game.Host = 192.168.0.29

File.Root = /home/dirtsand/dirtsand-root/file
Auth.Root = /home/dirtsand/dirtsand-root/authdata
Sdl.Path = /home/dirtsand/dirtsand-root/file/SDL
Age.Path = /home/dirtsand/dirtsand-root/file/ages

FS setup
All files are unencrypted as I'm using the internal client. Personal.age and Personal.sdl exist in both authdata/ and files

+--dirtsand-root/
|   +--file/
|   |   +--SDL/
|   |   |   +--*.sdl
|   |   +--ages/
|   |   |   +--*.age
|   |   |   +--*.fni
|   +--authdata/
|   |   +--Python/
|   |   |   +--*.py
|   |   +--SDL/
|   |   |   +--*.sdl
|   +--bin/
|   |   +--dirtsand
|   |   +--dsData.sh
|   +--dirtsand.ini

Relicense under the GNU Affero General Public License (AGPL) v3+

The GNU Affero General Public License (AGPL) differs from the current GNU General Public License (GPL) in that it would require the full source used on any DIRTSAND server (or derivative work of DIRTSAND's sources) to be made available to anyone who can connect to the server software. This change is key in promoting openness and encouraging sharing of ideas, since it ensures the server software remains in the hands of the open source community.

This proposal is for the immediate relicensing of DIRTSAND to the Affero General Public License version 3 or later (AGPLv3+). For more information about the AGPLv3, please see http://www.gnu.org/licenses/agpl-3.0.html . In order to go ahead with this proposal, we need permission from everyone listed on https://github.com/H-uru/dirtsand/contributors to relicense their code under the new license.

Please respond below with a statement _clearly_ indicating if you will allow your code to be relicensed under the AGPLv3+.

Clothing SDL

The servers don't send clothing SDL about players already in the age when a new player links in.

NPC Clone Unloading Crash

Commit 450107d introduced a segmentation fault on gcc 5.4.0. If there are any NPC clones loaded by a game host, the segmentation fault occurs when unreffing and deleting the stored clone message. To reproduce this issue, link to sphere 1 of Ahnonay with loaded quabs, then link to Relto. DS will crash on link out.

Segfault at bin/dirtsand() [0x52a284] /home/adamj/dev/dirtsand/dsmain.cpp:89
    from bin/dirtsand() [0x52a3ac] /home/adamj/dev/dirtsand/dsmain.cpp:108 (discriminator 16)
    from /lib/x86_64-linux-gnu/libc.so.6(+0x354b0) [0x7f46ec4244b0]
    from bin/dirtsand(_ZN4MOUL9Creatable10safe_unrefEPS0_+0x49) [0x515828] /home/adamj/dev/dirtsand/PlasMOUL/creatable.h:44 (discriminator 1)
    from bin/dirtsand(_ZN4MOUL9Creatable5unrefEv+0x18) [0x515882] /home/adamj/dev/dirtsand/PlasMOUL/creatable.h:57
    from bin/dirtsand(_Z16dm_game_shutdownP16GameHost_Private+0x101) [0x50ee40] /home/adamj/dev/dirtsand/GameServ/GameHost.cpp:74 (discriminator 2)
    from bin/dirtsand(_Z11dm_gameHostP16GameHost_Private+0x5e) [0x51418c] /home/adamj/dev/dirtsand/GameServ/GameHost.cpp:810
    from bin/dirtsand(_ZNSt12_Bind_simpleIFPFvP16GameHost_PrivateES1_EE9_M_invokeIJLm0EEEEvSt12_Index_tupleIJXspT_EEE+0x40) [0x523708] /usr/include/c++/5/functional:1532
    from bin/dirtsand(_ZNSt12_Bind_simpleIFPFvP16GameHost_PrivateES1_EEclEv+0x2c) [0x523612] /usr/include/c++/5/functional:1520
    from bin/dirtsand(_ZNSt6thread5_ImplISt12_Bind_simpleIFPFvP16GameHost_PrivateES3_EEE6_M_runEv+0x1c) [0x5235a2] /usr/include/c++/5/thread:115
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb8c80) [0x7f46ecca3c80]
    from /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7f46ec7bf6ba]
    from /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f46ec4f582d]
Segmentation fault

French Problem

On the current release of the Gehn Shard (28):

If User A is playing French Uru, is standing in the Watcher's Pub, and is reading the journal. Then, if User B (playing in any language) sends user A a PM, then user B will crash on receiving the automated AFK response from user A.

SDL Descriptor Version

If an SDL Decriptor is missing its version, DirtSand will happily use heap garbage in its descriptor structure. This results in producing a corrupted/invalid SDL blob and linking to the SDL DESC PROBLEM age.

Command to list accounts or avatars

This is a request to have added a command that lists all created accounts in the server console. Alternatively (or in addition to?), it could display all created avatars, possibly by account. An example of how this might appear follows.

ds-918> acctlist
    Account Name | Date Created | Last login       | Active?    
    dave         | 12/07/2021   | 12/08/2021 08:00 | No
ds-918> avlist dave
    Avatar Name (KI#)      | Date Created | Last Login       | Active?
    Briggs (10104)         | 12/07/2021   | 12/07/2021 20:30 | No
    Big Challenges (10208) | 12/07/2021   | 12/07/2021 20:35 | No

Bahro Cave Black Screen

Linking to the Bahro Caves (specifically the BlueSpiral Cave) end at the black screen age. This is probably related to DS not respecting kBasicLink.

Vault node text columns are too short for long KI text notes

DIRTSAND declares the vault node Text_1/Text_2 columns as character varying(1024), but the client allows KI text notes to be (roughly) 2048 characters long.

This means that a player with a regular client can type a moderately long KI text note that DIRTSAND is unable to save. When that happens, the player has no indication that anything went wrong - the client accepts the text and caches it locally, but the server silently fails to save it to the vault. The player can only notice the problem after the client re-fetches the vault node from the server, i. e. after logging out and back in.

The only indication of the error is a log message on the server side:

.../dirtsand/AuthServ/AuthVault.cpp:1005:
    Postgres UPDATE error: ERROR:  value too long for type character varying(1024)

The same problem also applies to the neighborhood description text, which is also stored in Text_1 and AFAICT has no client-side limit at all.

Gameserver SDL is not merged with global/vault SDL

The gameserver SDL needs to be merged server-side with the age-vault SDL and the global SDL. The exact details of which sections of each blob override the others aren't clear just yet. More testing may be needed.

SubAges are not created properly

When a SubAge is created, the parent should be made a SubAge of the child. (Insert an AgeLink to the parent in the SubAges folder of the child) Currently SubAge functionality only works by virtue of the fact that the client will attempt to create the parent age using the correct GUID if it cannot find the appropriate SubAge.

Bug: Crash the sever

Hi:
I have DirstSand running on Fordora Core 14 64-bit. I have a client which I have not modified must built from source to access the server. Whenever I walk with the mouse the sever crashes, the console looks like this:
Unhandled exception at bin/dirtsand() [0x4c3a95]
from bin/dirtsand() [0x4c3b59]
from /usr/lib64/libstdc++.so.6() [0x3069eba2a6]
from /usr/lib64/libstdc++.so.6() [0x3069eba2d3]
from /usr/lib64/libstdc++.so.6(__cxa_rethrow+0x46) [0x3069eba426]
from bin/dirtsand(_ZN4MOUL7Factory14WriteCreatableEPN2DS6StreamEPNS_9CreatableE+0) [0x4efef8]
from bin/dirtsand(_ZN4MOUL7Factory4ReadINS_10NetMessageEEEPT_PN2DS6StreamE+0x18) [0x4b616f]
from bin/dirtsand(_Z15dm_game_messageP16GameHost_PrivateP21Game_PropagateMessage+0x67) [0x4b1762]
from bin/dirtsand(_Z11dm_gameHostPv+0xb9) [0x4b2318]
from /lib64/libpthread.so.0() [0x305fe06ccb]
from /lib64/libc.so.6(clone+0x6d) [0x305fae0c2d]
Aborted (core dumped)

plEnableMsg is not implemented

This breaks the telescope in the Neighborhood. Once someone else uses it, the plEnableMsg sent to reenable the clickable is eaten. There are obviously more instances of this, but this is just the one I noticed in my testing.

Force LF line endings on bash files with gitattributes

The README section on Dockersand states that you need to be careful about line endings on Windows:

NOTE: Please ensure you are using git config core.autocrlf false if on Windows. Otherwise, the bash script files can get corrupted with the wrong line endings and your server container will fail to start.

Per @dgelessus:

a better solution would be to add a .gitattributes file that declares the appropriate newline mode for the .sh files. That way, users don't have to change their Git configs.

Should be able to do something like this: *.sh text eol=lf

Confirm if Dockersand .bat and .ps1 need executable bit set

This is a minor annoyance on Linux, but might turn out to be necessary and not worth fixing.

When I type ./do and hit tab in my terminal, it cannot autocomplete to ./dockersand.sh because it sees 3 files with the executable (+x) bit set and doesn't know which one to use.

I'm reasonably sure Windows doesn't use/preserve that attribute, so I'm pretty certain we don't need it set on dockersand.bat, but I'm less clear about the dockersand.ps1 PowerShell file (since hypothetically someone could choose to run PowerShell on Linux or macOS)

Public Ages owners not set correctly

When a user creates a public age, the total population count in the database is set to 0. This causes Neighborhoods to be filtered out in the nexus. We should really count the number of refs in the database for the AgeOwners folder.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.