X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=ldk-c-bindings;a=blobdiff_plain;f=ldk-net%2Fldk_net.c;h=f404ddd973d107477968011893a439e5c5c8e997;hp=18279541e0a88014f8b7621b6855e754be598f1b;hb=fee27c4b40d1d25609a38bb220dd64b297af929a;hpb=f04c90f0235ea0cfeb553f34a12ad7bb1e1a1129 diff --git a/ldk-net/ldk_net.c b/ldk-net/ldk_net.c index 1827954..f404ddd 100644 --- a/ldk-net/ldk_net.c +++ b/ldk-net/ldk_net.c @@ -111,10 +111,9 @@ static uintptr_t sock_send_data(void* desc, struct LDKu8slice data, bool resume_ for (int i = 0; i < descriptor->handler->sockcount; i++) { if (descriptor->handler->pollfds[i].fd == descriptor->fd) { if (pause_read) { - descriptor->handler->pollfds[i].events &= POLLIN; - descriptor->handler->pollfds[i].events |= POLLOUT; + descriptor->handler->pollfds[i].events = POLLOUT; } else { - descriptor->handler->pollfds[i].events |= POLLIN; + descriptor->handler->pollfds[i].events = POLLIN; } break; } @@ -142,12 +141,12 @@ static uint64_t sock_hash(const void* desc) { const struct Descriptor *descriptor = (const struct Descriptor*)desc; return (uint64_t)descriptor->fd; } -static void* sock_clone(const void* desc) { - const struct Descriptor *descriptor = (const struct Descriptor*)desc; +static void sock_cloned(LDKSocketDescriptor *NONNULL_PTR ldk_desc) { + const struct Descriptor *descriptor = (const struct Descriptor*)ldk_desc->this_arg; struct Descriptor *new_desc = malloc(sizeof(struct Descriptor)); new_desc->handler = descriptor->handler; new_desc->fd = descriptor->fd; - return new_desc; + ldk_desc->this_arg = (void*) new_desc; } static void sock_free(void* desc) { free(desc); @@ -163,7 +162,7 @@ static inline LDKSocketDescriptor get_descriptor(struct SocketHandler *handler, .disconnect_socket = sock_disconnect, .eq = sock_eq, .hash = sock_hash, - .clone = sock_clone, + .cloned = sock_cloned, .free = sock_free, }; return ret; @@ -243,8 +242,7 @@ static void *sock_thread_fn(void* arg) { lockres = pthread_mutex_lock(&handler->sockets_mutex); assert(lockres == 0); assert(handler->pollfds[i - 1].fd == pollfds[i].fd); // Only we change fd order! - handler->pollfds[i - 1].events &= POLLIN; - handler->pollfds[i - 1].events |= POLLOUT; + handler->pollfds[i - 1].events = POLLOUT; lockres = pthread_mutex_unlock(&handler->sockets_mutex); assert(lockres == 0); }