]> Nishi Git Mirror - libw3.git/commitdiff
dns
authornishi <nishi@d27a3e52-49c5-7645-884c-6793ebffc270>
Wed, 17 Jan 2024 01:26:01 +0000 (01:26 +0000)
committernishi <nishi@d27a3e52-49c5-7645-884c-6793ebffc270>
Wed, 17 Jan 2024 01:26:01 +0000 (01:26 +0000)
git-svn-id: file:///raid/svn-main/nishi-libw3/trunk@4 d27a3e52-49c5-7645-884c-6793ebffc270

Example/fetch.c
Library/Core.c
Library/DNS.c
Library/Makefile
Library/W3Core.h
Library/W3DNS.h
Makefile

index cef8fc5cbf380c44c913093a7c9bd3200c9c8dcd..afd1134f8e48178d117b5649439b54fd4b3c86ce 100644 (file)
@@ -15,5 +15,5 @@ int main(int argc, char** argv){
                return 1;
        }
        W3_Library_Init();
-       struct W3* w3 = W3_Create(false, 80);
+       struct W3* w3 = W3_Create(false, argv[1], 80);
 }
index e1dcb8d73899d495aee6365dcd3556c066f2b0dc..2710c63bb939ca1c7c03806b9da0bc635b0fc78b 100644 (file)
@@ -1,6 +1,7 @@
 /* $Id$ */
 #include "W3Core.h"
 
+#include "W3DNS.h"
 #include "W3Util.h"
 
 #include <stdio.h>
@@ -27,8 +28,9 @@ int W3_Library_Init(void){
        return 0;
 }
 
-struct W3* W3_Create(bool ssl, int port){
+struct W3* W3_Create(bool ssl, const char* hostname, int port){
        __W3_Debug("Create", "Creating a struct");
        struct W3* w3 = malloc(sizeof(*w3));
+       w3->sock = __W3_DNS_Connect(hostname, ssl, port);
        return w3;
 }
index 8513ab31ae04b209f3a1224aaa79b27b8f308cc3..ef48222853522b00a0bb4fe36392501ab3b4840d 100644 (file)
@@ -1,2 +1,49 @@
 /* $Id$ */
 #include "W3DNS.h"
+
+#include "W3Util.h"
+
+#include <stdlib.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <netdb.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdbool.h>
+#include <unistd.h>
+
+int __W3_DNS_Connect(const char* hostname, bool ssl, uint16_t port){
+       __W3_Debug("DNS-Connect", "Resolving");
+       struct addrinfo hints;
+       struct addrinfo* result;
+       struct addrinfo* rp;
+       int s;
+
+       memset(&hints, 0, sizeof(hints));
+       hints.ai_family = AF_UNSPEC;
+       hints.ai_socktype = SOCK_STREAM;
+       hints.ai_flags = 0;
+       hints.ai_protocol = 0;
+       char* strport = malloc(6); /* Enough for 5 digits */
+       memset(strport, 0, 6);
+       sprintf(strport, "%d", port);
+       s = getaddrinfo(hostname, strport, &hints, &result);
+       if(s != 0){
+               __W3_Debug("Resolve", "Failed");
+               return -1;      /* Failed to resolve */
+       }
+       int sock;
+       for(rp = result; rp != NULL; rp = rp->ai_next){
+               sock = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
+               if(sock == -1) continue;
+               if(connect(sock, rp->ai_addr, rp->ai_addrlen) != -1) break;
+               close(sock);
+       }
+       freeaddrinfo(result);
+       free(strport);
+       if(rp == NULL){
+               __W3_Debug("Connect", "Failed to connect");
+               return -1;      /* Failed to connect */
+       }
+       __W3_Debug("Connect", "Conencted");
+}
index 43d84dd543bd59a8bc67c8208d679e66baedac32..307b964f81dbf134731cedb8597db0c67a7a4c9f 100644 (file)
@@ -1,7 +1,7 @@
 # $Id$
 .PHONY: clean install
 
-./libw3.so: ./Core.o ./Util.o
+./libw3.so: ./Core.o ./Util.o ./DNS.o
        $(CC) $(LDFLAGS) -shared -o $@ $^ $(LIBS)
 
 ./%.o: ./%.c W3%.h
index 221dfea4c6b4092ae83996f0af18a48e046a10e0..05552eac8f5e2c300c91f61c021c7438efdeb1f5 100644 (file)
@@ -14,7 +14,7 @@ struct W3 {
 #endif
 };
 
-int W3_Library_Init(void);                     /* Initialize the Library */
-struct W3* W3_Create(bool ssl, int port);      /* Create the struct */
+int W3_Library_Init(void);                                     /* Initialize the Library */
+struct W3* W3_Create(bool ssl, const char* hostname, int port);        /* Create the struct */
 
 #endif
index 132413e76c97334f7af5b0bf937881dd629f3068..ee09e9662c88e570cc1e55d1bd65fc1fb1bda070 100644 (file)
@@ -2,6 +2,9 @@
 #ifndef __W3DNS_H__
 #define __W3DNS_H__
 
-int __W3_DNS_Connect(const char* hostname);
+#include <stdint.h>
+#include <stdbool.h>
+
+int __W3_DNS_Connect(const char* hostname, bool ssl, uint16_t port);
 
 #endif
index 83ab44b899e4b76653aaa9073e970801c33319de..fa88a14401d6cd1e995968a521dde6478583eb63 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@
 include config.mk
 
 CC := cc
-CFLAGS := -g -std=c99 -fPIC
+CFLAGS := -g -std=c99 -fPIC -D_BSD_SOURCE
 LDFLAGS :=
 LIBS :=
 PREFIX := /usr/local