Fix return values of functions so that data_process_packet works correctly.

Inconsistencies between returning T/F and 0/1 caused the aforementioned
function to interpret the return values as an error and return accordingly,
causing the client to be disconnected.
Add check for malloc errors when creating new clients.

This should prevent the server from running its host machine out
of memory and causing the program to forcibly exit.