- cl = calloc(1, sizeof(*cl));
- cl->sock.fd = client_fd;
-
- INIT_LIST_HEAD(&cl->objects);
- if (!ubus_alloc_id(&clients, &cl->id, 0))
- goto error;
-
- cl->sock.cb = client_cb;
- uloop_fd_add(&cl->sock, ULOOP_READ | ULOOP_EDGE_TRIGGER);
- if (!ubusd_send_hello(cl))
- goto error_free;
+ cl = ubusd_proto_new_client(client_fd, client_cb);
+ if (cl)
+ uloop_fd_add(&cl->sock, ULOOP_READ | ULOOP_EDGE_TRIGGER);
+ else
+ close(client_fd);