mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
daemonClientStream: Use unsigned int to store stream @serial
The stream serial number is the serial number of the RPC call that initiated a data transfer. And as such can never be negative. Moreover, when looking up internal state for a stream, the serial numbers are compared. But hey, the serial number in message header is unsigned too! Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
3883a29782
commit
8def0a22a3
@ -42,7 +42,7 @@ struct daemonClientStream {
|
|||||||
|
|
||||||
virStreamPtr st;
|
virStreamPtr st;
|
||||||
int procedure;
|
int procedure;
|
||||||
int serial;
|
unsigned int serial;
|
||||||
|
|
||||||
unsigned int recvEOF : 1;
|
unsigned int recvEOF : 1;
|
||||||
unsigned int closed : 1;
|
unsigned int closed : 1;
|
||||||
@ -92,11 +92,11 @@ daemonStreamUpdateEvents(daemonClientStream *stream)
|
|||||||
* fast stream, but slow client
|
* fast stream, but slow client
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
daemonStreamMessageFinished(virNetMessagePtr msg ATTRIBUTE_UNUSED,
|
daemonStreamMessageFinished(virNetMessagePtr msg,
|
||||||
void *opaque)
|
void *opaque)
|
||||||
{
|
{
|
||||||
daemonClientStream *stream = opaque;
|
daemonClientStream *stream = opaque;
|
||||||
VIR_DEBUG("stream=%p proc=%d serial=%d",
|
VIR_DEBUG("stream=%p proc=%d serial=%u",
|
||||||
stream, msg->header.proc, msg->header.serial);
|
stream, msg->header.proc, msg->header.serial);
|
||||||
|
|
||||||
stream->tx = 1;
|
stream->tx = 1;
|
||||||
@ -293,7 +293,7 @@ daemonStreamFilter(virNetServerClientPtr client ATTRIBUTE_UNUSED,
|
|||||||
msg->header.serial != stream->serial)
|
msg->header.serial != stream->serial)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
VIR_DEBUG("Incoming client=%p, rx=%p, serial=%d, proc=%d, status=%d",
|
VIR_DEBUG("Incoming client=%p, rx=%p, serial=%u, proc=%d, status=%d",
|
||||||
client, stream->rx, msg->header.proc,
|
client, stream->rx, msg->header.proc,
|
||||||
msg->header.serial, msg->header.status);
|
msg->header.serial, msg->header.status);
|
||||||
|
|
||||||
@ -324,7 +324,7 @@ daemonCreateClientStream(virNetServerClientPtr client,
|
|||||||
daemonClientStream *stream;
|
daemonClientStream *stream;
|
||||||
daemonClientPrivatePtr priv = virNetServerClientGetPrivateData(client);
|
daemonClientPrivatePtr priv = virNetServerClientGetPrivateData(client);
|
||||||
|
|
||||||
VIR_DEBUG("client=%p, proc=%d, serial=%d, st=%p",
|
VIR_DEBUG("client=%p, proc=%d, serial=%u, st=%p",
|
||||||
client, header->proc, header->serial, st);
|
client, header->proc, header->serial, st);
|
||||||
|
|
||||||
if (VIR_ALLOC(stream) < 0)
|
if (VIR_ALLOC(stream) < 0)
|
||||||
@ -360,7 +360,7 @@ int daemonFreeClientStream(virNetServerClientPtr client,
|
|||||||
if (stream->refs)
|
if (stream->refs)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
VIR_DEBUG("client=%p, proc=%d, serial=%d",
|
VIR_DEBUG("client=%p, proc=%d, serial=%u",
|
||||||
client, stream->procedure, stream->serial);
|
client, stream->procedure, stream->serial);
|
||||||
|
|
||||||
virObjectUnref(stream->prog);
|
virObjectUnref(stream->prog);
|
||||||
@ -398,7 +398,7 @@ int daemonAddClientStream(virNetServerClientPtr client,
|
|||||||
daemonClientStream *stream,
|
daemonClientStream *stream,
|
||||||
bool transmit)
|
bool transmit)
|
||||||
{
|
{
|
||||||
VIR_DEBUG("client=%p, proc=%d, serial=%d, st=%p, transmit=%d",
|
VIR_DEBUG("client=%p, proc=%d, serial=%u, st=%p, transmit=%d",
|
||||||
client, stream->procedure, stream->serial, stream->st, transmit);
|
client, stream->procedure, stream->serial, stream->st, transmit);
|
||||||
daemonClientPrivatePtr priv = virNetServerClientGetPrivateData(client);
|
daemonClientPrivatePtr priv = virNetServerClientGetPrivateData(client);
|
||||||
|
|
||||||
@ -448,7 +448,7 @@ int
|
|||||||
daemonRemoveClientStream(virNetServerClientPtr client,
|
daemonRemoveClientStream(virNetServerClientPtr client,
|
||||||
daemonClientStream *stream)
|
daemonClientStream *stream)
|
||||||
{
|
{
|
||||||
VIR_DEBUG("client=%p, proc=%d, serial=%d, st=%p",
|
VIR_DEBUG("client=%p, proc=%d, serial=%u, st=%p",
|
||||||
client, stream->procedure, stream->serial, stream->st);
|
client, stream->procedure, stream->serial, stream->st);
|
||||||
daemonClientPrivatePtr priv = virNetServerClientGetPrivateData(client);
|
daemonClientPrivatePtr priv = virNetServerClientGetPrivateData(client);
|
||||||
daemonClientStream *curr = priv->streams;
|
daemonClientStream *curr = priv->streams;
|
||||||
@ -515,7 +515,7 @@ daemonStreamHandleWriteData(virNetServerClientPtr client,
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
VIR_DEBUG("client=%p, stream=%p, proc=%d, serial=%d, len=%zu, offset=%zu",
|
VIR_DEBUG("client=%p, stream=%p, proc=%d, serial=%u, len=%zu, offset=%zu",
|
||||||
client, stream, msg->header.proc, msg->header.serial,
|
client, stream, msg->header.proc, msg->header.serial,
|
||||||
msg->bufferLength, msg->bufferOffset);
|
msg->bufferLength, msg->bufferOffset);
|
||||||
|
|
||||||
@ -565,7 +565,7 @@ daemonStreamHandleFinish(virNetServerClientPtr client,
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
VIR_DEBUG("client=%p, stream=%p, proc=%d, serial=%d",
|
VIR_DEBUG("client=%p, stream=%p, proc=%d, serial=%u",
|
||||||
client, stream, msg->header.proc, msg->header.serial);
|
client, stream, msg->header.proc, msg->header.serial);
|
||||||
|
|
||||||
stream->closed = 1;
|
stream->closed = 1;
|
||||||
@ -602,7 +602,7 @@ daemonStreamHandleAbort(virNetServerClientPtr client,
|
|||||||
daemonClientStream *stream,
|
daemonClientStream *stream,
|
||||||
virNetMessagePtr msg)
|
virNetMessagePtr msg)
|
||||||
{
|
{
|
||||||
VIR_DEBUG("client=%p, stream=%p, proc=%d, serial=%d",
|
VIR_DEBUG("client=%p, stream=%p, proc=%d, serial=%u",
|
||||||
client, stream, msg->header.proc, msg->header.serial);
|
client, stream, msg->header.proc, msg->header.serial);
|
||||||
virNetMessageError rerr;
|
virNetMessageError rerr;
|
||||||
|
|
||||||
|
@ -147,9 +147,9 @@ virNetServerProgramSendError(unsigned program,
|
|||||||
virNetMessageErrorPtr rerr,
|
virNetMessageErrorPtr rerr,
|
||||||
int procedure,
|
int procedure,
|
||||||
int type,
|
int type,
|
||||||
int serial)
|
unsigned int serial)
|
||||||
{
|
{
|
||||||
VIR_DEBUG("prog=%d ver=%d proc=%d type=%d serial=%d msg=%p rerr=%p",
|
VIR_DEBUG("prog=%d ver=%d proc=%d type=%d serial=%u msg=%p rerr=%p",
|
||||||
program, version, procedure, type, serial, msg, rerr);
|
program, version, procedure, type, serial, msg, rerr);
|
||||||
|
|
||||||
virNetMessageSaveError(rerr);
|
virNetMessageSaveError(rerr);
|
||||||
@ -217,7 +217,7 @@ int virNetServerProgramSendStreamError(virNetServerProgramPtr prog,
|
|||||||
virNetMessagePtr msg,
|
virNetMessagePtr msg,
|
||||||
virNetMessageErrorPtr rerr,
|
virNetMessageErrorPtr rerr,
|
||||||
int procedure,
|
int procedure,
|
||||||
int serial)
|
unsigned int serial)
|
||||||
{
|
{
|
||||||
return virNetServerProgramSendError(prog->program,
|
return virNetServerProgramSendError(prog->program,
|
||||||
prog->version,
|
prog->version,
|
||||||
@ -282,7 +282,7 @@ int virNetServerProgramDispatch(virNetServerProgramPtr prog,
|
|||||||
|
|
||||||
memset(&rerr, 0, sizeof(rerr));
|
memset(&rerr, 0, sizeof(rerr));
|
||||||
|
|
||||||
VIR_DEBUG("prog=%d ver=%d type=%d status=%d serial=%d proc=%d",
|
VIR_DEBUG("prog=%d ver=%d type=%d status=%d serial=%u proc=%d",
|
||||||
msg->header.prog, msg->header.vers, msg->header.type,
|
msg->header.prog, msg->header.vers, msg->header.type,
|
||||||
msg->header.status, msg->header.serial, msg->header.proc);
|
msg->header.status, msg->header.serial, msg->header.proc);
|
||||||
|
|
||||||
@ -312,7 +312,7 @@ int virNetServerProgramDispatch(virNetServerProgramPtr prog,
|
|||||||
* stream packets after we closed down a stream. Just drop & ignore
|
* stream packets after we closed down a stream. Just drop & ignore
|
||||||
* these.
|
* these.
|
||||||
*/
|
*/
|
||||||
VIR_INFO("Ignoring unexpected stream data serial=%d proc=%d status=%d",
|
VIR_INFO("Ignoring unexpected stream data serial=%u proc=%d status=%d",
|
||||||
msg->header.serial, msg->header.proc, msg->header.status);
|
msg->header.serial, msg->header.proc, msg->header.status);
|
||||||
/* Send a dummy reply to free up 'msg' & unblock client rx */
|
/* Send a dummy reply to free up 'msg' & unblock client rx */
|
||||||
virNetMessageClear(msg);
|
virNetMessageClear(msg);
|
||||||
@ -510,7 +510,7 @@ int virNetServerProgramSendStreamData(virNetServerProgramPtr prog,
|
|||||||
virNetServerClientPtr client,
|
virNetServerClientPtr client,
|
||||||
virNetMessagePtr msg,
|
virNetMessagePtr msg,
|
||||||
int procedure,
|
int procedure,
|
||||||
int serial,
|
unsigned int serial,
|
||||||
const char *data,
|
const char *data,
|
||||||
size_t len)
|
size_t len)
|
||||||
{
|
{
|
||||||
|
@ -90,7 +90,7 @@ int virNetServerProgramSendStreamError(virNetServerProgramPtr prog,
|
|||||||
virNetMessagePtr msg,
|
virNetMessagePtr msg,
|
||||||
virNetMessageErrorPtr rerr,
|
virNetMessageErrorPtr rerr,
|
||||||
int procedure,
|
int procedure,
|
||||||
int serial);
|
unsigned int serial);
|
||||||
|
|
||||||
int virNetServerProgramUnknownError(virNetServerClientPtr client,
|
int virNetServerProgramUnknownError(virNetServerClientPtr client,
|
||||||
virNetMessagePtr msg,
|
virNetMessagePtr msg,
|
||||||
@ -100,7 +100,7 @@ int virNetServerProgramSendStreamData(virNetServerProgramPtr prog,
|
|||||||
virNetServerClientPtr client,
|
virNetServerClientPtr client,
|
||||||
virNetMessagePtr msg,
|
virNetMessagePtr msg,
|
||||||
int procedure,
|
int procedure,
|
||||||
int serial,
|
unsigned int serial,
|
||||||
const char *data,
|
const char *data,
|
||||||
size_t len);
|
size_t len);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user