static void register_send_count_request(NETADDR addr) { NETCHUNK packet; packet.client_id = -1; packet.address = addr; packet.flags = NETSENDFLAG_CONNLESS; packet.data_size = sizeof(SERVERBROWSE_GETCOUNT); packet.data = SERVERBROWSE_GETCOUNT; netserver_send(net, &packet); }
static void register_send_fwcheckresponse(NETADDR *addr) { NETCHUNK packet; packet.client_id = -1; packet.address = *addr; packet.flags = NETSENDFLAG_CONNLESS; packet.data_size = sizeof(SERVERBROWSE_FWRESPONSE); packet.data = SERVERBROWSE_FWRESPONSE; netserver_send(net, &packet); }
int server_send_msg(int client_id) { const MSG_INFO *info = msg_get_info(); NETCHUNK packet; if(!info) return -1; mem_zero(&packet, sizeof(NETCHUNK)); packet.client_id = client_id; packet.data = info->data; packet.data_size = info->size; if(info->flags&MSGFLAG_VITAL) packet.flags |= NETSENDFLAG_VITAL; if(info->flags&MSGFLAG_FLUSH) packet.flags |= NETSENDFLAG_FLUSH; /* write message to demo recorder */ if(!(info->flags&MSGFLAG_NORECORD)) demorec_record_message(info->data, info->size); if(!(info->flags&MSGFLAG_NOSEND)) { if(client_id == -1) { /* broadcast */ int i; for(i = 0; i < MAX_CLIENTS; i++) if(clients[i].state == SRVCLIENT_STATE_INGAME) { packet.client_id = i; netserver_send(net, &packet); } } else netserver_send(net, &packet); } return 0; }
static void register_send_heartbeat(NETADDR addr) { static unsigned char data[sizeof(SERVERBROWSE_HEARTBEAT) + 2]; unsigned short port = config.sv_port; NETCHUNK packet; mem_copy(data, SERVERBROWSE_HEARTBEAT, sizeof(SERVERBROWSE_HEARTBEAT)); packet.client_id = -1; packet.address = addr; packet.flags = NETSENDFLAG_CONNLESS; packet.data_size = sizeof(SERVERBROWSE_HEARTBEAT) + 2; packet.data = &data; /* supply the set port that the master can use if it has problems */ if(config.sv_external_port) port = config.sv_external_port; data[sizeof(SERVERBROWSE_HEARTBEAT)] = port >> 8; data[sizeof(SERVERBROWSE_HEARTBEAT)+1] = port&0xff; netserver_send(net, &packet); }