On Mon, Jan 23, 2017 at 02:53:52PM +0100, Michal Suchanek wrote: > The message types are defined by the protocol so the same array is > always passed into the server anyway. So define the array size to be the > number of message types and just use the array and limit directly in > udscs. If somebody adds a message type in the future the array will > contain some friendly NULLs at the end. From a quick look, udcsc seems to be protocol-agnostic, in particular before this change, I don't think it makes any reference to vdagent. Unless we have a strong reason for changing this, I'd keep things as they currently are, and drop this patch. Christophe > > Signed-off-by: Michal Suchanek <msuchanek@xxxxxxx> > --- > src/udscs.c | 23 +++++++---------------- > src/udscs.h | 4 ++-- > src/vdagent/vdagent.c | 1 - > src/vdagentd-proto-strings.h | 3 ++- > src/vdagentd/vdagentd.c | 1 - > 5 files changed, 11 insertions(+), 21 deletions(-) > > diff --git a/src/udscs.c b/src/udscs.c > index fdd75a4..631f889 100644 > --- a/src/udscs.c > +++ b/src/udscs.c > @@ -32,6 +32,7 @@ > #include <sys/socket.h> > #include <sys/un.h> > #include "udscs.h" > +#include "vdagentd-proto-strings.h" > > struct udscs_buf { > uint8_t *buf; > @@ -43,8 +44,6 @@ struct udscs_buf { > > struct udscs_connection { > int fd; > - const char * const *type_to_string; > - int no_types; > int debug; > void *user_data; > #ifndef UDSCS_NO_SERVER > @@ -71,7 +70,7 @@ struct udscs_connection { > struct udscs_connection *udscs_connect(const char *socketname, > udscs_read_callback read_callback, > udscs_disconnect_callback disconnect_callback, > - const char * const type_to_string[], int no_types, int debug) > + int debug) > { > int c; > struct sockaddr_un address; > @@ -81,8 +80,6 @@ struct udscs_connection *udscs_connect(const char *socketname, > if (!conn) > return NULL; > > - conn->type_to_string = type_to_string; > - conn->no_types = no_types; > conn->debug = debug; > > conn->fd = socket(PF_UNIX, SOCK_STREAM, 0); > @@ -189,9 +186,9 @@ int udscs_write(struct udscs_connection *conn, uint32_t type, uint32_t arg1, > memcpy(new_wbuf->buf + sizeof(header), data, size); > > if (conn->debug) { > - if (type < conn->no_types) > + if (type < VDAGENTD_NO_MESSAGES) > syslog(LOG_DEBUG, "%p sent %s, arg1: %u, arg2: %u, size %u", > - conn, conn->type_to_string[type], arg1, arg2, size); > + conn, vdagentd_messages[type], arg1, arg2, size); > else > syslog(LOG_DEBUG, > "%p sent invalid message %u, arg1: %u, arg2: %u, size %u", > @@ -219,10 +216,10 @@ static void udscs_read_complete(struct udscs_connection **connp) > struct udscs_connection *conn = *connp; > > if (conn->debug) { > - if (conn->header.type < conn->no_types) > + if (conn->header.type < VDAGENTD_NO_MESSAGES) > syslog(LOG_DEBUG, > "%p received %s, arg1: %u, arg2: %u, size %u", > - conn, conn->type_to_string[conn->header.type], > + conn, vdagentd_messages[conn->header.type], > conn->header.arg1, conn->header.arg2, conn->header.size); > else > syslog(LOG_DEBUG, > @@ -360,8 +357,6 @@ int udscs_client_fill_fds(struct udscs_connection *conn, fd_set *readfds, > > struct udscs_server { > int fd; > - const char * const *type_to_string; > - int no_types; > int debug; > struct udscs_connection connections_head; > udscs_connect_callback connect_callback; > @@ -373,7 +368,7 @@ struct udscs_server *udscs_create_server(const char *socketname, > udscs_connect_callback connect_callback, > udscs_read_callback read_callback, > udscs_disconnect_callback disconnect_callback, > - const char * const type_to_string[], int no_types, int debug) > + int debug) > { > int c; > struct sockaddr_un address; > @@ -383,8 +378,6 @@ struct udscs_server *udscs_create_server(const char *socketname, > if (!server) > return NULL; > > - server->type_to_string = type_to_string; > - server->no_types = no_types; > server->debug = debug; > > server->fd = socket(PF_UNIX, SOCK_STREAM, 0); > @@ -461,8 +454,6 @@ static void udscs_server_accept(struct udscs_server *server) { > } > > new_conn->fd = fd; > - new_conn->type_to_string = server->type_to_string; > - new_conn->no_types = server->no_types; > new_conn->debug = server->debug; > new_conn->read_callback = server->read_callback; > new_conn->disconnect_callback = server->disconnect_callback; > diff --git a/src/udscs.h b/src/udscs.h > index 6160568..61818cf 100644 > --- a/src/udscs.h > +++ b/src/udscs.h > @@ -69,7 +69,7 @@ typedef void (*udscs_disconnect_callback)(struct udscs_connection *conn); > struct udscs_connection *udscs_connect(const char *socketname, > udscs_read_callback read_callback, > udscs_disconnect_callback disconnect_callback, > - const char * const type_to_string[], int no_types, int debug); > + int debug); > > /* Close the connection, releases the corresponding resources and > * sets *connp to NULL. > @@ -135,7 +135,7 @@ struct udscs_server *udscs_create_server(const char *socketname, > udscs_connect_callback connect_callback, > udscs_read_callback read_callback, > udscs_disconnect_callback disconnect_callback, > - const char * const type_to_string[], int no_types, int debug); > + int debug); > > /* Close all the server's connections and releases the corresponding > * resources. > diff --git a/src/vdagent/vdagent.c b/src/vdagent/vdagent.c > index 3d195b1..616fc63 100644 > --- a/src/vdagent/vdagent.c > +++ b/src/vdagent/vdagent.c > @@ -147,7 +147,6 @@ static int client_setup(int reconnect) > { > while (!quit) { > client = udscs_connect(vdagentd_socket, daemon_read_complete, NULL, > - vdagentd_messages, VDAGENTD_NO_MESSAGES, > debug); > if (client || !reconnect || quit) { > break; > diff --git a/src/vdagentd-proto-strings.h b/src/vdagentd-proto-strings.h > index 6e7bcee..115f67f 100644 > --- a/src/vdagentd-proto-strings.h > +++ b/src/vdagentd-proto-strings.h > @@ -18,11 +18,12 @@ > You should have received a copy of the GNU General Public License > along with this program. If not, see <http://www.gnu.org/licenses/>. > */ > +#include <vdagentd-proto.h> > > #ifndef __VDAGENTD_PROTO_STRINGS_H > #define __VDAGENTD_PROTO_STRINGS_H > > -static const char * const vdagentd_messages[] = { > +static const char * const vdagentd_messages[VDAGENTD_NO_MESSAGES] = { > "guest xorg resolution", > "monitors config", > "clipboard grab", > diff --git a/src/vdagentd/vdagentd.c b/src/vdagentd/vdagentd.c > index e2d6159..2b16ca4 100644 > --- a/src/vdagentd/vdagentd.c > +++ b/src/vdagentd/vdagentd.c > @@ -965,7 +965,6 @@ int main(int argc, char *argv[]) > /* Setup communication with vdagent process(es) */ > server = udscs_create_server(vdagentd_socket, agent_connect, > agent_read_complete, agent_disconnect, > - vdagentd_messages, VDAGENTD_NO_MESSAGES, > debug); > if (!server) { > if (errno == EADDRINUSE) { > -- > 2.10.2 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel