I'm also not a fan of actual-function-call [gs]etters; if these were inline functions (and inlines are widely enough supported), I'd not mind so much, but you end up repeating "connection info" a whole lot of times wherever you use these, since the parameter is also a connection info object (and we're not in C++, so these methods aren't packaged in the struct's namespaces, so you're lumbered with repeating the struct name as part of each method's name).  Writing conn_info->SetSocket(socket) is one thing, but writing ConnectionInfoSetSocket(connection_info, connection_socket) gets repetitious.  It also adds function-call overhead all over the place.