<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tibia/querymanager/src/connections.cc, branch master</title>
<subtitle>Tibia 7.7 compatible query manager</subtitle>
<id>https://kaplar.net/tibia/querymanager/atom?h=master</id>
<link rel='self' href='https://kaplar.net/tibia/querymanager/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://kaplar.net/tibia/querymanager/'/>
<updated>2025-11-18T18:17:29Z</updated>
<entry>
<title>fix problem with connection input + allow login server to query worlds</title>
<updated>2025-11-18T18:17:29Z</updated>
<author>
<name>fusion32</name>
<email>marcopuzziello@gmail.com</email>
</author>
<published>2025-11-18T18:17:29Z</published>
<link rel='alternate' type='text/html' href='https://kaplar.net/tibia/querymanager/commit/?id=8c2a8461db64e92ac09f202589009ee05c69626d'/>
<id>urn:sha1:8c2a8461db64e92ac09f202589009ee05c69626d</id>
<content type='text'>
  There was a small problem with how we computed the size of the
packet "header". It was unlikely to manifest tho, because it's at
the beginning of a TCP message and TCP segments aren't that small,
unless the whole message is that small.
  I'm also allowing login servers to query for world information
to allow a basic form of `STATUS` to be implemented.
</content>
</entry>
<entry>
<title>lower monotonic uptime resolution from MILLISECONDS to SECONDS</title>
<updated>2025-10-16T04:46:10Z</updated>
<author>
<name>fusion32</name>
<email>marcopuzziello@gmail.com</email>
</author>
<published>2025-10-16T04:35:10Z</published>
<link rel='alternate' type='text/html' href='https://kaplar.net/tibia/querymanager/commit/?id=95022ca95b1d2792bae447d90694dcc0d67b9de2'/>
<id>urn:sha1:95022ca95b1d2792bae447d90694dcc0d67b9de2</id>
<content type='text'>
  The monotonic uptime was used exclusively with caches and having
a resolution of SECONDS allows it to be stored as an int without
risk of wrapping (~68 years). Using MILLISECONDS meant that it
would wrap after ~25 days which is totally possible and EXPECTED.

  Just as an example, the small test server I ran for about 1 month
had ZERO downtime on the QueryManager except for when I manually
restarted it. It was probably very close to wrapping when I took
it down.
</content>
</entry>
<entry>
<title>organize database configs and schema files + compilation guards</title>
<updated>2025-10-10T18:22:27Z</updated>
<author>
<name>fusion32</name>
<email>marcopuzziello@gmail.com</email>
</author>
<published>2025-10-10T18:14:02Z</published>
<link rel='alternate' type='text/html' href='https://kaplar.net/tibia/querymanager/commit/?id=46c653293381dcc1188013d3e2c3f7587a199dc4'/>
<id>urn:sha1:46c653293381dcc1188013d3e2c3f7587a199dc4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>switch to blocking poll + fix config, signals, time, non-game login</title>
<updated>2025-10-10T05:17:19Z</updated>
<author>
<name>fusion32</name>
<email>marcopuzziello@gmail.com</email>
</author>
<published>2025-10-10T05:17:19Z</published>
<link rel='alternate' type='text/html' href='https://kaplar.net/tibia/querymanager/commit/?id=cc4873e33866ba86561774a7e55449d59367661e'/>
<id>urn:sha1:cc4873e33866ba86561774a7e55449d59367661e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>update sqlite driver + impl INTERNAL_RESOLVE_WORLD</title>
<updated>2025-10-09T06:45:58Z</updated>
<author>
<name>fusion32</name>
<email>marcopuzziello@gmail.com</email>
</author>
<published>2025-10-09T06:45:58Z</published>
<link rel='alternate' type='text/html' href='https://kaplar.net/tibia/querymanager/commit/?id=9f151fa13022e345e45aa5673e0e168b0ce96cb6'/>
<id>urn:sha1:9f151fa13022e345e45aa5673e0e168b0ce96cb6</id>
<content type='text'>
  With this change the game server is able to login again but we
still need to re-implement/re-fit the other queries for it to
properly startup.
</content>
</entry>
<entry>
<title>worker initialization robustness + query processing</title>
<updated>2025-10-08T02:37:24Z</updated>
<author>
<name>fusion32</name>
<email>marcopuzziello@gmail.com</email>
</author>
<published>2025-10-08T01:28:46Z</published>
<link rel='alternate' type='text/html' href='https://kaplar.net/tibia/querymanager/commit/?id=708bd2e3cf0a7aa825e6da96caaec55bd271f896'/>
<id>urn:sha1:708bd2e3cf0a7aa825e6da96caaec55bd271f896</id>
<content type='text'>
</content>
</entry>
<entry>
<title>make connections properly handle async queries</title>
<updated>2025-10-07T21:50:02Z</updated>
<author>
<name>fusion32</name>
<email>marcopuzziello@gmail.com</email>
</author>
<published>2025-10-07T21:50:02Z</published>
<link rel='alternate' type='text/html' href='https://kaplar.net/tibia/querymanager/commit/?id=aa31732158d3e457dfe630f3b2e56f53de89e2b1'/>
<id>urn:sha1:aa31732158d3e457dfe630f3b2e56f53de89e2b1</id>
<content type='text'>
  This moves queries from `src/connections.cc` to `src/query.cc` and
adds a few missing details. The only thing left is to review query
processing and tie database operations to the `TDatabase` struct.
</content>
</entry>
<entry>
<title>sketch out new query queue/worker for async queries</title>
<updated>2025-10-06T22:41:32Z</updated>
<author>
<name>fusion32</name>
<email>marcopuzziello@gmail.com</email>
</author>
<published>2025-10-06T22:41:32Z</published>
<link rel='alternate' type='text/html' href='https://kaplar.net/tibia/querymanager/commit/?id=f3c2d53f1837a7bd8e9e1517579b7354af91ef8c'/>
<id>urn:sha1:f3c2d53f1837a7bd8e9e1517579b7354af91ef8c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix RIGHT check with notations and ip banishments</title>
<updated>2025-09-13T13:30:50Z</updated>
<author>
<name>fusion32</name>
<email>marcopuzziello@gmail.com</email>
</author>
<published>2025-09-13T13:30:50Z</published>
<link rel='alternate' type='text/html' href='https://kaplar.net/tibia/querymanager/commit/?id=875b584b090680858393bb24dc58fa85e1a434ce'/>
<id>urn:sha1:875b584b090680858393bb24dc58fa85e1a434ce</id>
<content type='text'>
</content>
</entry>
<entry>
<title>remove ParseOptionalIPAddress</title>
<updated>2025-09-13T05:20:28Z</updated>
<author>
<name>fusion32</name>
<email>marcopuzziello@gmail.com</email>
</author>
<published>2025-09-13T05:20:28Z</published>
<link rel='alternate' type='text/html' href='https://kaplar.net/tibia/querymanager/commit/?id=748f676ea6474053e592f47804da27d4b9e49041'/>
<id>urn:sha1:748f676ea6474053e592f47804da27d4b9e49041</id>
<content type='text'>
  I had just added it in the last commit but it made its use case
non-obvious. Checking whether the string is empty before trying to
parse an IP address is clearer than calling some function that has
its own concept of what an empty address is.
</content>
</entry>
</feed>
