#include <libmemcached/common.h>
#include <cassert>
-#include <ctime>
-#include <sys/time.h>
#ifndef SOCK_CLOEXEC
# define SOCK_CLOEXEC 0
#endif
#ifndef SOCK_NONBLOCK
-# define SOCK_NONBLOCK 0
+# define SOCK_NONBLOCK 0
#endif
#ifndef FD_CLOEXEC
{
int err;
socklen_t len= sizeof(err);
- if (getsockopt(server->fd, SOL_SOCKET, SO_ERROR, &err, &len) == 0)
+ if (getsockopt(server->fd, SOL_SOCKET, SO_ERROR, (char*)&err, &len) == 0)
{
if (err == 0)
{
{
int err;
socklen_t len= sizeof (err);
- if (getsockopt(fds[0].fd, SOL_SOCKET, SO_ERROR, &err, &len) == 0)
+ if (getsockopt(fds[0].fd, SOL_SOCKET, SO_ERROR, (char*)&err, &len) == 0)
{
// We check the value to see what happened wth the socket.
if (err == 0)
waittime.tv_usec= server->root->snd_timeout % 1000000;
int error= setsockopt(server->fd, SOL_SOCKET, SO_SNDTIMEO,
- &waittime, (socklen_t)sizeof(struct timeval));
+ (char*)&waittime, (socklen_t)sizeof(struct timeval));
(void)error;
assert(error == 0);
}
waittime.tv_usec= server->root->rcv_timeout % 1000000;
int error= setsockopt(server->fd, SOL_SOCKET, SO_RCVTIMEO,
- &waittime, (socklen_t)sizeof(struct timeval));
+ (char*)&waittime, (socklen_t)sizeof(struct timeval));
(void)(error);
assert(error == 0);
}
linger.l_onoff= 1;
linger.l_linger= 0; /* By default on close() just drop the socket */
int error= setsockopt(server->fd, SOL_SOCKET, SO_LINGER,
- &linger, (socklen_t)sizeof(struct linger));
+ (char*)&linger, (socklen_t)sizeof(struct linger));
(void)(error);
assert(error == 0);
}
int flag= 1;
int error= setsockopt(server->fd, IPPROTO_TCP, TCP_NODELAY,
- &flag, (socklen_t)sizeof(int));
+ (char*)&flag, (socklen_t)sizeof(int));
(void)(error);
assert(error == 0);
}
int flag= 1;
int error= setsockopt(server->fd, SOL_SOCKET, SO_KEEPALIVE,
- &flag, (socklen_t)sizeof(int));
+ (char*)&flag, (socklen_t)sizeof(int));
(void)(error);
assert(error == 0);
}
if (server->root->tcp_keepidle > 0)
{
int error= setsockopt(server->fd, IPPROTO_TCP, TCP_KEEPIDLE,
- &server->root->tcp_keepidle, (socklen_t)sizeof(int));
+ (char*)&server->root->tcp_keepidle, (socklen_t)sizeof(int));
(void)(error);
assert(error == 0);
}
if (server->root->send_size > 0)
{
int error= setsockopt(server->fd, SOL_SOCKET, SO_SNDBUF,
- &server->root->send_size, (socklen_t)sizeof(int));
+ (char*)&server->root->send_size, (socklen_t)sizeof(int));
(void)(error);
assert(error == 0);
}
if (server->root->recv_size > 0)
{
int error= setsockopt(server->fd, SOL_SOCKET, SO_RCVBUF,
- &server->root->recv_size, (socklen_t)sizeof(int));
+ (char*)&server->root->recv_size, (socklen_t)sizeof(int));
(void)(error);
assert(error == 0);
}
type|= SOCK_NONBLOCK;
}
- if ((server->fd= socket(server->address_info_next->ai_family,
- type,
- server->address_info_next->ai_protocol)) < 0)
+ server->fd= socket(server->address_info_next->ai_family,
+ type,
+ server->address_info_next->ai_protocol);
+
+ if (int(server->fd) == SOCKET_ERROR)
{
return memcached_set_errno(*server, get_socket_errno(), NULL);
}
+#ifdef HAVE_FCNTL
// If SOCK_CLOEXEC exists then we don't need to call the following
if (SOCK_CLOEXEC == 0)
{
} while (rval == -1 && (errno == EINTR or errno == EAGAIN));
}
}
+#endif
set_socket_options(server);
if (server->fd != INVALID_SOCKET and server->root->sasl.callbacks)
{
rc= memcached_sasl_authenticate_connection(server);
+ fprintf(stderr, "%s:%d %s\n", __FILE__, __LINE__, memcached_strerror(NULL, rc));
if (memcached_failed(rc) and server->fd != INVALID_SOCKET)
{
WATCHPOINT_ASSERT(server->fd != INVALID_SOCKET);