uclient-http: use blocking connect, switch to non-blocking later. fixes ipv6 -> ipv4...
authorFelix Fietkau <nbd@openwrt.org>
Sat, 16 Jan 2016 22:29:51 +0000 (23:29 +0100)
committerFelix Fietkau <nbd@openwrt.org>
Sat, 16 Jan 2016 22:29:51 +0000 (23:29 +0100)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
uclient-http.c

index 574dc0177a9d99054095a4d4aaf1d47428c5d6b6..fa66f78a0562ffe5a867154a2572422f412a70cb 100644 (file)
@@ -19,6 +19,7 @@
 #include <ctype.h>
 #include <unistd.h>
 #include <stdint.h>
+#include <fcntl.h>
 
 #include <libubox/ustream.h>
 #include <libubox/ustream-ssl.h>
@@ -117,10 +118,11 @@ static int uclient_do_connect(struct uclient_http *uh, const char *port)
 
        memset(&uh->uc.remote_addr, 0, sizeof(uh->uc.remote_addr));
 
-       fd = usock_inet(USOCK_TCP | USOCK_NONBLOCK, uh->uc.url->host, port, &uh->uc.remote_addr);
+       fd = usock_inet(USOCK_TCP, uh->uc.url->host, port, &uh->uc.remote_addr);
        if (fd < 0)
                return -1;
 
+       fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK);
        ustream_fd_init(&uh->ufd, fd);
 
        sl = sizeof(uh->uc.local_addr);