/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2008 Index Data
+ * Copyright (C) 1995-2009 Index Data
* See the file LICENSE for details.
*/
/**
#endif
#ifdef WIN32
-
/* VS 2003 or later has getaddrinfo; older versions do not */
#include <winsock2.h>
#if _MSC_VER >= 1300
#else
#define HAVE_GETADDRINFO 0
#endif
+#endif
-#else
+#if HAVE_NETINET_IN_H
#include <netinet/in.h>
+#endif
+#if HAVE_NETDB_H
#include <netdb.h>
+#endif
+#if HAVE_ARPA_INET_H
#include <arpa/inet.h>
+#endif
+#if HAVE_NETINET_TCP_H
#include <netinet/tcp.h>
#endif
-
#if HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
#include <yaz/comstack.h>
#include <yaz/tcpip.h>
-#include <yaz/nmem.h>
+#include <yaz/errno.h>
static int tcpip_close(COMSTACK h);
static int tcpip_put(COMSTACK h, char *buf, int size);
static void tcpip_create_cred(COMSTACK cs)
{
tcpip_state *sp = (tcpip_state *) cs->cprivate;
- sp->cred_ptr = xmalloc(sizeof(*sp->cred_ptr));
+ sp->cred_ptr = (struct tcpip_cred_ptr *) xmalloc(sizeof(*sp->cred_ptr));
sp->cred_ptr->ref = 1;
gnutls_certificate_allocate_credentials(&sp->cred_ptr->xcred);
}
return 1;
}
-
#if HAVE_GETADDRINFO
void *tcpip_straddr(COMSTACK h, const char *str)
{
{
s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
if (s != -1)
+ {
+ sp->ai = ai;
break;
+ }
}
if (s == -1)
return 0;
tcpip_create_cred(h);
gnutls_init(&sp->session, GNUTLS_CLIENT);
- gnutls_priority_set_direct(sp->session, "PERFORMANCE", NULL);
+ gnutls_set_default_priority(sp->session);
gnutls_credentials_set (sp->session, GNUTLS_CRD_CERTIFICATE,
sp->cred_ptr->xcred);
h->cerrno = CSOUTSTATE;
return -1;
}
+#ifdef WIN32
+ h->newfd = accept(h->iofile, 0, 0);
+#else
h->newfd = accept(h->iofile, (struct sockaddr*)&addr, &len);
+#endif
if (h->newfd < 0)
{
if (
xfree(state);
return 0;
}
- res = gnutls_priority_set_direct(state->session,
- "PERFORMANCE", NULL);
+ res = gnutls_set_default_priority(state->session);
if (res != GNUTLS_E_SUCCESS)
{
xfree(cnew);
return buf;
}
-int static tcpip_set_blocking(COMSTACK p, int flags)
+static int tcpip_set_blocking(COMSTACK p, int flags)
{
unsigned long flag;
#endif
}
-#if ENABLE_SSL
int cs_set_ssl_ctx(COMSTACK cs, void *ctx)
{
+#if ENABLE_SSL
struct tcpip_state *sp;
if (!cs || cs->type != ssl_type)
return 0;
sp->ctx = (SSL_CTX *) ctx;
#endif
return 1;
+#else
+ return 0;
+#endif
}
int cs_set_ssl_certificate_file(COMSTACK cs, const char *fname)
{
+#if ENABLE_SSL
struct tcpip_state *sp;
if (!cs || cs->type != ssl_type)
return 0;
strncpy(sp->cert_fname, fname, sizeof(sp->cert_fname)-1);
sp->cert_fname[sizeof(sp->cert_fname)-1] = '\0';
return 1;
+#else
+ return 0;
+#endif
}
int cs_get_peer_certificate_x509(COMSTACK cs, char **buf, int *len)
#endif
return 0;
}
-#else
-int cs_set_ssl_ctx(COMSTACK cs, void *ctx)
-{
- return 0;
-}
-
-int cs_get_peer_certificate_x509(COMSTACK cs, char **buf, int *len)
-{
- return 0;
-}
-
-int cs_set_ssl_certificate_file(COMSTACK cs, const char *fname)
-{
- return 0;
-}
-#endif
-
static int tcpip_put_connect(COMSTACK h, char *buf, int size)
{
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab