src/network/network_client.cpp
changeset 5954 5100190669ac
parent 5875 4a1391019791
child 6123 87aa45c64f8f
equal deleted inserted replaced
5953:7000c5bdd70b 5954:5100190669ac
   466 			return NETWORK_RECV_STATUS_SAVEGAME;
   466 			return NETWORK_RECV_STATUS_SAVEGAME;
   467 		}
   467 		}
   468 
   468 
   469 		_frame_counter = _frame_counter_server = _frame_counter_max = NetworkRecv_uint32(MY_CLIENT, p);
   469 		_frame_counter = _frame_counter_server = _frame_counter_max = NetworkRecv_uint32(MY_CLIENT, p);
   470 
   470 
   471 		_network_join_status = NETWORK_JOIN_STATUS_DOWNLOADING;
       
   472 		_network_join_kbytes = 0;
   471 		_network_join_kbytes = 0;
   473 		_network_join_kbytes_total = NetworkRecv_uint32(MY_CLIENT, p) / 1024;
   472 		_network_join_kbytes_total = NetworkRecv_uint32(MY_CLIENT, p) / 1024;
   474 		InvalidateWindow(WC_NETWORK_STATUS_WINDOW, 0);
   473 
       
   474 		/* If the network connection has been closed due to loss of connection
       
   475 		 * or when _network_join_kbytes_total is 0, the join status window will
       
   476 		 * do a division by zero. When the connection is lost, we just return
       
   477 		 * that. If kbytes_total is 0, the packet must be malformed as a
       
   478 		 * savegame less than 1 kilobyte is practically impossible. */
       
   479 		if (MY_CLIENT->has_quit) return NETWORK_RECV_STATUS_CONN_LOST;
       
   480 		if (_network_join_kbytes_total == 0) return NETWORK_RECV_STATUS_MALFORMED_PACKET;
       
   481 
       
   482 		_network_join_status = NETWORK_JOIN_STATUS_DOWNLOADING;
       
   483  		InvalidateWindow(WC_NETWORK_STATUS_WINDOW, 0);
   475 
   484 
   476 		// The first packet does not contain any more data
   485 		// The first packet does not contain any more data
   477 		return NETWORK_RECV_STATUS_OKAY;
   486 		return NETWORK_RECV_STATUS_OKAY;
   478 	}
   487 	}
   479 
   488