MTS: only used in this file
| 1522 | |
| 1523 | // MTS: only used in this file |
| 1524 | void nw_HandleConnectResponse(uint8_t *data, int len, network_address *server_addr) { |
| 1525 | |
| 1526 | int i; |
| 1527 | static reliable_header ack_header; |
| 1528 | static reliable_header conn_header; |
| 1529 | SOCKADDR rcv_addr; |
| 1530 | |
| 1531 | memcpy(&ack_header, data, len); |
| 1532 | |
| 1533 | if (NP_TCP == server_addr->connection_type) { |
| 1534 | SOCKADDR_IN *inaddr = (SOCKADDR_IN *)&rcv_addr; |
| 1535 | memcpy(&inaddr->sin_addr, &server_addr->address, 4); |
| 1536 | inaddr->sin_port = htons(server_addr->port); |
| 1537 | } |
| 1538 | |
| 1539 | mprintf(0, "Got a connect response!\n"); |
| 1540 | if (ack_header.type == RNT_ACK) { |
| 1541 | int *acknum = (int *)&ack_header.data; |
| 1542 | if (INTEL_INT(*acknum) == CONNECTSEQ) { |
| 1543 | // if(memcmp(&rcv_addr,&sockaddr,sizeof(SOCKADDR))==0) |
| 1544 | { |
| 1545 | for (i = 1; i < MAXRELIABLESOCKETS; i++) { |
| 1546 | if (reliable_sockets[i].status == RNF_UNUSED) { |
| 1547 | // Add the new connection here. |
| 1548 | memset(&reliable_sockets[i], 0, sizeof(reliable_socket)); |
| 1549 | reliable_sockets[i].connection_type = server_addr->connection_type; |
| 1550 | memcpy(&reliable_sockets[i].net_addr, server_addr, sizeof(network_address)); |
| 1551 | reliable_sockets[i].last_packet_received = timer_GetTime(); |
| 1552 | memcpy(&reliable_sockets[i].addr, &rcv_addr, sizeof(SOCKADDR)); |
| 1553 | reliable_sockets[i].status = RNF_LIMBO; |
| 1554 | Net_connect_socket_id = i; |
| 1555 | reliable_sockets[i].last_sent = timer_GetTime(); |
| 1556 | reliable_sockets[i].waiting_packet_number = -1; |
| 1557 | mprintf(0, "Succesfully connected to server in nw_ConnectToServer().\n"); |
| 1558 | // Now send I_AM_HERE packet |
| 1559 | conn_header.type = RNT_I_AM_HERE; |
| 1560 | conn_header.seq = INTEL_SHORT((int16_t)(~CONNECTSEQ)); |
| 1561 | conn_header.data_len = INTEL_SHORT((int16_t)0); |
| 1562 | serverconn = i; |
| 1563 | first_sent_iamhere = timer_GetTime(); |
| 1564 | last_sent_iamhere = timer_GetTime(); |
| 1565 | |
| 1566 | int rcode = |
| 1567 | nw_SendWithID(NWT_RELIABLE, (uint8_t *)&conn_header, RELIABLE_PACKET_HEADER_ONLY_SIZE, server_addr); |
| 1568 | // int rcode = sendto(typeless_sock,(char |
| 1569 | // *)&conn_header,RELIABLE_PACKET_HEADER_ONLY_SIZE,0,addr,sizeof(SOCKADDR)); |
| 1570 | if (rcode == SOCKET_ERROR) { |
| 1571 | Net_connect_socket_id = INVALID_SOCKET; |
| 1572 | reliable_sockets[i].status = RNF_UNUSED; |
| 1573 | memset(&reliable_sockets[i], 0, sizeof(reliable_socket)); |
| 1574 | mprintf(0, "Unable to send packet in nw_ConnectToServer()\n"); |
| 1575 | |
| 1576 | Net_connect_sequence = R_NET_SEQUENCE_FAILED; |
| 1577 | return; |
| 1578 | } |
| 1579 | reliable_sockets[i].last_packet_sent = timer_GetTime(); |
| 1580 | /* |
| 1581 | float f; |
no test coverage detected