Fixed segfault on networked client.

This commit is contained in:
2025-04-21 20:33:31 -05:00
parent 923726902b
commit 6b523301ab

View File

@ -29,7 +29,10 @@ errorret_t networkedClientConnect(
// Create a socket // Create a socket
client->networked.socket = socket(AF_INET, SOCK_STREAM, 0); client->networked.socket = socket(AF_INET, SOCK_STREAM, 0);
if(client->networked.socket < 0) { if(client->networked.socket < 0) {
return error("Failed to create socket %s", strerror(errno)); return error(
"Failed to create socket %s",
errno > 0 ? strerror(errno) : "Unknown error"
);
} }
// Set ip address and port // Set ip address and port
@ -40,7 +43,11 @@ errorret_t networkedClientConnect(
ret = inet_pton(AF_INET, ip, &client->networked.address.sin_addr); ret = inet_pton(AF_INET, ip, &client->networked.address.sin_addr);
if(ret <= 0) { if(ret <= 0) {
close(client->networked.socket); close(client->networked.socket);
return error("Invalid or bad IP address %s: %s", ip, strerror(errno)); return error(
"Invalid or bad IP address %s: %s",
ip,
errno > 0 ? strerror(errno) : "Unknown error"
);
} }
// Connect to the server // Connect to the server
@ -112,7 +119,10 @@ errorret_t networkedClientConnect(
close(client->networked.socket); close(client->networked.socket);
pthread_mutex_destroy(&client->networked.readLock); pthread_mutex_destroy(&client->networked.readLock);
pthread_mutex_destroy(&client->networked.writeLock); pthread_mutex_destroy(&client->networked.writeLock);
return error("Failed to create client read thread %s", strerror(errno)); return error(
"Failed to create client read thread %s",
errno > 0 ? strerror(errno) : "Unknown error"
);
} }
// Wait for the read thread to signal that it has started // Wait for the read thread to signal that it has started
@ -134,7 +144,10 @@ errorret_t networkedClientConnect(
close(client->networked.socket); close(client->networked.socket);
pthread_mutex_destroy(&client->networked.readLock); pthread_mutex_destroy(&client->networked.readLock);
pthread_mutex_destroy(&client->networked.writeLock); pthread_mutex_destroy(&client->networked.writeLock);
return error("Failed to create client write thread %s", strerror(errno)); // Updated error message return error(
"Failed to create client write thread %s",
errno > 0 ? strerror(errno) : "Unknown error"
);
} }
return ERROR_OK; return ERROR_OK;
@ -252,7 +265,10 @@ errorret_t networkedClientReadPacket(
0 0
); );
if(read != sizeof(packettype_t)) { if(read != sizeof(packettype_t)) {
return error("Failed to read packet header %s", strerror(errno)); return error(
"Failed to read packet header %s",
errno > 0 ? strerror(errno) : "Unknown error"
);
} }
packet->type = *(packettype_t *)buffer; packet->type = *(packettype_t *)buffer;
@ -265,7 +281,10 @@ errorret_t networkedClientReadPacket(
0 0
); );
if(read != sizeof(uint32_t)) { if(read != sizeof(uint32_t)) {
return error("Failed to read packet length %s", strerror(errno)); return error(
"Failed to read packet length %s",
errno > 0 ? strerror(errno) : "Unknown error"
);
} }
if(read > sizeof(packetdata_t)) { if(read > sizeof(packetdata_t)) {
return error("Packet length is too large"); return error("Packet length is too large");
@ -280,7 +299,10 @@ errorret_t networkedClientReadPacket(
0 0
); );
if(read != packet->length) { if(read != packet->length) {
return error("Failed to read packet data %s", strerror(errno)); return error(
"Failed to read packet data %s",
errno > 0 ? strerror(errno) : "Unknown error"
);
} }
return ERROR_OK; return ERROR_OK;
} }