static qboolean _ServerList_CompareStr( const char *A, serverlist_maskop_t op, const char *B )
{
+ int i;
char bufferA[ 256 ], bufferB[ 256 ]; // should be more than enough
- strcpy( bufferA, A );
- strlwr( bufferA );
-
- strcpy( bufferB, B );
- strlwr( bufferB );
+ for (i = 0;i < (int)sizeof(bufferA)-1 && A[i];i++)
+ bufferA[i] = (A[i] >= 'A' && A[i] <= 'Z') ? (A[i] + 'a' - 'A') : A[i];
+ bufferA[i] = 0;
+ for (i = 0;i < (int)sizeof(bufferB)-1 && B[i];i++)
+ bufferB[i] = (B[i] >= 'A' && B[i] <= 'Z') ? (B[i] + 'a' - 'A') : B[i];
+ bufferB[i] = 0;
// Same here, also using an intermediate & final return would be more appropriate
// A info B mask
switch( op ) {
- case SLMO_CONTAINS:
+ case SLMO_CONTAINS:
return *bufferB && !!strstr( bufferA, bufferB ); // we want a real bool
case SLMO_NOTCONTAIN:
return !*bufferB || !strstr( bufferA, bufferB );
{
LHNETADDRESS_ToString(peeraddress, addressstring2, sizeof(addressstring2), true);
Con_Printf("LHNET_Read(%p (%s), %p, %i, %p) = %i from %s:\n", mysocket, addressstring, data, maxlength, peeraddress, length, addressstring2);
- Com_HexDumpToConsole(data, length);
+ Com_HexDumpToConsole((qbyte *)data, length);
}
else
Con_Printf("LHNET_Read(%p (%s), %p, %i, %p) = %i\n", mysocket, addressstring, data, maxlength, peeraddress, length);
LHNETADDRESS_ToString(LHNET_AddressFromSocket(mysocket), addressstring, sizeof(addressstring), true);
LHNETADDRESS_ToString(peeraddress, addressstring2, sizeof(addressstring2), true);
Con_Printf("LHNET_Write(%p (%s), %p, %i, %p (%s)) = %i%s\n", mysocket, addressstring, data, length, peeraddress, addressstring2, length, ret == length ? "" : " (ERROR)");
- Com_HexDumpToConsole(data, length);
+ Com_HexDumpToConsole((qbyte *)data, length);
}
return ret;
}
int NetConn_WriteString(lhnetsocket_t *mysocket, const char *string, const lhnetaddress_t *peeraddress)
{
// note this does not include the trailing NULL because we add that in the parser
- return NetConn_Write(mysocket, string, strlen(string), peeraddress);
+ return NetConn_Write(mysocket, string, (int)strlen(string), peeraddress);
}
int NetConn_SendReliableMessage(netconn_t *conn, sizebuf_t *data)
//#ifdef DEBUG
if (data->cursize == 0)
- Sys_Error("Datagram_SendMessage: zero length message\n");
+ {
+ Con_Printf ("Datagram_SendMessage: zero length message\n");
+ return -1;
+ }
if (data->cursize > (int)sizeof(conn->sendMessage))
- Sys_Error("Datagram_SendMessage: message too big (%u > %u)\n", data->cursize, sizeof(conn->sendMessage));
+ {
+ Con_Printf ("Datagram_SendMessage: message too big (%u > %u)\n", data->cursize, sizeof(conn->sendMessage));
+ return -1;
+ }
if (conn->canSend == false)
- Sys_Error("SendMessage: called with canSend == false\n");
+ {
+ Con_Printf ("SendMessage: called with canSend == false\n");
+ return -1;
+ }
//#endif
memcpy(conn->sendMessage, data->data, data->cursize);
packetLen = NET_HEADERSIZE + dataLen;
- header = (void *)sendbuffer;
+ header = (unsigned int *)sendbuffer;
header[0] = BigLong(packetLen | (NETFLAG_DATA | eom));
header[1] = BigLong(conn->sendSequence);
memcpy(sendbuffer + NET_HEADERSIZE, conn->sendMessage, dataLen);
packetLen = NET_HEADERSIZE + dataLen;
- header = (void *)sendbuffer;
+ header = (unsigned int *)sendbuffer;
header[0] = BigLong(packetLen | (NETFLAG_DATA | eom));
header[1] = BigLong(conn->sendSequence);
memcpy(sendbuffer + NET_HEADERSIZE, conn->sendMessage, dataLen);
packetLen = NET_HEADERSIZE + dataLen;
- header = (void *)sendbuffer;
+ header = (unsigned int *)sendbuffer;
header[0] = BigLong(packetLen | (NETFLAG_DATA | eom));
header[1] = BigLong(conn->sendSequence - 1);
memcpy(sendbuffer + NET_HEADERSIZE, conn->sendMessage, dataLen);
int NetConn_SendUnreliableMessage(netconn_t *conn, sizebuf_t *data)
{
int packetLen;
- int *header;
+ unsigned int *header;
packetLen = NET_HEADERSIZE + data->cursize;
//#ifdef DEBUG
if (data->cursize == 0)
- Sys_Error("Datagram_SendUnreliableMessage: zero length message\n");
+ {
+ Con_Printf ("Datagram_SendUnreliableMessage: zero length message\n");
+ return -1;
+ }
if (packetLen > (int)sizeof(sendbuffer))
- Sys_Error("Datagram_SendUnreliableMessage: message too big %u\n", data->cursize);
+ {
+ Con_Printf ("Datagram_SendUnreliableMessage: message too big %u\n", data->cursize);
+ return -1;
+ }
//#endif
- header = (void *)sendbuffer;
+ header = (unsigned int *)sendbuffer;
header[0] = BigLong(packetLen | NETFLAG_UNRELIABLE);
header[1] = BigLong(conn->unreliableSendSequence);
memcpy(sendbuffer + NET_HEADERSIZE, data->data, data->cursize);
{
lhnetaddress_t address;
lhnetsocket_t *s;
+ int port;
char addressstring2[1024];
- if (LHNETADDRESS_FromString(&address, addressstring, defaultport))
+
+ for (port = defaultport; port <= defaultport + 100; port++)
{
- if ((s = LHNET_OpenSocket_Connectionless(&address)))
+ if (LHNETADDRESS_FromString(&address, addressstring, port))
{
- sv_sockets[sv_numsockets++] = s;
- LHNETADDRESS_ToString(LHNET_AddressFromSocket(s), addressstring2, sizeof(addressstring2), true);
- Con_Printf("Server listening on address %s\n", addressstring2);
+ if ((s = LHNET_OpenSocket_Connectionless(&address)))
+ {
+ sv_sockets[sv_numsockets++] = s;
+ LHNETADDRESS_ToString(LHNET_AddressFromSocket(s), addressstring2, sizeof(addressstring2), true);
+ Con_Printf("Server listening on address %s\n", addressstring2);
+ break;
+ }
+ else
+ {
+ LHNETADDRESS_ToString(&address, addressstring2, sizeof(addressstring2), true);
+ Con_Printf("Server failed to open socket on address %s\n", addressstring2);
+ }
}
else
{
- LHNETADDRESS_ToString(&address, addressstring2, sizeof(addressstring2), true);
- Con_Printf("Server failed to open socket on address %s\n", addressstring2);
+ Con_Printf("Server unable to parse address %s\n", addressstring);
+ // if it cant parse one address, it wont be able to parse another for sure
+ break;
}
}
- else
- Con_Printf("Server unable to parse address %s\n", addressstring);
}
void NetConn_OpenServerPorts(int opennetports)
netconn_t *NetConn_Open(lhnetsocket_t *mysocket, lhnetaddress_t *peeraddress)
{
netconn_t *conn;
- conn = Mem_Alloc(netconn_mempool, sizeof(*conn));
+ conn = (netconn_t *)Mem_Alloc(netconn_mempool, sizeof(*conn));
conn->mysocket = mysocket;
conn->peeraddress = *peeraddress;
conn->canSend = true;
conn->lastMessageTime = realtime;
conn->timeout = realtime + net_messagetimeout.value;
conn->receiveSequence++;
- if( conn->receiveMessageLength + length <= sizeof( conn->receiveMessage ) ) {
+ if( conn->receiveMessageLength + length <= (int)sizeof( conn->receiveMessage ) ) {
memcpy(conn->receiveMessage + conn->receiveMessageLength, data, length);
conn->receiveMessageLength += length;
} else {
if (developer.integer)
Con_Printf("Datagram_ParseConnectionless: received CCREP_REJECT from %s.\n", addressstring2);
cls.connect_trying = false;
- M_Update_Return_Reason(data);
+ M_Update_Return_Reason((char *)data);
break;
#if 0
case CCREP_SERVER_INFO:
int left;
ptr = out_msg + length;
- left = out_size - length;
+ left = (int)out_size - length;
for (i = 0;i < (unsigned int)svs.maxclients;i++)
{