Fix
There's an annoying bug that prevents a Sphinx table to connect to a searchd using a host name. So the example table in the documentation https://mariadb.com/kb/en/library/about-sphinxse/#basic-usage that point's to "localhost" actually doesn't work. After some investigation I found two errors. The first one is a wrong check after the getaddrinfo call. The second is a wrong usage of the returned struct.
This commit is contained in:
parent
75bcf1f9ad
commit
9611d7e08a
@ -2162,7 +2162,7 @@ int ha_sphinx::Connect ( const char * sHost, ushort uPort )
|
|||||||
#if MYSQL_VERSION_ID>=50515
|
#if MYSQL_VERSION_ID>=50515
|
||||||
struct addrinfo *hp = NULL;
|
struct addrinfo *hp = NULL;
|
||||||
tmp_errno = getaddrinfo ( sHost, NULL, NULL, &hp );
|
tmp_errno = getaddrinfo ( sHost, NULL, NULL, &hp );
|
||||||
if ( !tmp_errno || !hp || !hp->ai_addr )
|
if ( tmp_errno || !hp || !hp->ai_addr )
|
||||||
{
|
{
|
||||||
bError = true;
|
bError = true;
|
||||||
if ( hp )
|
if ( hp )
|
||||||
@ -2189,7 +2189,8 @@ int ha_sphinx::Connect ( const char * sHost, ushort uPort )
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if MYSQL_VERSION_ID>=50515
|
#if MYSQL_VERSION_ID>=50515
|
||||||
memcpy ( &sin.sin_addr, hp->ai_addr, Min ( sizeof(sin.sin_addr), (size_t)hp->ai_addrlen ) );
|
struct sockaddr_in *in = (sockaddr_in *)hp->ai_addr;
|
||||||
|
memcpy ( &sin.sin_addr, &in->sin_addr, Min ( sizeof(sin.sin_addr), sizeof(in->sin_addr) ) );
|
||||||
freeaddrinfo ( hp );
|
freeaddrinfo ( hp );
|
||||||
#else
|
#else
|
||||||
memcpy ( &sin.sin_addr, hp->h_addr, Min ( sizeof(sin.sin_addr), (size_t)hp->h_length ) );
|
memcpy ( &sin.sin_addr, hp->h_addr, Min ( sizeof(sin.sin_addr), (size_t)hp->h_length ) );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user