Replace nvnc_client_get_hostname with nvnc_client_get_address
This is a more accurate name for what is returned since
c76129b2d2
.
pull/110/head
parent
524f9e0399
commit
f503cbef25
|
@ -83,7 +83,6 @@ struct nvnc_client {
|
||||||
struct nvnc_common common;
|
struct nvnc_common common;
|
||||||
int ref;
|
int ref;
|
||||||
struct stream* net_stream;
|
struct stream* net_stream;
|
||||||
char hostname[256];
|
|
||||||
char username[256];
|
char username[256];
|
||||||
struct nvnc* server;
|
struct nvnc* server;
|
||||||
enum nvnc_client_state state;
|
enum nvnc_client_state state;
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
|
||||||
#define NVNC_NO_PTS UINT64_MAX
|
#define NVNC_NO_PTS UINT64_MAX
|
||||||
|
|
||||||
|
@ -141,7 +142,8 @@ void* nvnc_get_userdata(const void* self);
|
||||||
|
|
||||||
struct nvnc* nvnc_client_get_server(const struct nvnc_client* client);
|
struct nvnc* nvnc_client_get_server(const struct nvnc_client* client);
|
||||||
bool nvnc_client_supports_cursor(const struct nvnc_client* client);
|
bool nvnc_client_supports_cursor(const struct nvnc_client* client);
|
||||||
const char* nvnc_client_get_hostname(const struct nvnc_client* client);
|
int nvnc_client_get_address(const struct nvnc_client* client,
|
||||||
|
struct sockaddr* restrict addr, socklen_t* restrict addrlen);
|
||||||
const char* nvnc_client_get_auth_username(const struct nvnc_client* client);
|
const char* nvnc_client_get_auth_username(const struct nvnc_client* client);
|
||||||
|
|
||||||
struct nvnc_client* nvnc_client_first(struct nvnc* self);
|
struct nvnc_client* nvnc_client_first(struct nvnc* self);
|
||||||
|
|
40
src/server.c
40
src/server.c
|
@ -1672,26 +1672,6 @@ static void on_client_event(struct stream* stream, enum stream_event event)
|
||||||
client->buffer_index = 0;
|
client->buffer_index = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Remove this when nvnc_client_get_hostname gets renamed.
|
|
||||||
static void record_peer_hostname(int fd, struct nvnc_client* client)
|
|
||||||
{
|
|
||||||
struct sockaddr_storage storage;
|
|
||||||
struct sockaddr* peer = (struct sockaddr*)&storage;
|
|
||||||
socklen_t peerlen = sizeof(storage);
|
|
||||||
if (getpeername(fd, peer, &peerlen) < 0) {
|
|
||||||
nvnc_log(NVNC_LOG_WARNING, "Failed to get address for client: %m");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (peer->sa_family == AF_UNIX) {
|
|
||||||
snprintf(client->hostname, sizeof(client->hostname),
|
|
||||||
"unix domain socket");
|
|
||||||
} else {
|
|
||||||
sockaddr_to_string(client->hostname, sizeof(client->hostname),
|
|
||||||
peer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void on_connection(void* obj)
|
static void on_connection(void* obj)
|
||||||
{
|
{
|
||||||
struct nvnc* server = aml_get_userdata(obj);
|
struct nvnc* server = aml_get_userdata(obj);
|
||||||
|
@ -1713,8 +1693,6 @@ static void on_connection(void* obj)
|
||||||
int one = 1;
|
int one = 1;
|
||||||
setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one));
|
setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &one, sizeof(one));
|
||||||
|
|
||||||
record_peer_hostname(fd, client);
|
|
||||||
|
|
||||||
#ifdef ENABLE_WEBSOCKET
|
#ifdef ENABLE_WEBSOCKET
|
||||||
if (server->socket_type == NVNC__SOCKET_WEBSOCKET)
|
if (server->socket_type == NVNC__SOCKET_WEBSOCKET)
|
||||||
{
|
{
|
||||||
|
@ -1749,7 +1727,14 @@ static void on_connection(void* obj)
|
||||||
|
|
||||||
client->state = VNC_CLIENT_STATE_WAITING_FOR_VERSION;
|
client->state = VNC_CLIENT_STATE_WAITING_FOR_VERSION;
|
||||||
|
|
||||||
nvnc_log(NVNC_LOG_INFO, "New client connection from %s: %p (ref %d)", client->hostname, client, client->ref);
|
char ip_address[256];
|
||||||
|
struct sockaddr_storage addr;
|
||||||
|
socklen_t addrlen = sizeof(addr);
|
||||||
|
nvnc_client_get_address(client, (struct sockaddr*)&addr, &addrlen);
|
||||||
|
sockaddr_to_string(ip_address, sizeof(ip_address),
|
||||||
|
(struct sockaddr*)&addr);
|
||||||
|
nvnc_log(NVNC_LOG_INFO, "New client connection from %s: %p (ref %d)",
|
||||||
|
ip_address, client, client->ref);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -2273,13 +2258,10 @@ struct nvnc* nvnc_client_get_server(const struct nvnc_client* client)
|
||||||
return client->server;
|
return client->server;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: This function should be renamed to nvnc_client_get_address and it
|
|
||||||
// should return the sockaddr.
|
|
||||||
EXPORT
|
EXPORT
|
||||||
const char* nvnc_client_get_hostname(const struct nvnc_client* client) {
|
int nvnc_client_get_address(const struct nvnc_client* client,
|
||||||
if (client->hostname[0] == '\0')
|
struct sockaddr* restrict addr, socklen_t* restrict addrlen) {
|
||||||
return NULL;
|
return getpeername(client->net_stream->fd, addr, addrlen);
|
||||||
return client->hostname;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT
|
EXPORT
|
||||||
|
|
Loading…
Reference in New Issue