#define SOCKET_MAX_FDS 16
-SocketAddressLegacy *
+SocketAddress *
qio_channel_socket_get_local_address(QIOChannelSocket *ioc,
Error **errp)
{
errp);
}
-SocketAddressLegacy *
+SocketAddress *
qio_channel_socket_get_remote_address(QIOChannelSocket *ioc,
Error **errp)
{
int qio_channel_socket_connect_sync(QIOChannelSocket *ioc,
- SocketAddressLegacy *addr,
+ SocketAddress *addr,
Error **errp)
{
int fd;
gpointer opaque)
{
QIOChannelSocket *ioc = QIO_CHANNEL_SOCKET(qio_task_get_source(task));
- SocketAddressLegacy *addr = opaque;
+ SocketAddress *addr = opaque;
Error *err = NULL;
qio_channel_socket_connect_sync(ioc, addr, &err);
void qio_channel_socket_connect_async(QIOChannelSocket *ioc,
- SocketAddressLegacy *addr,
+ SocketAddress *addr,
QIOTaskFunc callback,
gpointer opaque,
GDestroyNotify destroy)
{
QIOTask *task = qio_task_new(
OBJECT(ioc), callback, opaque, destroy);
- SocketAddressLegacy *addrCopy;
+ SocketAddress *addrCopy;
- addrCopy = QAPI_CLONE(SocketAddressLegacy, addr);
+ addrCopy = QAPI_CLONE(SocketAddress, addr);
/* socket_connect() does a non-blocking connect(), but it
* still blocks in DNS lookups, so we must use a thread */
qio_task_run_in_thread(task,
qio_channel_socket_connect_worker,
addrCopy,
- (GDestroyNotify)qapi_free_SocketAddressLegacy);
+ (GDestroyNotify)qapi_free_SocketAddress);
}
int qio_channel_socket_listen_sync(QIOChannelSocket *ioc,
- SocketAddressLegacy *addr,
+ SocketAddress *addr,
Error **errp)
{
int fd;
gpointer opaque)
{
QIOChannelSocket *ioc = QIO_CHANNEL_SOCKET(qio_task_get_source(task));
- SocketAddressLegacy *addr = opaque;
+ SocketAddress *addr = opaque;
Error *err = NULL;
qio_channel_socket_listen_sync(ioc, addr, &err);
void qio_channel_socket_listen_async(QIOChannelSocket *ioc,
- SocketAddressLegacy *addr,
+ SocketAddress *addr,
QIOTaskFunc callback,
gpointer opaque,
GDestroyNotify destroy)
{
QIOTask *task = qio_task_new(
OBJECT(ioc), callback, opaque, destroy);
- SocketAddressLegacy *addrCopy;
+ SocketAddress *addrCopy;
- addrCopy = QAPI_CLONE(SocketAddressLegacy, addr);
+ addrCopy = QAPI_CLONE(SocketAddress, addr);
/* socket_listen() blocks in DNS lookups, so we must use a thread */
trace_qio_channel_socket_listen_async(ioc, addr);
qio_task_run_in_thread(task,
qio_channel_socket_listen_worker,
addrCopy,
- (GDestroyNotify)qapi_free_SocketAddressLegacy);
+ (GDestroyNotify)qapi_free_SocketAddress);
}
int qio_channel_socket_dgram_sync(QIOChannelSocket *ioc,
- SocketAddressLegacy *localAddr,
- SocketAddressLegacy *remoteAddr,
+ SocketAddress *localAddr,
+ SocketAddress *remoteAddr,
Error **errp)
{
int fd;
struct QIOChannelSocketDGramWorkerData {
- SocketAddressLegacy *localAddr;
- SocketAddressLegacy *remoteAddr;
+ SocketAddress *localAddr;
+ SocketAddress *remoteAddr;
};
static void qio_channel_socket_dgram_worker_free(gpointer opaque)
{
struct QIOChannelSocketDGramWorkerData *data = opaque;
- qapi_free_SocketAddressLegacy(data->localAddr);
- qapi_free_SocketAddressLegacy(data->remoteAddr);
+ qapi_free_SocketAddress(data->localAddr);
+ qapi_free_SocketAddress(data->remoteAddr);
g_free(data);
}
void qio_channel_socket_dgram_async(QIOChannelSocket *ioc,
- SocketAddressLegacy *localAddr,
- SocketAddressLegacy *remoteAddr,
+ SocketAddress *localAddr,
+ SocketAddress *remoteAddr,
QIOTaskFunc callback,
gpointer opaque,
GDestroyNotify destroy)
struct QIOChannelSocketDGramWorkerData *data = g_new0(
struct QIOChannelSocketDGramWorkerData, 1);
- data->localAddr = QAPI_CLONE(SocketAddressLegacy, localAddr);
- data->remoteAddr = QAPI_CLONE(SocketAddressLegacy, remoteAddr);
+ data->localAddr = QAPI_CLONE(SocketAddress, localAddr);
+ data->remoteAddr = QAPI_CLONE(SocketAddress, remoteAddr);
trace_qio_channel_socket_dgram_async(ioc, localAddr, remoteAddr);
qio_task_run_in_thread(task,
cioc->fd = qemu_accept(ioc->fd, (struct sockaddr *)&cioc->remoteAddr,
&cioc->remoteAddrLen);
if (cioc->fd < 0) {
- trace_qio_channel_socket_accept_fail(ioc);
if (errno == EINTR) {
goto retry;
}
+ error_setg_errno(errp, errno, "Unable to accept connection");
+ trace_qio_channel_socket_accept_fail(ioc);
goto error;
}