MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / resolverCallback

Function resolverCallback

modules/network/socket/lin/modSocket.c:448–485  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

446}
447
448void resolverCallback(GObject *source_object, GAsyncResult *result, gpointer user_data)
449{
450 xsSocket xss = (xsSocket)user_data;
451 GResolver *resolver = (GResolver*)source_object;
452 char *ip = NULL;
453 GList *addresses = NULL;
454 GInetAddress *address = NULL;
455
456 addresses = g_resolver_lookup_by_name_finish(resolver, result, NULL);
457 while (NULL != addresses) {
458 address = (GInetAddress*)addresses->data;
459 if (NULL != address &&
460 g_inet_address_get_family(address) == G_SOCKET_FAMILY_IPV4) {
461 ip = g_inet_address_to_string(address);
462 break;
463 }
464 addresses = addresses->next;
465 }
466
467 if (NULL != ip) {
468 struct sockaddr_in addr;
469 int result;
470 c_memset(&addr, 0, sizeof(addr));
471 addr.sin_family = AF_INET;
472 c_memcpy(&(addr.sin_addr), g_inet_address_to_bytes(address), g_inet_address_get_native_size(address));
473 addr.sin_port = htons(xss->port);
474 result = connect(xss->skt, (struct sockaddr*)&addr, sizeof(addr));
475 if (result >= 0) {
476 xss->connected = true;
477 modMessagePostToMachine(xss->the, NULL, 0, socketConnected, xss);
478 }
479 g_free(ip);
480 }
481
482 if (NULL != addresses)
483 g_resolver_free_addresses(addresses);
484 g_object_unref(resolver);
485}
486
487void doDestructor(xsSocket xss)
488{

Callers

nothing calls this directly

Calls 2

modMessagePostToMachineFunction · 0.70
connectFunction · 0.50

Tested by

no test coverage detected