added forcing pointer-style global animations to stay inside window area
[rocksndiamonds.git] / src / network.c
index 2730c7b01967842e533a1e2a5b26df25323e93b1..ded92acf5744a6ac9a293fb54064b2660dd3f385 100644 (file)
@@ -188,12 +188,9 @@ static void StartNetworkServer(int port)
   static int p;
 
   p = port;
-#if defined(TARGET_SDL2)
+
   server_thread = SDL_CreateThread(NetworkServerThread,
                                   "NetworkServerThread", &p);
-#else
-  server_thread = SDL_CreateThread(NetworkServerThread, &p);
-#endif
   network_server = TRUE;
 }
 
@@ -873,7 +870,11 @@ static void Handle_OP_LEVEL_FILE(void)
   if (hasPathSeparator(file_info->basename))
     Error(ERR_EXIT, "protocol error: invalid filename from network client");
 
-  getNetworkBufferFile(read_buffer, file_info->filename);
+  int num_bytes = getNetworkBufferFile(read_buffer, file_info->filename);
+
+  // if received level file is empty, remove it (as being non-existent)
+  if (num_bytes == 0)
+    remove(file_info->filename);
 
   use_custom_template = getNetworkBuffer8BitInteger(read_buffer);
   if (use_custom_template)
@@ -887,6 +888,10 @@ static void Handle_OP_LEVEL_FILE(void)
       Error(ERR_EXIT, "protocol error: invalid filename from network client");
 
     getNetworkBufferFile(read_buffer, tmpl_info->filename);
+
+    // if received level file is empty, use level template file instead
+    if (num_bytes == 0)
+      setString(&file_info->filename,  tmpl_info->filename);
   }
 
   network_level.leveldir_identifier = leveldir_identifier;