return MEMCACHED_FAILURE;
}
- if (ptr->root->send_size)
+ if (ptr->root->send_size > 0)
{
int error;
return MEMCACHED_FAILURE;
}
- if (ptr->root->recv_size)
+ if (ptr->root->recv_size > 0)
{
int error;
}
}
+#ifdef LIBMEMCACHED_WITH_SASL_SUPPORT
+ if (ptr->fd != -1 && ptr->root->sasl.callbacks != NULL)
+ {
+ memcached_return rc= memcached_sasl_authenticate_connection(ptr);
+ if (rc != MEMCACHED_SUCCESS)
+ {
+ (void)close(ptr->fd);
+ ptr->fd= -1;
+ return rc;
+ }
+ }
+#endif
+
+
if (ptr->fd != -1)
{
ptr->server_failure_counter= 0;
}
-memcached_return_t memcached_connect(memcached_server_st *ptr)
+memcached_return_t memcached_connect(memcached_server_write_instance_st ptr)
{
memcached_return_t rc= MEMCACHED_NO_SERVERS;
LIBMEMCACHED_MEMCACHED_CONNECT_START();
if (curr_time.tv_sec < ptr->next_retry)
{
- if (memcached_behavior_get(ptr->root, MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS))
+ memcached_st *root= (memcached_st *)ptr->root;
+ // @todo fix this by fixing behavior to no longer make use of
+ // memcached_st
+ if (memcached_behavior_get(root, MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS))
{
- run_distribution(ptr->root);
+ run_distribution(root);
}
- ptr->root->last_disconnected_server = ptr;
+ root->last_disconnected_server = ptr;
+
return MEMCACHED_SERVER_MARKED_DEAD;
}
}
WATCHPOINT_ASSERT(0);
}
- unlikely ( rc != MEMCACHED_SUCCESS) ptr->root->last_disconnected_server = ptr;
+ unlikely ( rc != MEMCACHED_SUCCESS)
+ {
+ //@todo create interface around last_discontected_server
+ memcached_st *root= (memcached_st *)ptr->root;
+ root->last_disconnected_server = ptr;
+ }
LIBMEMCACHED_MEMCACHED_CONNECT_END();