diff options
Diffstat (limited to 'assuan/assuan-socket.c')
| -rw-r--r-- | assuan/assuan-socket.c | 33 | 
1 files changed, 32 insertions, 1 deletions
| diff --git a/assuan/assuan-socket.c b/assuan/assuan-socket.c index 02a62253..74e8eb29 100644 --- a/assuan/assuan-socket.c +++ b/assuan/assuan-socket.c @@ -145,7 +145,10 @@ read_port_and_nonce (const char *fname, unsigned short *port, char *nonce)  int  _assuan_close (assuan_fd_t fd)  { -#if defined (HAVE_W32_SYSTEM) && !defined(_ASSUAN_IN_GPGME_BUILD_ASSUAN) +#ifdef _ASSUAN_CUSTOM_IO +  return _assuan_custom_close (fd); +#else +#ifdef (HAVE_W32_SYSTEM)    int rc = closesocket (HANDLE2SOCKET(fd));    if (rc)      errno = _assuan_sock_wsa2errno (WSAGetLastError ()); @@ -160,6 +163,7 @@ _assuan_close (assuan_fd_t fd)  #else    return close (fd);  #endif +#endif  } @@ -173,13 +177,25 @@ _assuan_sock_new (int domain, int type, int proto)    assuan_fd_t res;    if (domain == AF_UNIX || domain == AF_LOCAL)      domain = AF_INET; + +#ifdef _ASSUAN_CUSTOM_IO +  return _assuan_custom_socket (domain, type, proto); +#else    res = SOCKET2HANDLE(socket (domain, type, proto));    if (res == ASSUAN_INVALID_FD)      errno = _assuan_sock_wsa2errno (WSAGetLastError ());    return res; +#endif + +#else + +#ifdef _ASSUAN_CUSTOM_IO +  return _gpgme_io_socket (domain, type, proto);  #else    return socket (domain, type, proto);  #endif + +#endif  } @@ -208,11 +224,18 @@ _assuan_sock_connect (assuan_fd_t sockfd, struct sockaddr *addr, int addrlen)        unaddr->sun_port = myaddr.sin_port;        unaddr->sun_addr.s_addr = myaddr.sin_addr.s_addr; +#ifdef _ASSUAN_CUSTOM_IO +      ret = _assuan_custom_connect (sockfd, +				    (struct sockaddr *)&myaddr, sizeof myaddr); +#else        ret = connect (HANDLE2SOCKET(sockfd),                        (struct sockaddr *)&myaddr, sizeof myaddr); +#endif +        if (!ret)          {            /* Send the nonce. */ +            ret = _assuan_io_write (sockfd, nonce, 16);            if (ret >= 0 && ret != 16)              { @@ -220,6 +243,8 @@ _assuan_sock_connect (assuan_fd_t sockfd, struct sockaddr *addr, int addrlen)                ret = -1;              }          } +      else +        errno = _assuan_sock_wsa2errno (WSAGetLastError ());        return ret;      }    else @@ -231,8 +256,14 @@ _assuan_sock_connect (assuan_fd_t sockfd, struct sockaddr *addr, int addrlen)        return res;      }        #else + +#ifdef _ASSUAN_CUSTOM_IO +  return _assuan_custom_connect (sockfd, addr, addrlen); +#else    return connect (sockfd, addr, addrlen);  #endif + +#endif  } | 
