- fd_out = open(world.path_server_in, O_WRONLY | O_NONBLOCK);
- if (fd_out > 0)
- {
- break;
- }
- exit_err(-1 == fd_out && ENXIO != errno, "Server fifo not found.");
- j++;
+ last_server_answer_time = time(0);
+ return;
+ }
+ time_t now = time(0);
+ if (ping_sent && last_server_answer_time > now - 3) /* Re-set if last */
+ { /* ping was answered */
+ ping_sent = 0; /* with server */
+ return; /* activity. */
+ }
+ if (!ping_sent && last_server_answer_time < now - 3)
+ {
+ send("PING");
+ ping_sent = 1;
+ return;
+ }
+ exit_err(last_server_answer_time < now - 6, "Server not answering.");
+}
+
+
+
+static void nl_append_string(char * append, char ** string)
+{
+ char * err = "too large sizes";
+ exit_trouble(UINT32_MAX < strlen(append), __func__, err);
+ uint32_t new_size = strlen(append);
+ uint32_t old_size = 0;
+ uint8_t add_nl = 0;
+ if (*string)
+ {
+ exit_trouble(UINT32_MAX < new_size + strlen(*string), __func__, err);
+ old_size = strlen(*string);
+ add_nl = 1;