X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=lib-sys%2Fmutt_socket.c;h=af88be088bfe63002bf1dae8aed33e577ab63bd8;hb=140da0c6d18fe8691ec591cea2f32d05be40f502;hp=65ba0084faa7f0e3b71fc50e82d6a9ae09642d55;hpb=8fac066483c9ae3176984527c037190fca9dc7f0;p=apps%2Fmadmutt.git diff --git a/lib-sys/mutt_socket.c b/lib-sys/mutt_socket.c index 65ba008..af88be0 100644 --- a/lib-sys/mutt_socket.c +++ b/lib-sys/mutt_socket.c @@ -150,6 +150,23 @@ int mutt_socket_readln(char *buf, ssize_t buflen, CONNECTION * conn) return i + 1; } +int mutt_socket_readln2(buffer_t *buf, CONNECTION *conn) +{ + char ch; + + while (mutt_socket_readchar(conn, &ch) == 1) { + if (ch == '\n') { + if (buf->len && buf->data[buf->len - 1] == '\r') { + buf->data[--buf->len] = '\0'; + } + return 0; + } + buffer_addch(buf, ch); + } + + return -1; +} + CONNECTION *mutt_socket_head (void) { return Connections; @@ -255,10 +272,8 @@ static int socket_connect (int fd, struct sockaddr *sa) if (sa->sa_family == AF_INET) sa_size = sizeof (struct sockaddr_in); -#ifdef HAVE_GETADDRINFO else if (sa->sa_family == AF_INET6) sa_size = sizeof (struct sockaddr_in6); -#endif else { return -1; } @@ -331,9 +346,6 @@ int raw_socket_open (CONNECTION * conn) char *host_idna = NULL; -#ifdef HAVE_GETADDRINFO -/* --- IPv4/6 --- */ - /* "65536\0" */ char port[6]; struct addrinfo hints; @@ -363,7 +375,6 @@ int raw_socket_open (CONNECTION * conn) mutt_message (_("Looking up %s..."), conn->account.host); - rc = getaddrinfo (host_idna, port, &hints, &res); # ifdef HAVE_LIBIDN @@ -394,60 +405,6 @@ int raw_socket_open (CONNECTION * conn) freeaddrinfo (res); -#else - /* --- IPv4 only --- */ - - struct sockaddr_in sin; - struct hostent *he; - int i; - - p_clear(&sin, 1); - sin.sin_port = htons (conn->account.port); - sin.sin_family = AF_INET; - -# ifdef HAVE_LIBIDN - if (idna_to_ascii_lz (conn->account.host, &host_idna, 1) != IDNA_SUCCESS) { - mutt_error (_("Bad IDN \"%s\"."), conn->account.host); - return -1; - } -# else - host_idna = conn->account.host; -# endif - - mutt_message (_("Looking up %s..."), conn->account.host); - - if ((he = gethostbyname (host_idna)) == NULL) { -# ifdef HAVE_LIBIDN - p_delete(&host_idna); -# endif - mutt_error (_("Could not find the host \"%s\""), conn->account.host); - - return -1; - } - -# ifdef HAVE_LIBIDN - p_delete(&host_idna); -# endif - - mutt_message (_("Connecting to %s..."), conn->account.host); - - rc = -1; - for (i = 0; he->h_addr_list[i] != NULL; i++) { - memcpy (&sin.sin_addr, he->h_addr_list[i], he->h_length); - fd = socket (PF_INET, SOCK_STREAM, IPPROTO_IP); - - if (fd >= 0) { - if ((rc = socket_connect (fd, (struct sockaddr *) &sin)) == 0) { - fcntl (fd, F_SETFD, FD_CLOEXEC); - conn->fd = fd; - break; - } - else - close (fd); - } - } - -#endif if (rc) { mutt_error (_("Could not connect to %s (%s)."), conn->account.host, (rc > 0) ? strerror (rc) : _("unknown error"));