I don't see the need for all the information hiding and getter/setter functions just to access simple fields. ```ConnectionInfoSocket(conn_info)``` is not more clear than ```conn_info->socket```, nor is significantly harder to refactor given that we have nothing to do with class hierarchies and OOP.

Having said that, I believe adding "Get" to the function name may make its purpose more clear. Same applies to all, e.g. ```ConnectionInfoGetSocket()``` and ```HashGetLength()``` etc. I believe you already have "Set" for your setters.