struct connection *server_create(struct context *ctx, int fd) { struct connection *server = conn_create(ctx); server->info = conn_info_create(ctx); server->fd = fd; server->ready = server_ready; return server; }
int coroipcs_handler_accept ( int fd, int revent, void *data) { socklen_t addrlen; struct sockaddr_un un_addr; int new_fd; #ifdef COROSYNC_LINUX int on = 1; #endif int res; addrlen = sizeof (struct sockaddr_un); retry_accept: new_fd = accept (fd, (struct sockaddr *)&un_addr, &addrlen); if (new_fd == -1 && errno == EINTR) { goto retry_accept; } if (new_fd == -1) { LOGSYS_PERROR (errno, LOGSYS_LEVEL_ERROR, "Could not accept Library connection"); return (0); /* This is an error, but -1 would indicate disconnect from poll loop */ } res = fcntl (new_fd, F_SETFL, O_NONBLOCK); if (res == -1) { LOGSYS_PERROR (errno, LOGSYS_LEVEL_ERROR, "Could not set non-blocking operation on library connection"); close (new_fd); return (0); /* This is an error, but -1 would indicate disconnect from poll loop */ } /* * Valid accept */ /* * Request credentials of sender provided by kernel */ #ifdef COROSYNC_LINUX setsockopt(new_fd, SOL_SOCKET, SO_PASSCRED, &on, sizeof (on)); #endif res = conn_info_create (new_fd); if (res != 0) { close (new_fd); } return (0); }
static int ste_gprs_context_probe(struct ofono_gprs_context *gc, unsigned int vendor, void *data) { GAtChat *chat = data; struct gprs_context_data *gcd; struct conn_info *ci; int i; gcd = g_new0(struct gprs_context_data, 1); gcd->chat = chat; g_at_chat_register(gcd->chat, "+CGEV:", cgev_notify, FALSE, gc, NULL); ofono_gprs_context_set_data(gc, gcd); for (i = 0; i < MAX_CAIF_DEVICES; i++) { ci = conn_info_create(i, i+1); if (ci) g_caif_devices = g_slist_append(g_caif_devices, ci); } return 0; }