client->refs++;
VIR_DEBUG("Registering client event callback %d", mode);
- if (virNetSocketAddIOCallback(client->sock,
+ if (!client->sock ||
+ virNetSocketAddIOCallback(client->sock,
mode,
virNetServerClientDispatchEvent,
client,
int virNetServerClientGetFD(virNetServerClientPtr client)
{
- int fd = 0;
+ int fd = -1;
virNetServerClientLock(client);
- fd = virNetSocketGetFD(client->sock);
+ if (client->sock)
+ fd = virNetSocketGetFD(client->sock);
virNetServerClientUnlock(client);
return fd;
}
int virNetServerClientGetLocalIdentity(virNetServerClientPtr client,
uid_t *uid, pid_t *pid)
{
- int ret;
+ int ret = -1;
virNetServerClientLock(client);
- ret = virNetSocketGetLocalIdentity(client->sock, uid, pid);
+ if (client->sock)
+ ret = virNetSocketGetLocalIdentity(client->sock, uid, pid);
virNetServerClientUnlock(client);
return ret;
}
if (client->sasl)
secure = true;
#endif
- if (virNetSocketIsLocal(client->sock))
+ if (client->sock && virNetSocketIsLocal(client->sock))
secure = true;
virNetServerClientUnlock(client);
return secure;
const char *virNetServerClientLocalAddrString(virNetServerClientPtr client)
{
+ if (!client->sock)
+ return NULL;
return virNetSocketLocalAddrString(client->sock);
}
const char *virNetServerClientRemoteAddrString(virNetServerClientPtr client)
{
+ if (!client->sock)
+ return NULL;
return virNetSocketRemoteAddrString(client->sock);
}
virNetTLSSessionFree(client->tls);
client->tls = NULL;
}
- if (client->sock) {
- virNetSocketFree(client->sock);
- client->sock = NULL;
- }
+ client->wantClose = true;
while (client->rx) {
virNetMessagePtr msg
virNetMessageFree(msg);
}
+ if (client->sock) {
+ virNetSocketFree(client->sock);
+ client->sock = NULL;
+ }
+
virNetServerClientUnlock(client);
}