diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | server/agent-msg-filter.c | 8 | ||||
-rw-r--r-- | server/dispatcher.c | 34 | ||||
-rw-r--r-- | server/inputs_channel.c | 34 | ||||
-rw-r--r-- | server/jpeg_encoder.c | 14 | ||||
-rw-r--r-- | server/main_channel.c | 66 | ||||
-rw-r--r-- | server/mjpeg_encoder.c | 2 | ||||
-rw-r--r-- | server/red_channel.c | 96 | ||||
-rw-r--r-- | server/red_client_cache.h | 4 | ||||
-rw-r--r-- | server/red_client_shared_cache.h | 8 | ||||
-rw-r--r-- | server/red_dispatcher.c | 37 | ||||
-rw-r--r-- | server/red_memslots.c | 28 | ||||
-rw-r--r-- | server/red_parse_qxl.c | 45 | ||||
-rw-r--r-- | server/red_tunnel_worker.c | 240 | ||||
-rw-r--r-- | server/red_worker.c | 602 | ||||
-rw-r--r-- | server/red_worker.h | 4 | ||||
-rw-r--r-- | server/reds.c | 448 | ||||
-rw-r--r-- | server/smartcard.c | 24 | ||||
-rw-r--r-- | server/snd_worker.c | 98 | ||||
-rw-r--r-- | server/spicevmc.c | 6 | ||||
-rw-r--r-- | server/zlib_encoder.c | 16 |
21 files changed, 907 insertions, 908 deletions
@@ -23,3 +23,4 @@ Makefile Makefile.in spice-server.pc stamp-h1 +INSTALL diff --git a/server/agent-msg-filter.c b/server/agent-msg-filter.c index 71ff49b..7584b52 100644 --- a/server/agent-msg-filter.c +++ b/server/agent-msg-filter.c @@ -39,7 +39,7 @@ int agent_msg_filter_process_data(struct AgentMsgFilter *filter, struct VDAgentMessage msg_header; if (len > VD_AGENT_MAX_DATA_SIZE) { - red_printf("invalid agent message: too large"); + spice_printerr("invalid agent message: too large"); return AGENT_MSG_FILTER_PROTO_ERROR; } @@ -47,7 +47,7 @@ int agent_msg_filter_process_data(struct AgentMsgFilter *filter, if (filter->msg_data_to_read) { data_to_read: if (len > filter->msg_data_to_read) { - red_printf("invalid agent message: data exceeds size from header"); + spice_printerr("invalid agent message: data exceeds size from header"); return AGENT_MSG_FILTER_PROTO_ERROR; } filter->msg_data_to_read -= len; @@ -55,14 +55,14 @@ data_to_read: } if (len < sizeof(msg_header)) { - red_printf("invalid agent message: incomplete header"); + spice_printerr("invalid agent message: incomplete header"); return AGENT_MSG_FILTER_PROTO_ERROR; } memcpy(&msg_header, data, sizeof(msg_header)); len -= sizeof(msg_header); if (msg_header.protocol != VD_AGENT_PROTOCOL) { - red_printf("invalid agent protocol: %u", msg_header.protocol); + spice_printerr("invalid agent protocol: %u", msg_header.protocol); return AGENT_MSG_FILTER_PROTO_ERROR; } diff --git a/server/dispatcher.c b/server/dispatcher.c index c15a7a1..cc20f89 100644 --- a/server/dispatcher.c +++ b/server/dispatcher.c @@ -27,14 +27,12 @@ #include <fcntl.h> #include <poll.h> +#define SPICE_LOG_DOMAIN "SpiceDispatcher" + #include "common/mem.h" #include "common/spice_common.h" - #include "dispatcher.h" -#define DISPATCHER_DEBUG_PRINTF(level, ...) \ - red_printf_debug(level, "DISP", ##__VA_ARGS__) - //#define DEBUG_DISPATCHER #ifdef DEBUG_DISPATCHER @@ -64,10 +62,10 @@ static int read_safe(int fd, void *buf, size_t size, int block) if (!block) { while ((ret = poll(&pollfd, 1, 0)) == -1) { if (errno == EINTR) { - DISPATCHER_DEBUG_PRINTF(3, "EINTR in poll"); + spice_debug("EINTR in poll"); continue; } - red_error("poll failed"); + spice_error("poll failed"); return -1; } if (!(pollfd.revents & POLLIN)) { @@ -78,13 +76,13 @@ static int read_safe(int fd, void *buf, size_t size, int block) ret = read(fd, buf + read_size, size - read_size); if (ret == -1) { if (errno == EINTR) { - DISPATCHER_DEBUG_PRINTF(3, "EINTR in read"); + spice_debug("EINTR in read"); continue; } return -1; } if (ret == 0) { - red_error("broken pipe on read"); + spice_error("broken pipe on read"); return -1; } read_size += ret; @@ -105,7 +103,7 @@ static int write_safe(int fd, void *buf, size_t size) ret = write(fd, buf + written_size, size - written_size); if (ret == -1) { if (errno != EINTR) { - DISPATCHER_DEBUG_PRINTF(3, "EINTR in write\n"); + spice_debug("EINTR in write"); return -1; } continue; @@ -124,7 +122,7 @@ static int dispatcher_handle_single_read(Dispatcher *dispatcher) uint32_t ack = ACK; if ((ret = read_safe(dispatcher->recv_fd, &type, sizeof(type), 0)) == -1) { - red_printf("error reading from dispatcher: %d", errno); + spice_printerr("error reading from dispatcher: %d", errno); return 0; } if (ret == 0) { @@ -133,19 +131,19 @@ static int dispatcher_handle_single_read(Dispatcher *dispatcher) } msg = &dispatcher->messages[type]; if (read_safe(dispatcher->recv_fd, payload, msg->size, 1) == -1) { - red_printf("error reading from dispatcher: %d", errno); + spice_printerr("error reading from dispatcher: %d", errno); /* TODO: close socketpair? */ return 0; } if (msg->handler) { msg->handler(dispatcher->opaque, (void *)payload); } else { - red_printf("error: no handler for message type %d", type); + spice_printerr("error: no handler for message type %d", type); } if (msg->ack == DISPATCHER_ACK) { if (write_safe(dispatcher->recv_fd, &ack, sizeof(ack)) == -1) { - red_printf("error writing ack for message %d", type); + spice_printerr("error writing ack for message %d", type); /* TODO: close socketpair? */ } } else if (msg->ack == DISPATCHER_ASYNC && dispatcher->handle_async_done) { @@ -177,20 +175,20 @@ void dispatcher_send_message(Dispatcher *dispatcher, uint32_t message_type, msg = &dispatcher->messages[message_type]; pthread_mutex_lock(&dispatcher->lock); if (write_safe(send_fd, &message_type, sizeof(message_type)) == -1) { - red_printf("error: failed to send message type for message %d", + spice_printerr("error: failed to send message type for message %d", message_type); goto unlock; } if (write_safe(send_fd, payload, msg->size) == -1) { - red_printf("error: failed to send message body for message %d", + spice_printerr("error: failed to send message body for message %d", message_type); goto unlock; } if (msg->ack == DISPATCHER_ACK) { if (read_safe(send_fd, &ack, sizeof(ack), 1) == -1) { - red_printf("error: failed to read ack"); + spice_printerr("error: failed to read ack"); } else if (ack != ACK) { - red_printf("error: got wrong ack value in dispatcher " + spice_printerr("error: got wrong ack value in dispatcher " "for message %d\n", message_type); /* TODO handling error? */ } @@ -259,7 +257,7 @@ void dispatcher_init(Dispatcher *dispatcher, size_t max_message_type, #endif dispatcher->opaque = opaque; if (socketpair(AF_LOCAL, SOCK_STREAM, 0, channels) == -1) { - red_error("socketpair failed %s", strerror(errno)); + spice_error("socketpair failed %s", strerror(errno)); return; } pthread_mutex_init(&dispatcher->lock, NULL); diff --git a/server/inputs_channel.c b/server/inputs_channel.c index da4c53c..ad247f4 100644 --- a/server/inputs_channel.c +++ b/server/inputs_channel.c @@ -115,7 +115,7 @@ int inputs_inited(void) int inputs_set_keyboard(SpiceKbdInstance *_keyboard) { if (keyboard) { - red_printf("already have keyboard"); + spice_printerr("already have keyboard"); return -1; } keyboard = _keyboard; @@ -126,7 +126,7 @@ int inputs_set_keyboard(SpiceKbdInstance *_keyboard) int inputs_set_mouse(SpiceMouseInstance *_mouse) { if (mouse) { - red_printf("already have mouse"); + spice_printerr("already have mouse"); return -1; } mouse = _mouse; @@ -137,7 +137,7 @@ int inputs_set_mouse(SpiceMouseInstance *_mouse) int inputs_set_tablet(SpiceTabletInstance *_tablet) { if (tablet) { - red_printf("already have tablet"); + spice_printerr("already have tablet"); return -1; } tablet = _tablet; @@ -152,7 +152,7 @@ int inputs_has_tablet(void) void inputs_detach_tablet(SpiceTabletInstance *_tablet) { - red_printf(""); + spice_printerr(""); tablet = NULL; } @@ -166,7 +166,7 @@ void inputs_set_tablet_logical_size(int x_res, int y_res) const VDAgentMouseState *inputs_get_mouse_state(void) { - ASSERT(g_inputs_channel); + spice_assert(g_inputs_channel); return &g_inputs_channel->mouse_state; } @@ -177,7 +177,7 @@ static uint8_t *inputs_channel_alloc_msg_rcv_buf(RedChannelClient *rcc, InputsChannel *inputs_channel = SPICE_CONTAINEROF(rcc->channel, InputsChannel, base); if (size > RECEIVE_BUF_SIZE) { - red_printf("error: too large incoming message"); + spice_printerr("error: too large incoming message"); return NULL; } return inputs_channel->recv_buf; @@ -291,7 +291,7 @@ static int inputs_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, ui InputsChannelClient *icc = (InputsChannelClient *)rcc; uint8_t *buf = (uint8_t *)message; - ASSERT(g_inputs_channel == inputs_channel); + spice_assert(g_inputs_channel == inputs_channel); switch (type) { case SPICE_MSGC_INPUTS_KEY_DOWN: { SpiceMsgcKeyDown *key_up = (SpiceMsgcKeyDown *)buf; @@ -333,7 +333,7 @@ static int inputs_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, ui if (reds_get_mouse_mode() != SPICE_MOUSE_MODE_CLIENT) { break; } - ASSERT((reds_get_agent_mouse() && reds_has_vdagent()) || tablet); + spice_assert((reds_get_agent_mouse() && reds_has_vdagent()) || tablet); if (!reds_get_agent_mouse() || !reds_has_vdagent()) { SpiceTabletInterface *sif; sif = SPICE_CONTAINEROF(tablet->base.sif, SpiceTabletInterface, base); @@ -425,7 +425,7 @@ static int inputs_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, ui case SPICE_MSGC_DISCONNECTING: break; default: - red_printf("unexpected type %d", type); + spice_printerr("unexpected type %d", type); return FALSE; } return TRUE; @@ -451,7 +451,7 @@ static void inputs_channel_on_disconnect(RedChannelClient *rcc) static void inputs_migrate(RedChannelClient *rcc) { - ASSERT(g_inputs_channel == (InputsChannel *)rcc->channel); + spice_assert(g_inputs_channel == (InputsChannel *)rcc->channel); red_channel_client_pipe_add_type(rcc, PIPE_ITEM_MIGRATE); } @@ -473,7 +473,7 @@ static int inputs_channel_config_socket(RedChannelClient *rcc) if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY, &delay_val, sizeof(delay_val)) == -1) { if (errno != ENOTSUP && errno != ENOPROTOOPT) { - red_printf("setsockopt failed, %s", strerror(errno)); + spice_printerr("setsockopt failed, %s", strerror(errno)); return FALSE; } } @@ -492,10 +492,10 @@ static void inputs_connect(RedChannel *channel, RedClient *client, { InputsChannelClient *icc; - ASSERT(g_inputs_channel); - ASSERT(channel == &g_inputs_channel->base); + spice_assert(g_inputs_channel); + spice_assert(channel == &g_inputs_channel->base); - red_printf("inputs channel client create"); + spice_printerr("inputs channel client create"); icc = (InputsChannelClient*)red_channel_client_create(sizeof(InputsChannelClient), channel, client, @@ -530,7 +530,7 @@ void inputs_init(void) ChannelCbs channel_cbs = { NULL, }; ClientCbs client_cbs = { NULL, }; - ASSERT(!g_inputs_channel); + spice_assert(!g_inputs_channel); channel_cbs.config_socket = inputs_channel_config_socket; channel_cbs.on_disconnect = inputs_channel_on_disconnect; @@ -551,7 +551,7 @@ void inputs_init(void) &channel_cbs); if (!g_inputs_channel) { - red_error("failed to allocate Inputs Channel"); + spice_error("failed to allocate Inputs Channel"); } client_cbs.connect = inputs_connect; @@ -561,6 +561,6 @@ void inputs_init(void) reds_register_channel(&g_inputs_channel->base); if (!(key_modifiers_timer = core->timer_add(key_modifiers_sender, NULL))) { - red_error("key modifiers timer create failed"); + spice_error("key modifiers timer create failed"); } } diff --git a/server/jpeg_encoder.c b/server/jpeg_encoder.c index d0e2fc1..01732ff 100644 --- a/server/jpeg_encoder.c +++ b/server/jpeg_encoder.c @@ -49,7 +49,7 @@ static void dest_mgr_init_destination(j_compress_ptr cinfo) &enc->dest_mgr.next_output_byte); if (enc->dest_mgr.free_in_buffer == 0) { - red_error("not enough space"); + spice_error("not enough space"); } } @@ -63,7 +63,7 @@ static boolean dest_mgr_empty_output_buffer(j_compress_ptr cinfo) &enc->dest_mgr.next_output_byte); if (enc->dest_mgr.free_in_buffer == 0) { - red_error("not enough space"); + spice_error("not enough space"); } enc->cur_image.out_size += enc->dest_mgr.free_in_buffer; return TRUE; @@ -110,7 +110,7 @@ static void convert_RGB16_to_RGB24(uint8_t *line, int width, uint8_t **out_line) uint8_t *out_pix; int x; - ASSERT(out_line && *out_line); + spice_assert(out_line && *out_line); out_pix = *out_line; @@ -127,7 +127,7 @@ static void convert_BGR24_to_RGB24(uint8_t *line, int width, uint8_t **out_line) int x; uint8_t *out_pix; - ASSERT(out_line && *out_line); + spice_assert(out_line && *out_line); out_pix = *out_line; @@ -145,7 +145,7 @@ static void convert_BGRX32_to_RGB24(uint8_t *line, int width, uint8_t **out_line uint8_t *out_pix; int x; - ASSERT(out_line && *out_line); + spice_assert(out_line && *out_line); out_pix = *out_line; @@ -167,7 +167,7 @@ static void convert_RGB24_to_RGB24(uint8_t *line, int width, uint8_t **out_line) if (lines == lines_end) { \ int n = jpeg->usr->more_lines(jpeg->usr, &lines); \ if (n <= 0) { \ - red_error("more lines failed\n"); \ + spice_error("more lines failed"); \ } \ lines_end = lines + n * stride; \ } \ @@ -226,7 +226,7 @@ int jpeg_encode(JpegEncoderContext *jpeg, int quality, JpegEncoderImageType type enc->cur_image.convert_line_to_RGB24 = convert_BGRX32_to_RGB24; break; default: - red_error("bad image type"); + spice_error("bad image type"); } enc->cinfo.image_width = width; diff --git a/server/main_channel.c b/server/main_channel.c index 7a2938c..713f121 100644 --- a/server/main_channel.c +++ b/server/main_channel.c @@ -162,7 +162,7 @@ int main_channel_is_connected(MainChannel *main_chan) // real disconnection of main channel static void main_channel_client_on_disconnect(RedChannelClient *rcc) { - red_printf("rcc=%p", rcc); + spice_printerr("rcc=%p", rcc); reds_client_disconnect(rcc->client); // red_channel_client_disconnect(rcc); } @@ -333,7 +333,7 @@ static PipeItem *main_multi_media_time_item_new( static void main_channel_push_channels(MainChannelClient *mcc) { if (red_client_during_migrate_at_target(mcc->base.client)) { - red_printf("warning: ignoring unexpected SPICE_MSGC_MAIN_ATTACH_CHANNELS" + spice_printerr("warning: ignoring unexpected SPICE_MSGC_MAIN_ATTACH_CHANNELS" "during migration"); return; } @@ -482,7 +482,7 @@ static uint64_t main_channel_handle_migrate_data_get_serial(RedChannelClient *ba MainMigrateData *data = message; if (size < sizeof(*data)) { - red_printf("bad message size"); + spice_printerr("bad message size"); return 0; } return data->serial; @@ -495,7 +495,7 @@ static uint64_t main_channel_handle_migrate_data(RedChannelClient *base, MainMigrateData *data = message; if (size < sizeof(*data)) { - red_printf("bad message size"); + spice_printerr("bad message size"); return FALSE; } mcc->ping_id = data->ping_id; @@ -636,7 +636,7 @@ void main_channel_push_multi_media_time(MainChannel *main_chan, int time) static void main_channel_fill_mig_target(MainChannel *main_channel, RedsMigSpice *mig_target) { - ASSERT(mig_target); + spice_assert(mig_target); free(main_channel->mig_target.host); main_channel->mig_target.host = spice_strdup(mig_target->host); free(main_channel->mig_target.cert_subject); @@ -658,7 +658,7 @@ static void main_channel_marshall_migrate_switch(SpiceMarshaller *m, RedChannelC SpiceMsgMainMigrationSwitchHost migrate; MainChannel *main_ch; - red_printf(""); + spice_printerr(""); main_ch = SPICE_CONTAINEROF(rcc->channel, MainChannel, base); migrate.port = main_ch->mig_target.port; migrate.sport = main_ch->mig_target.sport; @@ -689,7 +689,7 @@ static void main_channel_send_item(RedChannelClient *rcc, PipeItem *base) SpiceMarshaller *m = red_channel_client_get_marshaller(rcc); if (!mcc->init_sent && base->type != SPICE_MSG_MAIN_INIT) { - red_printf("Init msg for client %p was not sent yet " + spice_printerr("Init msg for client %p was not sent yet " "(client is probably during migration). Ignoring msg type %d", rcc->client, base->type); main_channel_release_pipe_item(rcc, base, FALSE); @@ -769,8 +769,8 @@ static void main_channel_release_pipe_item(RedChannelClient *rcc, case SPICE_MSG_MAIN_AGENT_DATA: { AgentDataPipeItem *data = (AgentDataPipeItem*)base; if (!--data->refs->refs) { - red_printf_debug(1, "MAIN", "SPICE_MSG_MAIN_AGENT_DATA %p %p, %d", - data, data->refs, data->refs->refs); + spice_debug("SPICE_MSG_MAIN_AGENT_DATA %p %p, %d", + data, data->refs, data->refs->refs); free(data->refs); data->free_data(data->data, data->opaque); } @@ -784,19 +784,19 @@ static void main_channel_release_pipe_item(RedChannelClient *rcc, void main_channel_client_handle_migrate_connected(MainChannelClient *mcc, int success) { - red_printf("client %p connected: %d", mcc->base.client, success); + spice_printerr("client %p connected: %d", mcc->base.client, success); if (mcc->mig_wait_connect) { MainChannel *main_channel = SPICE_CONTAINEROF(mcc->base.channel, MainChannel, base); mcc->mig_wait_connect = FALSE; mcc->mig_connect_ok = success; - ASSERT(main_channel->num_clients_mig_wait); + spice_assert(main_channel->num_clients_mig_wait); if (!--main_channel->num_clients_mig_wait) { reds_on_main_migrate_connected(); } } else { if (success) { - red_printf("client %p MIGRATE_CANCEL", mcc->base.client); + spice_printerr("client %p MIGRATE_CANCEL", mcc->base.client); red_channel_client_pipe_add_type(&mcc->base, SPICE_MSG_MAIN_MIGRATE_CANCEL); } } @@ -805,12 +805,12 @@ void main_channel_client_handle_migrate_connected(MainChannelClient *mcc, int su void main_channel_client_handle_migrate_end(MainChannelClient *mcc) { if (!red_client_during_migrate_at_target(mcc->base.client)) { - red_printf("unexpected SPICE_MSGC_MIGRATE_END"); + spice_printerr("unexpected SPICE_MSGC_MIGRATE_END"); return; } if (!red_channel_client_test_remote_cap(&mcc->base, SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE)) { - red_printf("unexpected SPICE_MSGC_MIGRATE_END, " + spice_printerr("unexpected SPICE_MSGC_MIGRATE_END, " "client does not support semi-seamless migration"); return; } @@ -829,7 +829,7 @@ static int main_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, uint switch (type) { case SPICE_MSGC_MAIN_AGENT_START: - red_printf("agent start"); + spice_printerr("agent start"); if (!main_chan) { return FALSE; } @@ -877,14 +877,14 @@ static int main_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, uint if (roundtrip <= mcc->latency) { // probably high load on client or server result with incorrect values mcc->latency = 0; - red_printf("net test: invalid values, latency %" PRIu64 + spice_printerr("net test: invalid values, latency %" PRIu64 " roundtrip %" PRIu64 ". assuming high" "bandwidth", mcc->latency, roundtrip); break; } mcc->bitrate_per_sec = (uint64_t)(NET_TEST_BYTES * 8) * 1000000 / (roundtrip - mcc->latency); - red_printf("net test: latency %f ms, bitrate %"PRIu64" bps (%f Mbps)%s", + spice_printerr("net test: latency %f ms, bitrate %"PRIu64" bps (%f Mbps)%s", (double)mcc->latency / 1000, mcc->bitrate_per_sec, (double)mcc->bitrate_per_sec / 1024 / 1024, @@ -892,7 +892,7 @@ static int main_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, uint mcc->net_test_stage = NET_TEST_STAGE_INVALID; break; default: - red_printf("invalid net test stage, ping id %d test id %d stage %d", + spice_printerr("invalid net test stage, ping id %d test id %d stage %d", ping->id, mcc->net_test_id, mcc->net_test_stage); @@ -914,7 +914,7 @@ static int main_channel_handle_parsed(RedChannelClient *rcc, uint32_t size, uint main_channel_client_handle_migrate_end(mcc); break; default: - red_printf("unexpected type %d", type); + spice_printerr("unexpected type %d", type); } return TRUE; } @@ -955,7 +955,7 @@ static int main_channel_handle_migrate_flush_mark(RedChannelClient *rcc) static void do_ping_client(MainChannelClient *mcc, const char *opt, int has_interval, int interval) { - red_printf(""); + spice_printerr(""); if (!opt) { main_channel_client_push_ping(mcc, 0); } else if (!strcmp(opt, "on")) { @@ -975,7 +975,7 @@ static void ping_timer_cb(void *opaque) MainChannelClient *mcc = opaque; if (!red_channel_client_is_connected(&mcc->base)) { - red_printf("not connected to peer, ping off"); + spice_printerr("not connected to peer, ping off"); core->timer_cancel(mcc->ping_timer); return; } @@ -1003,7 +1003,7 @@ static MainChannelClient *main_channel_client_create(MainChannel *main_chan, Red mcc->bitrate_per_sec = ~0; #ifdef RED_STATISTICS if (!(mcc->ping_timer = core->timer_add(ping_timer_cb, NULL))) { - red_error("ping timer create failed"); + spice_error("ping timer create failed"); } mcc->ping_interval = PING_INTERVAL; #endif @@ -1017,12 +1017,12 @@ MainChannelClient *main_channel_link(MainChannel *channel, RedClient *client, { MainChannelClient *mcc; - ASSERT(channel); + spice_assert(channel); // TODO - migration - I removed it from channel creation, now put it // into usage somewhere (not an issue until we return migration to it's // former glory) - red_printf("add main channel client"); + spice_printerr("add main channel client"); mcc = main_channel_client_create(channel, client, stream, connection_id, num_common_caps, common_caps, num_caps, caps); @@ -1083,14 +1083,14 @@ MainChannel* main_channel_init(void) spice_get_client_channel_parser(SPICE_CHANNEL_MAIN, NULL), main_channel_handle_parsed, &channel_cbs); - ASSERT(channel); + spice_assert(channel); red_channel_set_cap(channel, SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE); return (MainChannel *)channel; } RedChannelClient* main_channel_client_get_base(MainChannelClient* mcc) { - ASSERT(mcc); + spice_assert(mcc); return &mcc->base; } @@ -1107,7 +1107,7 @@ int main_channel_migrate_connect(MainChannel *main_channel, RedsMigSpice *mig_ta if (red_channel_client_test_remote_cap(&mcc->base, SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE)) { if (red_client_during_migrate_at_target(mcc->base.client)) { - red_printf("client %p: wait till previous migration completes", mcc->base.client); + spice_printerr("client %p: wait till previous migration completes", mcc->base.client); mcc->mig_wait_prev_complete = TRUE; } else { red_channel_client_pipe_add_type(&mcc->base, SPICE_MSG_MAIN_MIGRATE_BEGIN); @@ -1129,7 +1129,7 @@ void main_channel_migrate_cancel_wait(MainChannel *main_chan) mcc = SPICE_CONTAINEROF(client_link, MainChannelClient, base.channel_link); if (mcc->mig_wait_connect) { - red_printf("client %p cancel wait connect", mcc->base.client); + spice_printerr("client %p cancel wait connect", mcc->base.client); mcc->mig_wait_connect = FALSE; mcc->mig_connect_ok = FALSE; } @@ -1143,10 +1143,10 @@ int main_channel_migrate_complete(MainChannel *main_chan, int success) RingItem *client_link; int semi_seamless_count = 0; - red_printf(""); + spice_printerr(""); if (ring_is_empty(&main_chan->base.clients)) { - red_printf("no peer connected"); + spice_printerr("no peer connected"); return 0; } @@ -1159,16 +1159,16 @@ int main_channel_migrate_complete(MainChannel *main_chan, int success) SPICE_MAIN_CAP_SEMI_SEAMLESS_MIGRATE); if (semi_seamless_support && mcc->mig_connect_ok) { if (success) { - red_printf("client %p MIGRATE_END", mcc->base.client); + spice_printerr("client %p MIGRATE_END", mcc->base.client); red_channel_client_pipe_add_type(&mcc->base, SPICE_MSG_MAIN_MIGRATE_END); semi_seamless_count++; } else { - red_printf("client %p MIGRATE_CANCEL", mcc->base.client); + spice_printerr("client %p MIGRATE_CANCEL", mcc->base.client); red_channel_client_pipe_add_type(&mcc->base, SPICE_MSG_MAIN_MIGRATE_CANCEL); } } else { if (success) { - red_printf("client %p SWITCH_HOST", mcc->base.client); + spice_printerr("client %p SWITCH_HOST", mcc->base.client); red_channel_client_pipe_add_type(&mcc->base, SPICE_MSG_MAIN_MIGRATE_SWITCH_HOST); } } diff --git a/server/mjpeg_encoder.c b/server/mjpeg_encoder.c index 6b68549..4692315 100644 --- a/server/mjpeg_encoder.c +++ b/server/mjpeg_encoder.c @@ -228,7 +228,7 @@ int mjpeg_encoder_start_frame(MJpegEncoder *encoder, SpiceBitmapFmt format, #endif break; default: - red_printf_some(1000, "unsupported format %d", format); + spice_warning("unsupported format %d", format); return FALSE; } diff --git a/server/red_channel.c b/server/red_channel.c index f27abed..4858bb5 100644 --- a/server/red_channel.c +++ b/server/red_channel.c @@ -89,7 +89,7 @@ static void full_header_set_msg_serial(SpiceDataHeaderOpaque *header, uint64_t s static void mini_header_set_msg_serial(SpiceDataHeaderOpaque *header, uint64_t serial) { - red_error("attempt to set header serial on mini header"); + spice_error("attempt to set header serial on mini header"); } static void full_header_set_msg_sub_list(SpiceDataHeaderOpaque *header, uint32_t sub_list) @@ -99,7 +99,7 @@ static void full_header_set_msg_sub_list(SpiceDataHeaderOpaque *header, uint32_t static void mini_header_set_msg_sub_list(SpiceDataHeaderOpaque *header, uint32_t sub_list) { - red_error("attempt to set header sub list on mini header"); + spice_error("attempt to set header sub list on mini header"); } static SpiceDataHeaderOpaque full_header_wrapper = {NULL, sizeof(SpiceDataHeader), @@ -132,7 +132,7 @@ static int red_peer_receive(RedsStream *stream, uint8_t *buf, uint32_t size) if (now == 0) { return -1; } - ASSERT(now == -1); + spice_assert(now == -1); if (errno == EAGAIN) { break; } else if (errno == EINTR) { @@ -140,7 +140,7 @@ static int red_peer_receive(RedsStream *stream, uint8_t *buf, uint32_t size) } else if (errno == EPIPE) { return -1; } else { - red_printf("%s", strerror(errno)); + spice_printerr("%s", strerror(errno)); return -1; } } else { @@ -193,7 +193,7 @@ static void red_peer_handle_incoming(RedsStream *stream, IncomingHandler *handle if (!handler->msg) { handler->msg = handler->cb->alloc_msg_buf(handler->opaque, msg_type, msg_size); if (handler->msg == NULL) { - red_printf("ERROR: channel refused to allocate buffer."); + spice_printerr("ERROR: channel refused to allocate buffer."); handler->cb->on_error(handler->opaque); return; } @@ -218,7 +218,7 @@ static void red_peer_handle_incoming(RedsStream *stream, IncomingHandler *handle handler->msg + msg_size, msg_type, SPICE_VERSION_MINOR, &parsed_size, &parsed_free); if (parsed == NULL) { - red_printf("failed to parse message type %d", msg_type); + spice_printerr("failed to parse message type %d", msg_type); handler->cb->release_msg_buf(handler->opaque, msg_type, msg_size, handler->msg); handler->cb->on_error(handler->opaque); return; @@ -285,7 +285,7 @@ static void red_peer_handle_outgoing(RedsStream *stream, OutgoingHandler *handle handler->cb->on_error(handler->opaque); return; default: - red_printf("%s", strerror(errno)); + spice_printerr("%s", strerror(errno)); handler->cb->on_error(handler->opaque); return; } @@ -362,7 +362,7 @@ static void red_channel_client_reset_send_data(RedChannelClient *rcc) * has been called before, but no message has been sent since then. */ if (rcc->send_data.last_sent_serial != rcc->send_data.serial) { - ASSERT(rcc->send_data.serial - rcc->send_data.last_sent_serial == 1); + spice_assert(rcc->send_data.serial - rcc->send_data.last_sent_serial == 1); /* When the urgent marshaller is active, the serial was incremented by * the call to reset_send_data that was made for the main marshaller. * The urgent msg receives this serial, and the main msg serial is @@ -375,7 +375,7 @@ static void red_channel_client_reset_send_data(RedChannelClient *rcc) rcc->send_data.serial++; if (!rcc->is_mini_header) { - ASSERT(rcc->send_data.marshaller != rcc->send_data.urgent.marshaller); + spice_assert(rcc->send_data.marshaller != rcc->send_data.urgent.marshaller); rcc->send_data.header.set_msg_sub_list(&rcc->send_data.header, 0); rcc->send_data.header.set_msg_serial(&rcc->send_data.header, rcc->send_data.serial); } @@ -395,7 +395,7 @@ static void red_channel_client_send_set_ack(RedChannelClient *rcc) { SpiceMsgSetAck ack; - ASSERT(rcc); + spice_assert(rcc); red_channel_client_init_send_data(rcc, SPICE_MSG_SET_ACK, NULL); ack.generation = ++rcc->ack_data.generation; ack.window = rcc->ack_data.client_window; @@ -410,7 +410,7 @@ static void red_channel_client_send_item(RedChannelClient *rcc, PipeItem *item) { int handled = TRUE; - ASSERT(red_channel_client_no_item_being_sent(rcc)); + spice_assert(red_channel_client_no_item_being_sent(rcc)); red_channel_client_reset_send_data(rcc); switch (item->type) { case PIPE_ITEM_TYPE_SET_ACK: @@ -463,7 +463,7 @@ static void red_channel_peer_on_out_msg_done(void *opaque) if (red_channel_client_urgent_marshaller_is_active(rcc)) { red_channel_client_restore_main_sender(rcc); - ASSERT(rcc->send_data.header.data != NULL); + spice_assert(rcc->send_data.header.data != NULL); red_channel_client_begin_send_message(rcc); } } @@ -476,7 +476,7 @@ static void red_channel_client_pipe_remove(RedChannelClient *rcc, PipeItem *item static void red_channel_add_client(RedChannel *channel, RedChannelClient *rcc) { - ASSERT(rcc); + spice_assert(rcc); ring_add(&channel->clients, &rcc->channel_link); channel->clients_num++; } @@ -521,7 +521,7 @@ RedChannelClient *red_channel_client_create(int size, RedChannel *channel, RedCl { RedChannelClient *rcc; - ASSERT(stream && channel && size >= sizeof(RedChannelClient)); + spice_assert(stream && channel && size >= sizeof(RedChannelClient)); rcc = spice_malloc0(size); rcc->stream = stream; rcc->channel = channel; @@ -583,7 +583,7 @@ static void red_channel_client_default_connect(RedChannel *channel, RedClient *c int num_common_caps, uint32_t *common_caps, int num_caps, uint32_t *caps) { - red_error("not implemented"); + spice_error("not implemented"); } static void red_channel_client_default_disconnect(RedChannelClient *base) @@ -605,8 +605,8 @@ RedChannel *red_channel_create(int size, RedChannel *channel; ClientCbs client_cbs = { NULL, }; - ASSERT(size >= sizeof(*channel)); - ASSERT(channel_cbs->config_socket && channel_cbs->on_disconnect && handle_message && + spice_assert(size >= sizeof(*channel)); + spice_assert(channel_cbs->config_socket && channel_cbs->on_disconnect && handle_message && channel_cbs->alloc_recv_buf && channel_cbs->release_item); channel = spice_malloc0(size); channel->type = type; @@ -672,7 +672,7 @@ RedChannel *red_channel_create_dummy(int size, uint32_t type, uint32_t id) RedChannel *channel; ClientCbs client_cbs = { NULL, }; - ASSERT(size >= sizeof(*channel)); + spice_assert(size >= sizeof(*channel)); channel = spice_malloc0(size); channel->type = type; channel->id = id; @@ -723,7 +723,7 @@ RedChannel *red_channel_create_parser(int size, void red_channel_register_client_cbs(RedChannel *channel, ClientCbs *client_cbs) { - ASSERT(client_cbs->connect); + spice_assert(client_cbs->connect); channel->client_cbs.connect = client_cbs->connect; if (client_cbs->disconnect) { @@ -769,7 +769,7 @@ void red_channel_set_cap(RedChannel *channel, uint32_t cap) void red_channel_set_data(RedChannel *channel, void *data) { - ASSERT(channel); + spice_assert(channel); channel->data = data; } @@ -876,7 +876,7 @@ void red_channel_client_push(RedChannelClient *rcc) if (!red_channel_client_no_item_being_sent(rcc) && !rcc->send_data.blocked) { rcc->send_data.blocked = TRUE; - red_printf("ERROR: an item waiting to be sent and not blocked"); + spice_printerr("ERROR: an item waiting to be sent and not blocked"); } while ((pipe_item = red_channel_client_pipe_item_get(rcc))) { @@ -938,7 +938,7 @@ static void red_channel_handle_migrate_data(RedChannelClient *rcc, uint32_t size if (!rcc->channel->channel_cbs.handle_migrate_data) { return; } - ASSERT(red_channel_client_get_message_serial(rcc) == 0); + spice_assert(red_channel_client_get_message_serial(rcc) == 0); red_channel_client_set_message_serial(rcc, rcc->channel->channel_cbs.handle_migrate_data_get_serial(rcc, size, message)); rcc->channel->channel_cbs.handle_migrate_data(rcc, size, message); @@ -950,7 +950,7 @@ int red_channel_client_handle_message(RedChannelClient *rcc, uint32_t size, switch (type) { case SPICE_MSGC_ACK_SYNC: if (size != sizeof(uint32_t)) { - red_printf("bad message size"); + spice_printerr("bad message size"); return FALSE; } rcc->ack_data.client_generation = *(uint32_t *)(message); @@ -970,7 +970,7 @@ int red_channel_client_handle_message(RedChannelClient *rcc, uint32_t size, red_channel_handle_migrate_data(rcc, size, message); break; default: - red_printf("invalid message type %u", type); + spice_printerr("invalid message type %u", type); return FALSE; } return TRUE; @@ -990,8 +990,8 @@ static void red_channel_client_event(int fd, int event, void *data) void red_channel_client_init_send_data(RedChannelClient *rcc, uint16_t msg_type, PipeItem *item) { - ASSERT(red_channel_client_no_item_being_sent(rcc)); - ASSERT(msg_type != 0); + spice_assert(red_channel_client_no_item_being_sent(rcc)); + spice_assert(msg_type != 0); rcc->send_data.header.set_msg_type(&rcc->send_data.header, msg_type); rcc->send_data.item = item; if (item) { @@ -1005,7 +1005,7 @@ void red_channel_client_begin_send_message(RedChannelClient *rcc) // TODO - better check: type in channel_allowed_types. Better: type in channel_allowed_types(channel_state) if (rcc->send_data.header.get_msg_type(&rcc->send_data.header) == 0) { - red_printf("BUG: header->type == 0"); + spice_printerr("BUG: header->type == 0"); return; } spice_marshaller_flush(m); @@ -1020,8 +1020,8 @@ void red_channel_client_begin_send_message(RedChannelClient *rcc) SpiceMarshaller *red_channel_client_switch_to_urgent_sender(RedChannelClient *rcc) { - ASSERT(red_channel_client_no_item_being_sent(rcc)); - ASSERT(rcc->send_data.header.data != NULL); + spice_assert(red_channel_client_no_item_being_sent(rcc)); + spice_assert(rcc->send_data.header.data != NULL); rcc->send_data.main.header_data = rcc->send_data.header.data; rcc->send_data.main.item = rcc->send_data.item; @@ -1060,7 +1060,7 @@ void red_channel_pipe_item_init(RedChannel *channel, PipeItem *item, int type) void red_channel_client_pipe_add(RedChannelClient *rcc, PipeItem *item) { - ASSERT(rcc && item); + spice_assert(rcc && item); rcc->pipe_size++; ring_add(&rcc->pipe, &item->link); } @@ -1074,9 +1074,9 @@ void red_channel_client_pipe_add_push(RedChannelClient *rcc, PipeItem *item) void red_channel_client_pipe_add_after(RedChannelClient *rcc, PipeItem *item, PipeItem *pos) { - ASSERT(rcc); - ASSERT(pos); - ASSERT(item); + spice_assert(rcc); + spice_assert(pos); + spice_assert(item); rcc->pipe_size++; ring_add_after(&item->link, &pos->link); @@ -1091,14 +1091,14 @@ int red_channel_client_pipe_item_is_linked(RedChannelClient *rcc, void red_channel_client_pipe_add_tail_no_push(RedChannelClient *rcc, PipeItem *item) { - ASSERT(rcc); + spice_assert(rcc); rcc->pipe_size++; ring_add_before(&item->link, &rcc->pipe); } void red_channel_client_pipe_add_tail(RedChannelClient *rcc, PipeItem *item) { - ASSERT(rcc); + spice_assert(rcc); rcc->pipe_size++; ring_add_before(&item->link, &rcc->pipe); red_channel_client_push(rcc); @@ -1170,9 +1170,9 @@ void red_channel_client_ack_set_client_window(RedChannelClient *rcc, int client_ static void red_channel_remove_client(RedChannelClient *rcc) { - ASSERT(pthread_equal(pthread_self(), rcc->channel->thread_id)); + spice_assert(pthread_equal(pthread_self(), rcc->channel->thread_id)); ring_remove(&rcc->channel_link); - ASSERT(rcc->channel->clients_num > 0); + spice_assert(rcc->channel->clients_num > 0); rcc->channel->clients_num--; // TODO: should we set rcc->channel to NULL??? } @@ -1187,7 +1187,7 @@ static void red_client_remove_channel(RedChannelClient *rcc) void red_channel_client_disconnect(RedChannelClient *rcc) { - red_printf("%p (channel %p type %d id %d)", rcc, rcc->channel, + spice_printerr("%p (channel %p type %d id %d)", rcc, rcc->channel, rcc->channel->type, rcc->channel->id); if (!red_channel_client_is_connected(rcc)) { return; @@ -1222,7 +1222,7 @@ RedChannelClient *red_channel_client_create_dummy(int size, { RedChannelClient *rcc; - ASSERT(size >= sizeof(RedChannelClient)); + spice_assert(size >= sizeof(RedChannelClient)); rcc = spice_malloc0(size); rcc->client = client; rcc->channel = channel; @@ -1416,8 +1416,8 @@ void red_client_migrate(RedClient *client) RingItem *link, *next; RedChannelClient *rcc; - red_printf("migrate client with #channels %d", client->channels_num); - ASSERT(pthread_equal(pthread_self(), client->thread_id)); + spice_printerr("migrate client with #channels %d", client->channels_num); + spice_assert(pthread_equal(pthread_self(), client->thread_id)); RING_FOREACH_SAFE(link, next, &client->channels) { rcc = SPICE_CONTAINEROF(link, RedChannelClient, client_link); if (red_channel_client_is_connected(rcc)) { @@ -1431,8 +1431,8 @@ void red_client_destroy(RedClient *client) RingItem *link, *next; RedChannelClient *rcc; - red_printf("destroy client with #channels %d", client->channels_num); - ASSERT(pthread_equal(pthread_self(), client->thread_id)); + spice_printerr("destroy client with #channels %d", client->channels_num); + spice_assert(pthread_equal(pthread_self(), client->thread_id)); RING_FOREACH_SAFE(link, next, &client->channels) { // some channels may be in other threads, so disconnection // is not synchronous. @@ -1444,9 +1444,9 @@ void red_client_destroy(RedClient *client) // TODO: should we go back to async. For this we need to use // ref count for channel clients. rcc->channel->client_cbs.disconnect(rcc); - ASSERT(ring_is_empty(&rcc->pipe)); - ASSERT(rcc->pipe_size == 0); - ASSERT(rcc->send_data.size == 0); + spice_assert(ring_is_empty(&rcc->pipe)); + spice_assert(rcc->pipe_size == 0); + spice_assert(rcc->send_data.size == 0); red_channel_client_destroy(rcc); } @@ -1456,7 +1456,7 @@ void red_client_destroy(RedClient *client) static void red_client_add_channel(RedClient *client, RedChannelClient *rcc) { - ASSERT(rcc && client); + spice_assert(rcc && client); pthread_mutex_lock(&client->lock); ring_add(&client->channels, &rcc->client_link); client->channels_num++; @@ -1473,7 +1473,7 @@ void red_client_set_main(RedClient *client, MainChannelClient *mcc) { void red_client_migrate_complete(RedClient *client) { - ASSERT(client->migrated); + spice_assert(client->migrated); client->migrated = FALSE; reds_on_client_migrate_complete(client); } diff --git a/server/red_client_cache.h b/server/red_client_cache.h index 0da11a6..dc314c0 100644 --- a/server/red_client_cache.h +++ b/server/red_client_cache.h @@ -63,11 +63,11 @@ static void FUNC_NAME(remove)(CHANNELCLIENT *channel_client, CacheItem *item) { CacheItem **now; CHANNEL *channel = CHANNEL_FROM_RCC(&channel_client->common.base); - ASSERT(item); + spice_assert(item); now = &channel_client->CACHE_NAME[CACHE_HASH_KEY(item->id)]; for (;;) { - ASSERT(*now); + spice_assert(*now); if (*now == item) { *now = item->u.cache_data.next; break; diff --git a/server/red_client_shared_cache.h b/server/red_client_shared_cache.h index fb405c3..821ee18 100644 --- a/server/red_client_shared_cache.h +++ b/server/red_client_shared_cache.h @@ -49,7 +49,7 @@ static int FUNC_NAME(hit)(CACHE *cache, uint64_t id, int *lossy, DisplayChannelC if (item->id == id) { ring_remove(&item->lru_link); ring_add(&cache->lru, &item->lru_link); - ASSERT(dcc->common.id < MAX_CACHE_CLIENTS) + spice_assert(dcc->common.id < MAX_CACHE_CLIENTS); item->sync[dcc->common.id] = serial; cache->sync[dcc->common.id] = serial; *lossy = item->lossy; @@ -86,7 +86,7 @@ static int FUNC_NAME(add)(CACHE *cache, uint64_t id, uint32_t size, int lossy, D uint64_t serial; int key; - ASSERT(size > 0); + spice_assert(size > 0); item = spice_new(NewCacheItem, 1); serial = red_channel_client_get_message_serial(&dcc->common.base); @@ -119,7 +119,7 @@ static int FUNC_NAME(add)(CACHE *cache, uint64_t id, uint32_t size, int lossy, D now = &cache->hash_table[CACHE_HASH_KEY(tail->id)]; for (;;) { - ASSERT(*now); + spice_assert(*now); if (*now == tail) { *now = tail->next; break; @@ -217,7 +217,7 @@ static int FUNC_NAME(freeze)(CACHE *cache) static void FUNC_NAME(destroy)(CACHE *cache) { - ASSERT(cache); + spice_assert(cache); pthread_mutex_lock(&cache->lock); PRIVATE_FUNC_NAME(clear)(cache); diff --git a/server/red_dispatcher.c b/server/red_dispatcher.c index 9a04948..6b96a2e 100644 --- a/server/red_dispatcher.c +++ b/server/red_dispatcher.c @@ -44,13 +44,6 @@ static int num_active_workers = 0; -//volatile - -#define DBG_ASYNC(s, ...) \ - do { \ - red_printf_debug(2, "ASYNC", s, ##__VA_ARGS__); \ - } while (0) - struct AsyncCommand { RingItem link; RedWorkerMessage message; @@ -98,7 +91,7 @@ static void red_dispatcher_set_display_peer(RedChannel *channel, RedClient *clie RedWorkerMessageDisplayConnect payload; RedDispatcher *dispatcher; - red_printf(""); + spice_printerr(""); dispatcher = (RedDispatcher *)channel->data; payload.client = client; payload.stream = stream; @@ -127,7 +120,7 @@ static void red_dispatcher_disconnect_display_peer(RedChannelClient *rcc) dispatcher = (RedDispatcher *)rcc->channel->data; - red_printf(""); + spice_printerr(""); payload.rcc = rcc; // TODO: we turned it to be sync, due to client_destroy . Should we support async? - for this we will need ref count @@ -145,7 +138,7 @@ static void red_dispatcher_display_migrate(RedChannelClient *rcc) return; } dispatcher = (RedDispatcher *)rcc->channel->data; - red_printf("channel type %u id %u", rcc->channel->type, rcc->channel->id); + spice_printerr("channel type %u id %u", rcc->channel->type, rcc->channel->id); payload.rcc = rcc; dispatcher_send_message(&dispatcher->dispatcher, RED_WORKER_MESSAGE_DISPLAY_MIGRATE, @@ -159,7 +152,7 @@ static void red_dispatcher_set_cursor_peer(RedChannel *channel, RedClient *clien { RedWorkerMessageCursorConnect payload; RedDispatcher *dispatcher = (RedDispatcher *)channel->data; - red_printf(""); + spice_printerr(""); payload.client = client; payload.stream = stream; payload.migration = migration; @@ -186,7 +179,7 @@ static void red_dispatcher_disconnect_cursor_peer(RedChannelClient *rcc) } dispatcher = (RedDispatcher *)rcc->channel->data; - red_printf(""); + spice_printerr(""); payload.rcc = rcc; dispatcher_send_message(&dispatcher->dispatcher, @@ -203,7 +196,7 @@ static void red_dispatcher_cursor_migrate(RedChannelClient *rcc) return; } dispatcher = (RedDispatcher *)rcc->channel->data; - red_printf("channel type %u id %u", rcc->channel->type, rcc->channel->id); + spice_printerr("channel type %u id %u", rcc->channel->type, rcc->channel->id); payload.rcc = rcc; dispatcher_send_message(&dispatcher->dispatcher, RED_WORKER_MESSAGE_CURSOR_MIGRATE, @@ -313,7 +306,7 @@ static AsyncCommand *async_command_alloc(RedDispatcher *dispatcher, async_command->message = message; ring_add(&dispatcher->async_commands, &async_command->link); pthread_mutex_unlock(&dispatcher->async_lock); - DBG_ASYNC("%p", async_command); + spice_debug("%p", async_command); return async_command; } @@ -675,7 +668,7 @@ static void red_dispatcher_loadvm_commands(RedDispatcher *dispatcher, { RedWorkerMessageLoadvmCommands payload; - red_printf(""); + spice_printerr(""); payload.count = count; payload.ext = ext; dispatcher_send_message(&dispatcher->dispatcher, @@ -701,7 +694,7 @@ void red_dispatcher_set_mm_time(uint32_t mm_time) static inline int calc_compression_level(void) { - ASSERT(streaming_video != STREAM_VIDEO_INVALID); + spice_assert(streaming_video != STREAM_VIDEO_INVALID); if ((streaming_video != STREAM_VIDEO_OFF) || (image_compression != SPICE_IMAGE_COMPRESS_QUIC)) { return 0; @@ -920,9 +913,9 @@ void red_dispatcher_async_complete(struct RedDispatcher *dispatcher, { pthread_mutex_lock(&dispatcher->async_lock); ring_remove(&async_command->link); - DBG_ASYNC("%p: cookie %" PRId64, async_command, async_command->cookie); + spice_debug("%p: cookie %" PRId64, async_command, async_command->cookie); if (ring_is_empty(&dispatcher->async_commands)) { - red_printf_debug(2, "ASYNC", "no more async commands"); + spice_debug("no more async commands"); } pthread_mutex_unlock(&dispatcher->async_lock); switch (async_command->message) { @@ -943,7 +936,7 @@ void red_dispatcher_async_complete(struct RedDispatcher *dispatcher, case RED_WORKER_MESSAGE_FLUSH_SURFACES_ASYNC: break; default: - WARN("unexpected message"); + spice_warning("unexpected message %d", async_command->message); } dispatcher->qxl->st->qif->async_complete(dispatcher->qxl, async_command->cookie); @@ -995,7 +988,7 @@ RedDispatcher *red_dispatcher_init(QXLInstance *qxl) red_dispatcher = spice_new0(RedDispatcher, 1); ring_init(&red_dispatcher->async_commands); - DBG_ASYNC("red_dispatcher->async_commands.next %p", red_dispatcher->async_commands.next); + spice_debug("red_dispatcher->async_commands.next %p", red_dispatcher->async_commands.next); dispatcher_init(&red_dispatcher->dispatcher, RED_WORKER_MESSAGE_COUNT, NULL); init_data.qxl = red_dispatcher->qxl = qxl; init_data.id = qxl->id; @@ -1046,12 +1039,12 @@ RedDispatcher *red_dispatcher_init(QXLInstance *qxl) sigdelset(&thread_sig_mask, SIGSEGV); pthread_sigmask(SIG_SETMASK, &thread_sig_mask, &curr_sig_mask); if ((r = pthread_create(&red_dispatcher->worker_thread, NULL, red_worker_main, &init_data))) { - red_error("create thread failed %d", r); + spice_error("create thread failed %d", r); } pthread_sigmask(SIG_SETMASK, &curr_sig_mask, NULL); read_message(red_dispatcher->dispatcher.send_fd, &message); - ASSERT(message == RED_WORKER_MESSAGE_READY); + spice_assert(message == RED_WORKER_MESSAGE_READY); display_channel = red_dispatcher_display_channel_create(red_dispatcher); diff --git a/server/red_memslots.c b/server/red_memslots.c index 249b241..ae2c6e4 100644 --- a/server/red_memslots.c +++ b/server/red_memslots.c @@ -55,19 +55,19 @@ unsigned long get_virt_delta(RedMemSlotInfo *info, QXLPHYSICAL addr, int group_i int generation; if (group_id > info->num_memslots_groups) { - PANIC("group_id %d too big", group_id); + spice_critical("group_id %d too big", group_id); } slot_id = get_memslot_id(info, addr); if (slot_id > info->num_memslots) { - PANIC("slot_id %d too big", slot_id); + spice_critical("slot_id %d too big", slot_id); } slot = &info->mem_slots[group_id][slot_id]; generation = get_generation(info, addr); if (generation != slot->generation) { - PANIC("address generation is not valid"); + spice_critical("address generation is not valid"); } return (slot->address_delta - (addr - __get_clean_virt(info, addr))); @@ -80,12 +80,12 @@ void validate_virt(RedMemSlotInfo *info, unsigned long virt, int slot_id, slot = &info->mem_slots[group_id][slot_id]; if ((virt + add_size) < virt) { - PANIC("virtual address overlap"); + spice_critical("virtual address overlap"); } if (virt < slot->virt_start_addr || (virt + add_size) > slot->virt_end_addr) { print_memslots(info); - PANIC("virtual address out of range\n" + spice_critical("virtual address out of range\n" " virt=0x%lx+0x%x slot_id=%d group_id=%d\n" " slot=0x%lx-0x%lx delta=0x%lx", virt, add_size, slot_id, group_id, @@ -103,13 +103,13 @@ unsigned long get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t add_size MemSlot *slot; if (group_id > info->num_memslots_groups) { - PANIC("group_id too big"); + spice_critical("group_id too big"); } slot_id = get_memslot_id(info, addr); if (slot_id > info->num_memslots) { print_memslots(info); - PANIC("slot_id too big, addr=%" PRIx64, addr); + spice_critical("slot_id too big, addr=%" PRIx64, addr); } slot = &info->mem_slots[group_id][slot_id]; @@ -117,7 +117,7 @@ unsigned long get_virt(RedMemSlotInfo *info, QXLPHYSICAL addr, uint32_t add_size generation = get_generation(info, addr); if (generation != slot->generation) { print_memslots(info); - PANIC("address generation is not valid, group_id %d, slot_id %d, gen %d, slot_gen %d\n", + spice_critical("address generation is not valid, group_id %d, slot_id %d, gen %d, slot_gen %d\n", group_id, slot_id, generation, slot->generation); } @@ -152,8 +152,8 @@ void red_memslot_info_init(RedMemSlotInfo *info, { uint32_t i; - ASSERT(num_slots > 0); - ASSERT(num_groups > 0); + spice_assert(num_slots > 0); + spice_assert(num_groups > 0); info->num_memslots_groups = num_groups; info->num_memslots = num_slots; @@ -179,8 +179,8 @@ void red_memslot_info_add_slot(RedMemSlotInfo *info, uint32_t slot_group_id, uin uint64_t addr_delta, unsigned long virt_start, unsigned long virt_end, uint32_t generation) { - ASSERT(info->num_memslots_groups > slot_group_id); - ASSERT(info->num_memslots > slot_id); + spice_assert(info->num_memslots_groups > slot_group_id); + spice_assert(info->num_memslots > slot_id); info->mem_slots[slot_group_id][slot_id].address_delta = addr_delta; info->mem_slots[slot_group_id][slot_id].virt_start_addr = virt_start; @@ -190,8 +190,8 @@ void red_memslot_info_add_slot(RedMemSlotInfo *info, uint32_t slot_group_id, uin void red_memslot_info_del_slot(RedMemSlotInfo *info, uint32_t slot_group_id, uint32_t slot_id) { - ASSERT(info->num_memslots_groups > slot_group_id); - ASSERT(info->num_memslots > slot_id); + spice_assert(info->num_memslots_groups > slot_group_id); + spice_assert(info->num_memslots > slot_id); info->mem_slots[slot_group_id][slot_id].virt_start_addr = 0; info->mem_slots[slot_group_id][slot_id].virt_end_addr = 0; diff --git a/server/red_parse_qxl.c b/server/red_parse_qxl.c index 201e683..811e427 100644 --- a/server/red_parse_qxl.c +++ b/server/red_parse_qxl.c @@ -66,7 +66,7 @@ static uint8_t *red_linearize_chunk(RedDataChunk *head, size_t size, bool *free_ uint32_t copy; if (head->next_chunk == NULL) { - ASSERT(size <= head->data_size); + spice_assert(size <= head->data_size); *free_chunk = false; return head->data; } @@ -79,7 +79,7 @@ static uint8_t *red_linearize_chunk(RedDataChunk *head, size_t size, bool *free_ ptr += copy; size -= copy; } - ASSERT(size == 0); + spice_assert(size == 0); return data; } @@ -205,15 +205,15 @@ static SpicePath *red_get_path(RedMemSlotInfo *slots, int group_id, /* Protect against overflow in size calculations before writing to memory */ - ASSERT(mem_size2 + sizeof(SpicePathSeg) > mem_size2); + spice_assert(mem_size2 + sizeof(SpicePathSeg) > mem_size2); mem_size2 += sizeof(SpicePathSeg); - ASSERT(count < UINT32_MAX / sizeof(SpicePointFix)); + spice_assert(count < UINT32_MAX / sizeof(SpicePointFix)); dsize = count * sizeof(SpicePointFix); - ASSERT(mem_size2 + dsize > mem_size2); + spice_assert(mem_size2 + dsize > mem_size2); mem_size2 += dsize; /* Verify that we didn't overflow due to guest changing data */ - ASSERT(mem_size2 <= mem_size); + spice_assert(mem_size2 <= mem_size); seg->flags = start->flags; seg->count = count; @@ -225,7 +225,7 @@ static SpicePath *red_get_path(RedMemSlotInfo *slots, int group_id, seg = (SpicePathSeg*)(&seg->points[i]); } /* Ensure guest didn't tamper with segment count */ - ASSERT(n_segments == red->num_segments); + spice_assert(n_segments == red->num_segments); if (free_data) { free(data); @@ -252,7 +252,7 @@ static SpiceClipRects *red_get_clip_rects(RedMemSlotInfo *slots, int group_id, data = red_linearize_chunk(&chunks, size, &free_data); red_put_data_chunks(&chunks); - ASSERT(qxl->num_rects * sizeof(QXLRect) == size); + spice_assert(qxl->num_rects * sizeof(QXLRect) == size); red = spice_malloc(sizeof(*red) + qxl->num_rects * sizeof(SpiceRect)); red->num_rects = qxl->num_rects; @@ -299,7 +299,7 @@ static SpiceChunks *red_get_image_data_chunked(RedMemSlotInfo *slots, int group_ data->chunk[i].len = chunk->data_size; data->data_size += chunk->data_size; } - ASSERT(i == data->num_chunks); + spice_assert(i == data->num_chunks); return data; } @@ -373,7 +373,7 @@ static SpiceImage *red_get_image(RedMemSlotInfo *slots, int group_id, } else { size = red_get_data_chunks(slots, group_id, &chunks, qxl->bitmap.data); - ASSERT(size == bitmap_size); + spice_assert(size == bitmap_size); red->u.bitmap.data = red_get_image_data_chunked(slots, group_id, &chunks); red_put_data_chunks(&chunks); @@ -390,14 +390,13 @@ static SpiceImage *red_get_image(RedMemSlotInfo *slots, int group_id, size = red_get_data_chunks_ptr(slots, group_id, get_memslot_id(slots, addr), &chunks, (QXLDataChunk *)qxl->quic.data); - ASSERT(size == red->u.quic.data_size); + spice_assert(size == red->u.quic.data_size); red->u.quic.data = red_get_image_data_chunked(slots, group_id, &chunks); red_put_data_chunks(&chunks); break; default: - red_error("%s: unknown type %d", __FUNCTION__, red->descriptor.type); - abort(); + spice_error("unknown type %d", red->descriptor.type); } return red; } @@ -593,7 +592,7 @@ static void red_get_stroke_ptr(RedMemSlotInfo *slots, int group_id, style_nseg = qxl->attr.style_nseg; red->attr.style = spice_malloc_n(style_nseg, sizeof(SPICE_FIXED28_4)); red->attr.style_nseg = style_nseg; - ASSERT(qxl->attr.style); + spice_assert(qxl->attr.style); buf = (uint8_t *)get_virt(slots, qxl->attr.style, style_nseg * sizeof(QXLFIXED), group_id); memcpy(red->attr.style, buf, style_nseg * sizeof(QXLFIXED)); @@ -636,7 +635,7 @@ static SpiceString *red_get_string(RedMemSlotInfo *slots, int group_id, red_put_data_chunks(&chunks); qxl_size = qxl->data_size; - ASSERT(chunk_size == qxl_size); + spice_assert(chunk_size == qxl_size); if (qxl->flags & SPICE_STRING_FLAGS_RASTER_A1) { bpp = 1; @@ -645,21 +644,21 @@ static SpiceString *red_get_string(RedMemSlotInfo *slots, int group_id, } else if (qxl->flags & SPICE_STRING_FLAGS_RASTER_A8) { bpp = 8; } - ASSERT(bpp != 0); + spice_assert(bpp != 0); start = (QXLRasterGlyph*)data; end = (QXLRasterGlyph*)(data + chunk_size); red_size = sizeof(SpiceString); glyphs = 0; while (start < end) { - ASSERT((QXLRasterGlyph*)(&start->data[0]) <= end); + spice_assert((QXLRasterGlyph*)(&start->data[0]) <= end); glyphs++; glyph_size = start->height * ((start->width * bpp + 7) / 8); red_size += sizeof(SpiceRasterGlyph *) + SPICE_ALIGN(sizeof(SpiceRasterGlyph) + glyph_size, 4); start = (QXLRasterGlyph*)(&start->data[glyph_size]); } - ASSERT(start <= end); - ASSERT(glyphs == qxl->length); + spice_assert(start <= end); + spice_assert(glyphs == qxl->length); red = spice_malloc(red_size); red->length = qxl->length; @@ -669,14 +668,14 @@ static SpiceString *red_get_string(RedMemSlotInfo *slots, int group_id, end = (QXLRasterGlyph*)(data + chunk_size); glyph = (SpiceRasterGlyph *)&red->glyphs[red->length]; for (i = 0; i < red->length; i++) { - ASSERT((QXLRasterGlyph*)(&start->data[0]) <= end); + spice_assert((QXLRasterGlyph*)(&start->data[0]) <= end); red->glyphs[i] = glyph; glyph->width = start->width; glyph->height = start->height; red_get_point_ptr(&glyph->render_pos, &start->render_pos); red_get_point_ptr(&glyph->glyph_origin, &start->glyph_origin); glyph_size = glyph->height * ((glyph->width * bpp + 7) / 8); - ASSERT((QXLRasterGlyph*)(&start->data[glyph_size]) <= end); + spice_assert((QXLRasterGlyph*)(&start->data[glyph_size]) <= end); memcpy(glyph->data, start->data, glyph_size); start = (QXLRasterGlyph*)(&start->data[glyph_size]); glyph = (SpiceRasterGlyph*) @@ -831,7 +830,7 @@ static void red_get_native_drawable(RedMemSlotInfo *slots, int group_id, &red->u.whiteness, &qxl->u.whiteness, flags); break; default: - red_error("%s: unknown type %d", __FUNCTION__, red->type); + spice_error("unknown type %d", red->type); break; }; } @@ -911,7 +910,7 @@ static void red_get_compat_drawable(RedMemSlotInfo *slots, int group_id, &red->u.whiteness, &qxl->u.whiteness, flags); break; default: - red_error("%s: unknown type %d", __FUNCTION__, red->type); + spice_error("unknown type %d", red->type); break; }; } diff --git a/server/red_tunnel_worker.c b/server/red_tunnel_worker.c index 45bf6e1..384c36d 100644 --- a/server/red_tunnel_worker.c +++ b/server/red_tunnel_worker.c @@ -44,7 +44,7 @@ //#define DEBUG_NETWORK #ifdef DEBUG_NETWORK -#define PRINT_SCKT(sckt) red_printf("TUNNEL_DBG SOCKET(connection_id=%d port=%d, service=%d)",\ +#define PRINT_SCKT(sckt) spice_printerr("TUNNEL_DBG SOCKET(connection_id=%d port=%d, service=%d)",\ sckt->connection_id, ntohs(sckt->local_port), \ sckt->far_service->id) #endif @@ -479,7 +479,7 @@ static inline void tunnel_channel_activate_migrated_sockets(TunnelChannelClient failed (which triggered from a call to slirp) */ #define SET_TUNNEL_ERROR(channel,format, ...) { \ channel->tunnel_error = TRUE; \ - red_printf(format, ## __VA_ARGS__); \ + spice_printerr(format, ## __VA_ARGS__); \ } /* should be checked after each subroutine that may cause error or after calls to slirp routines */ @@ -614,7 +614,7 @@ static void red_tunnel_channel_create(TunnelWorker *worker); static void tunnel_shutdown(TunnelWorker *worker) { int i; - red_printf(""); + spice_printerr(""); /* shutdown input from channel */ if (worker->channel_client) { red_channel_client_shutdown(&worker->channel_client->base); @@ -695,7 +695,7 @@ static void snd_tunnled_buffer_release(RawTunneledBuffer *buf) static inline void tunnel_socket_assign_rcv_buf(RedSocket *sckt, RedSocketRawRcvBuf *recv_buf, int buf_size) { - ASSERT(!recv_buf->base.usr_opaque); + spice_assert(!recv_buf->base.usr_opaque); // the rcv buffer was allocated by tunnel_channel_alloc_msg_rcv_buf // before we could know which of the sockets it belongs to, so the // assignment to the socket is performed now @@ -824,7 +824,7 @@ static void process_queue_append(TunneledBufferProcessQueue *queue, uint8_t *dat static void process_queue_pop(TunneledBufferProcessQueue *queue) { RawTunneledBuffer *prev_head; - ASSERT(queue->head && queue->tail); + spice_assert(queue->head && queue->tail); prev_head = queue->head; queue->head = queue->head->next; if (!queue->head) { @@ -868,7 +868,7 @@ static void ready_queue_add_orig_chunk(ReadyTunneledChunkQueue *queue, RawTunnel static void ready_queue_pop_chunk(ReadyTunneledChunkQueue *queue) { ReadyTunneledChunk *chunk = queue->head; - ASSERT(queue->head); + spice_assert(queue->head); queue->head = queue->head->next; if (!queue->head) { @@ -892,8 +892,8 @@ static void ready_queue_clear(ReadyTunneledChunkQueue *queue) static void process_queue_simple_analysis(TunneledBufferProcessQueue *queue, RawTunneledBuffer *start_last_added, int offset, int len) { - ASSERT(offset == 0); - ASSERT(start_last_added == queue->head); + spice_assert(offset == 0); + spice_assert(start_last_added == queue->head); while (queue->head) { ready_queue_add_orig_chunk(queue->ready_chunks_queue, queue->head, queue->head->data, @@ -912,7 +912,7 @@ static int process_queue_simple_get_migrate_data(TunneledBufferProcessQueue *que static void process_queue_simple_release_migrate_data(TunneledBufferProcessQueue *queue, void *migrate_data) { - ASSERT(!migrate_data); + spice_assert(!migrate_data); } static void process_queue_simple_restore(TunneledBufferProcessQueue *queue, uint8_t *migrate_data) @@ -971,7 +971,7 @@ SPICE_GNUC_VISIBLE void spice_server_net_wire_recv_packet(SpiceNetWireInstance * const uint8_t *pkt, int pkt_len) { TunnelWorker *worker = sin->st->worker; - ASSERT(worker); + spice_assert(worker); if (worker->channel_client && worker->channel_client->base.channel->migrate) { return; // during migration and the tunnel state hasn't been restored yet. @@ -1054,7 +1054,7 @@ static inline TunnelService *__tunnel_worker_add_service(TunnelWorker *worker, u TunnelService *service_of_same_group; if (!(service_of_same_group = __tunnel_worker_find_service_of_group(worker, group))) { if (!net_slirp_allocate_virtual_ip(&new_service->virt_ip)) { - red_printf("failed to allocate virtual ip"); + spice_printerr("failed to allocate virtual ip"); free(new_service); return NULL; } @@ -1062,7 +1062,7 @@ static inline TunnelService *__tunnel_worker_add_service(TunnelWorker *worker, u if (strcmp(name, service_of_same_group->name) == 0) { new_service->virt_ip.s_addr = service_of_same_group->virt_ip.s_addr; } else { - red_printf("inconsistent name for service group %d", group); + spice_printerr("inconsistent name for service group %d", group); free(new_service); return NULL; } @@ -1084,7 +1084,7 @@ static inline TunnelService *__tunnel_worker_add_service(TunnelWorker *worker, u worker->num_services++; #ifdef DEBUG_NETWORK - red_printf("TUNNEL_DBG: ==>SERVICE ADDED: id=%d virt ip=%s port=%d name=%s desc=%s", + spice_printerr("TUNNEL_DBG: ==>SERVICE ADDED: id=%d virt ip=%s port=%d name=%s desc=%s", new_service->id, inet_ntoa(new_service->virt_ip), new_service->port, new_service->name, new_service->description); #endif @@ -1137,12 +1137,12 @@ static TunnelPrintService *tunnel_worker_add_print_service(TunnelWorker *worker, if (redc_service->type == SPICE_TUNNEL_IP_TYPE_IPv4) { memcpy(service->ip, redc_service->u.ip.data, sizeof(SpiceTunnelIPv4)); } else { - red_printf("unexpected ip type=%d", redc_service->type); + spice_printerr("unexpected ip type=%d", redc_service->type); tunnel_worker_free_print_service(worker, service); return NULL; } #ifdef DEBUG_NETWORK - red_printf("TUNNEL_DBG: ==>PRINT SERVICE ADDED: ip=%d.%d.%d.%d", service->ip[0], + spice_printerr("TUNNEL_DBG: ==>PRINT SERVICE ADDED: ip=%d.%d.%d.%d", service->ip[0], service->ip[1], service->ip[2], service->ip[3]); #endif return service; @@ -1159,7 +1159,7 @@ static int tunnel_channel_handle_service_add(TunnelChannelClient *channel, out_service = tunnel_worker_add_service(channel->worker, sizeof(TunnelService), service_msg); } else { - red_printf("invalid service type"); + spice_printerr("invalid service type"); } free(service_msg); @@ -1205,7 +1205,7 @@ static inline void tunnel_worker_clear_routed_network(TunnelWorker *worker) } else if (service->type == SPICE_TUNNEL_SERVICE_TYPE_IPP) { tunnel_worker_free_print_service(worker, (TunnelPrintService *)service); } else { - red_error("unexpected service type"); + spice_error("unexpected service type"); } } @@ -1229,13 +1229,13 @@ static inline RedSocket *__tunnel_worker_find_free_socket(TunnelWorker *worker) } } - ASSERT(ret); + spice_assert(ret); return ret; } static inline void __tunnel_worker_add_socket(TunnelWorker *worker, RedSocket *sckt) { - ASSERT(!sckt->allocated); + spice_assert(!sckt->allocated); sckt->allocated = TRUE; worker->num_sockets++; } @@ -1244,7 +1244,7 @@ static inline void tunnel_worker_alloc_socket(TunnelWorker *worker, RedSocket *s uint16_t local_port, TunnelService *far_service, SlirpSocket *slirp_s) { - ASSERT(far_service); + spice_assert(far_service); sckt->worker = worker; sckt->local_port = local_port; sckt->far_service = far_service; @@ -1272,11 +1272,11 @@ static RedSocket *tunnel_worker_create_socket(TunnelWorker *worker, uint16_t loc SlirpSocket *slirp_s) { RedSocket *new_socket; - ASSERT(worker); + spice_assert(worker); new_socket = __tunnel_worker_find_free_socket(worker); if (!new_socket) { - red_error("creation of RedSocket failed"); + spice_error("creation of RedSocket failed"); } tunnel_worker_alloc_socket(worker, new_socket, local_port, far_service, slirp_s); @@ -1341,17 +1341,17 @@ static inline RedSocket *tunnel_worker_find_socket(TunnelWorker *worker, static inline void __tunnel_socket_add_fin_to_pipe(TunnelChannelClient *channel, RedSocket *sckt) { - ASSERT(!red_channel_client_pipe_item_is_linked(&channel->base, &sckt->out_data.status_pipe_item)); + spice_assert(!red_channel_client_pipe_item_is_linked(&channel->base, &sckt->out_data.status_pipe_item)); sckt->out_data.status_pipe_item.type = PIPE_ITEM_TYPE_SOCKET_FIN; red_channel_client_pipe_add(&channel->base, &sckt->out_data.status_pipe_item); } static inline void __tunnel_socket_add_close_to_pipe(TunnelChannelClient *channel, RedSocket *sckt) { - ASSERT(!channel->mig_inprogress); + spice_assert(!channel->mig_inprogress); if (red_channel_client_pipe_item_is_linked(&channel->base, &sckt->out_data.status_pipe_item)) { - ASSERT(sckt->out_data.status_pipe_item.type == PIPE_ITEM_TYPE_SOCKET_FIN); + spice_assert(sckt->out_data.status_pipe_item.type == PIPE_ITEM_TYPE_SOCKET_FIN); // close is stronger than FIN red_channel_client_pipe_remove_and_release(&channel->base, &sckt->out_data.status_pipe_item); @@ -1363,10 +1363,10 @@ static inline void __tunnel_socket_add_close_to_pipe(TunnelChannelClient *channe static inline void __tunnel_socket_add_close_ack_to_pipe(TunnelChannelClient *channel, RedSocket *sckt) { - ASSERT(!channel->mig_inprogress); + spice_assert(!channel->mig_inprogress); if (red_channel_client_pipe_item_is_linked(&channel->base, &sckt->out_data.status_pipe_item)) { - ASSERT(sckt->out_data.status_pipe_item.type == PIPE_ITEM_TYPE_SOCKET_FIN); + spice_assert(sckt->out_data.status_pipe_item.type == PIPE_ITEM_TYPE_SOCKET_FIN); // close is stronger than FIN red_channel_client_pipe_remove_and_release(&channel->base, &sckt->out_data.status_pipe_item); @@ -1414,7 +1414,7 @@ static int tunnel_channel_handle_socket_connect_ack(TunnelChannelClient *channel uint32_t tokens) { #ifdef DEBUG_NETWORK - red_printf("TUNNEL_DBG"); + spice_printerr("TUNNEL_DBG"); #endif if (channel->mig_inprogress || channel->base.channel->migrate) { sckt->mig_client_status_msg = SPICE_MSGC_TUNNEL_SOCKET_OPEN_ACK; @@ -1423,21 +1423,21 @@ static int tunnel_channel_handle_socket_connect_ack(TunnelChannelClient *channel } if (sckt->client_status != CLIENT_SCKT_STATUS_WAIT_OPEN) { - red_printf("unexpected SPICE_MSGC_TUNNEL_SOCKET_OPEN_ACK status=%d", sckt->client_status); + spice_printerr("unexpected SPICE_MSGC_TUNNEL_SOCKET_OPEN_ACK status=%d", sckt->client_status); return FALSE; } sckt->client_status = CLIENT_SCKT_STATUS_OPEN; // SLIRP_SCKT_STATUS_CLOSED is possible after waiting for a connection has timed out if (sckt->slirp_status == SLIRP_SCKT_STATUS_CLOSED) { - ASSERT(!sckt->pushed_close); + spice_assert(!sckt->pushed_close); __tunnel_socket_add_close_to_pipe(channel, sckt); } else if (sckt->slirp_status == SLIRP_SCKT_STATUS_OPEN) { sckt->out_data.window_size = tokens; sckt->out_data.num_tokens = tokens; net_slirp_socket_connected_notify(sckt->slirp_sckt); } else { - red_printf("unexpected slirp status status=%d", sckt->slirp_status); + spice_printerr("unexpected slirp status status=%d", sckt->slirp_status); return FALSE; } @@ -1455,7 +1455,7 @@ static int tunnel_channel_handle_socket_connect_nack(TunnelChannelClient *channe } if (sckt->client_status != CLIENT_SCKT_STATUS_WAIT_OPEN) { - red_printf("unexpected SPICE_MSGC_TUNNEL_SOCKET_OPEN_NACK status=%d", sckt->client_status); + spice_printerr("unexpected SPICE_MSGC_TUNNEL_SOCKET_OPEN_NACK status=%d", sckt->client_status); return FALSE; } sckt->client_status = CLIENT_SCKT_STATUS_CLOSED; @@ -1480,7 +1480,7 @@ static int tunnel_channel_handle_socket_fin(TunnelChannelClient *channel, RedSoc } if (sckt->client_status != CLIENT_SCKT_STATUS_OPEN) { - red_printf("unexpected SPICE_MSGC_TUNNEL_SOCKET_FIN status=%d", sckt->client_status); + spice_printerr("unexpected SPICE_MSGC_TUNNEL_SOCKET_FIN status=%d", sckt->client_status); return FALSE; } sckt->client_status = CLIENT_SCKT_STATUS_SHUTDOWN_SEND; @@ -1497,7 +1497,7 @@ static int tunnel_channel_handle_socket_fin(TunnelChannelClient *channel, RedSoc net_slirp_socket_can_receive_notify(sckt->slirp_sckt); } else if (sckt->slirp_status == SLIRP_SCKT_STATUS_SHUTDOWN_RECV) { // it already received the FIN - red_printf("unexpected slirp status=%d", sckt->slirp_status); + spice_printerr("unexpected slirp status=%d", sckt->slirp_status); return FALSE; } @@ -1546,7 +1546,7 @@ static int tunnel_channel_handle_socket_closed(TunnelChannelClient *channel, Red // slirp can be in wait close if both slirp and client sent fin previously // otherwise, the prev client status would also have been wait close, and this // case was handled above - red_printf("unexpected slirp_status=%d", sckt->slirp_status); + spice_printerr("unexpected slirp_status=%d", sckt->slirp_status); return FALSE; } @@ -1571,7 +1571,7 @@ static int tunnel_channel_handle_socket_closed_ack(TunnelChannelClient *channel, } if (sckt->slirp_status != SLIRP_SCKT_STATUS_CLOSED) { - red_printf("unexpected SPICE_MSGC_TUNNEL_SOCKET_CLOSED_ACK slirp_status=%d", + spice_printerr("unexpected SPICE_MSGC_TUNNEL_SOCKET_CLOSED_ACK slirp_status=%d", sckt->slirp_status); return FALSE; } @@ -1585,7 +1585,7 @@ static int tunnel_channel_handle_socket_receive_data(TunnelChannelClient *channe { if ((sckt->client_status == CLIENT_SCKT_STATUS_SHUTDOWN_SEND) || (sckt->client_status == CLIENT_SCKT_STATUS_CLOSED)) { - red_printf("unexpected SPICE_MSGC_TUNNEL_SOCKET_DATA client_status=%d", + spice_printerr("unexpected SPICE_MSGC_TUNNEL_SOCKET_DATA client_status=%d", sckt->client_status); return FALSE; } @@ -1597,7 +1597,7 @@ static int tunnel_channel_handle_socket_receive_data(TunnelChannelClient *channe return (!CHECK_TUNNEL_ERROR(channel)); } else if ((sckt->in_data.num_buffers == MAX_SOCKET_IN_BUFFERS) && !channel->mig_inprogress && !channel->base.channel->migrate) { - red_printf("socket in buffers overflow, socket will be closed" + spice_printerr("socket in buffers overflow, socket will be closed" " (local_port=%d, service_id=%d)", ntohs(sckt->local_port), sckt->far_service->id); __tunnel_worker_free_socket_rcv_buf(sckt->worker, recv_data); @@ -1607,7 +1607,7 @@ static int tunnel_channel_handle_socket_receive_data(TunnelChannelClient *channe tunnel_socket_assign_rcv_buf(sckt, recv_data, buf_size); if (!sckt->in_data.client_total_num_tokens) { - red_printf("token violation"); + spice_printerr("token violation"); return FALSE; } @@ -1665,7 +1665,7 @@ static void tunnel_channel_release_msg_rcv_buf(RedChannelClient *rcc, uint16_t t TunnelChannelClient *tunnel_channel = (TunnelChannelClient *)rcc->channel; if (type == SPICE_MSGC_TUNNEL_SOCKET_DATA) { - ASSERT(!(SPICE_CONTAINEROF(msg, RedSocketRawRcvBuf, buf)->base.usr_opaque)); + spice_assert(!(SPICE_CONTAINEROF(msg, RedSocketRawRcvBuf, buf)->base.usr_opaque)); __tunnel_worker_free_socket_rcv_buf(tunnel_channel->worker, SPICE_CONTAINEROF(msg, RedSocketRawRcvBuf, buf)); } @@ -1683,7 +1683,8 @@ static void __tunnel_channel_fill_service_migrate_item(TunnelChannelClient *chan general_data = &migrate_item->u.print_service.base; memcpy(migrate_item->u.print_service.ip, ((TunnelPrintService *)service)->ip, 4); } else { - red_error("unexpected service type"); + spice_error("unexpected service type"); + abort(); } general_data->type = service->type; @@ -1755,7 +1756,7 @@ static int tunnel_channel_handle_migrate_mark(RedChannelClient *base) RedSocket *sckt; if (!channel->expect_migrate_mark) { - red_printf("unexpected"); + spice_printerr("unexpected"); return FALSE; } channel->expect_migrate_mark = FALSE; @@ -1764,7 +1765,7 @@ static int tunnel_channel_handle_migrate_mark(RedChannelClient *base) migrate_item->slirp_state_size = net_slirp_state_export(&migrate_item->slirp_state); if (!migrate_item->slirp_state) { - red_printf("failed export slirp state"); + spice_printerr("failed export slirp state"); goto error; } @@ -1897,7 +1898,7 @@ RawTunneledBuffer *__tunnel_socket_alloc_restore_tokens_buf(RedSocket *sckt, int buf->base.base.release_proc = restore_tokens_buf_release; buf->num_tokens = num_tokens; #ifdef DEBUG_NETWORK - red_printf("TUNNEL DBG: num_tokens=%d", num_tokens); + spice_printerr("TUNNEL DBG: num_tokens=%d", num_tokens); #endif return &buf->base.base; } @@ -1982,7 +1983,7 @@ static void tunnel_channel_restore_migrated_socket(TunnelChannelClient *channel, TunnelService *service; sckt = channel->worker->sockets + mig_socket->connection_id; sckt->connection_id = mig_socket->connection_id; - ASSERT(!sckt->allocated); + spice_assert(!sckt->allocated); /* Services must be restored before sockets */ service = tunnel_worker_find_service_by_id(channel->worker, mig_socket->far_service_id); @@ -2061,7 +2062,7 @@ static void tunnel_channel_restore_migrated_socket(TunnelChannelClient *channel, static void tunnel_channel_restore_socket_state(TunnelChannelClient *channel, RedSocket *sckt) { int ret = TRUE; - red_printf(""); + spice_printerr(""); // handling client status msgs that were received during migration switch (sckt->mig_client_status_msg) { case 0: @@ -2183,18 +2184,18 @@ static uint64_t tunnel_channel_handle_migrate_data(RedChannelClient *base, int i; if (size < sizeof(TunnelMigrateData)) { - red_printf("bad message size"); + spice_printerr("bad message size"); goto error; } if (!channel->expect_migrate_data) { - red_printf("unexpected"); + spice_printerr("unexpected"); goto error; } channel->expect_migrate_data = FALSE; if (migrate_data->magic != TUNNEL_MIGRATE_DATA_MAGIC || migrate_data->version != TUNNEL_MIGRATE_DATA_VERSION) { - red_printf("invalid content"); + spice_printerr("invalid content"); goto error; } @@ -2208,7 +2209,7 @@ static uint64_t tunnel_channel_handle_migrate_data(RedChannelClient *base, services_list->services[i]), migrate_data->data); if (CHECK_TUNNEL_ERROR(channel)) { - red_printf("failed restoring service"); + spice_printerr("failed restoring service"); goto error; } } @@ -2221,7 +2222,7 @@ static uint64_t tunnel_channel_handle_migrate_data(RedChannelClient *base, sockets_list->sockets[i]), migrate_data->data); if (CHECK_TUNNEL_ERROR(channel)) { - red_printf("failed restoring socket"); + spice_printerr("failed restoring socket"); goto error; } } @@ -2265,7 +2266,7 @@ static int tunnel_channel_handle_message(RedChannelClient *rcc, uint16_t type, // the first field in these messages is connection id sckt = tunnel_channel->worker->sockets + (*((uint16_t *)msg)); if (!sckt->allocated) { - red_printf("red socket not found"); + spice_printerr("red socket not found"); return FALSE; } break; @@ -2276,18 +2277,18 @@ static int tunnel_channel_handle_message(RedChannelClient *rcc, uint16_t type, switch (type) { case SPICE_MSGC_TUNNEL_SERVICE_ADD: if (size < sizeof(SpiceMsgcTunnelAddGenericService)) { - red_printf("bad message size"); + spice_printerr("bad message size"); free(msg); return FALSE; } return tunnel_channel_handle_service_add(tunnel_channel, (SpiceMsgcTunnelAddGenericService *)msg); case SPICE_MSGC_TUNNEL_SERVICE_REMOVE: - red_printf("REDC_TUNNEL_REMOVE_SERVICE not supported yet"); + spice_printerr("REDC_TUNNEL_REMOVE_SERVICE not supported yet"); return FALSE; case SPICE_MSGC_TUNNEL_SOCKET_OPEN_ACK: if (size != sizeof(SpiceMsgcTunnelSocketOpenAck)) { - red_printf("bad message size"); + spice_printerr("bad message size"); return FALSE; } @@ -2296,7 +2297,7 @@ static int tunnel_channel_handle_message(RedChannelClient *rcc, uint16_t type, case SPICE_MSGC_TUNNEL_SOCKET_OPEN_NACK: if (size != sizeof(SpiceMsgcTunnelSocketOpenNack)) { - red_printf("bad message size"); + spice_printerr("bad message size"); return FALSE; } @@ -2304,7 +2305,7 @@ static int tunnel_channel_handle_message(RedChannelClient *rcc, uint16_t type, case SPICE_MSGC_TUNNEL_SOCKET_DATA: { if (size < sizeof(SpiceMsgcTunnelSocketData)) { - red_printf("bad message size"); + spice_printerr("bad message size"); return FALSE; } @@ -2314,25 +2315,25 @@ static int tunnel_channel_handle_message(RedChannelClient *rcc, uint16_t type, } case SPICE_MSGC_TUNNEL_SOCKET_FIN: if (size != sizeof(SpiceMsgcTunnelSocketFin)) { - red_printf("bad message size"); + spice_printerr("bad message size"); return FALSE; } return tunnel_channel_handle_socket_fin(tunnel_channel, sckt); case SPICE_MSGC_TUNNEL_SOCKET_CLOSED: if (size != sizeof(SpiceMsgcTunnelSocketClosed)) { - red_printf("bad message size"); + spice_printerr("bad message size"); return FALSE; } return tunnel_channel_handle_socket_closed(tunnel_channel, sckt); case SPICE_MSGC_TUNNEL_SOCKET_CLOSED_ACK: if (size != sizeof(SpiceMsgcTunnelSocketClosedAck)) { - red_printf("bad message size"); + spice_printerr("bad message size"); return FALSE; } return tunnel_channel_handle_socket_closed_ack(tunnel_channel, sckt); case SPICE_MSGC_TUNNEL_SOCKET_TOKEN: if (size != sizeof(SpiceMsgcTunnelSocketTokens)) { - red_printf("bad message size"); + spice_printerr("bad message size"); return FALSE; } @@ -2352,7 +2353,7 @@ static void tunnel_channel_marshall_migrate(RedChannelClient *rcc, SpiceMarshall { TunnelChannelClient *tunnel_channel; - ASSERT(rcc); + spice_assert(rcc); tunnel_channel = SPICE_CONTAINEROF(rcc->channel, TunnelChannelClient, base); tunnel_channel->send_data.u.migrate.flags = SPICE_MIGRATE_NEED_FLUSH | SPICE_MIGRATE_NEED_DATA_TRANSFER; @@ -2417,7 +2418,8 @@ static int __tunnel_channel_marshall_service_migrate_data(TunnelChannelClient *c sizeof(item->u.print_service)); cur_offset += sizeof(item->u.print_service); } else { - red_error("unexpected service type"); + spice_error("unexpected service type"); + abort(); } generic_data->name = cur_offset; @@ -2506,7 +2508,7 @@ static void tunnel_channel_marshall_migrate_data(RedChannelClient *rcc, int i; uint32_t data_buf_offset = 0; // current location in data[0] field - ASSERT(rcc); + spice_assert(rcc); tunnel_channel = SPICE_CONTAINEROF(rcc->channel, TunnelChannelClient, base); migrate_data = &tunnel_channel->send_data.u.migrate_data; @@ -2550,7 +2552,7 @@ static void tunnel_channel_marshall_init(RedChannelClient *rcc, SpiceMarshaller { TunnelChannelClient *channel; - ASSERT(rcc); + spice_assert(rcc); channel = SPICE_CONTAINEROF(rcc->channel, TunnelChannelClient, base); channel->send_data.u.init.max_socket_data_size = MAX_SOCKET_DATA_SIZE; channel->send_data.u.init.max_num_of_sockets = MAX_SOCKETS_NUM; @@ -2601,11 +2603,11 @@ static void tunnel_channel_marshall_socket_fin(RedChannelClient *rcc, SpiceMarsh RedSocketOutData *sckt_out_data = SPICE_CONTAINEROF(item, RedSocketOutData, status_pipe_item); RedSocket *sckt = SPICE_CONTAINEROF(sckt_out_data, RedSocket, out_data); - ASSERT(!sckt->out_data.ready_chunks_queue.head); + spice_assert(!sckt->out_data.ready_chunks_queue.head); tunnel_channel = SPICE_CONTAINEROF(rcc->channel, TunnelChannelClient, base); if (sckt->out_data.process_queue->head) { - red_printf("socket sent FIN but there are still buffers in outgoing process queue" + spice_printerr("socket sent FIN but there are still buffers in outgoing process queue" "(local_port=%d, service_id=%d)", ntohs(sckt->local_port), sckt->far_service->id); } @@ -2629,14 +2631,14 @@ static void tunnel_channel_marshall_socket_close(RedChannelClient *rcc, SpiceMar tunnel_channel = SPICE_CONTAINEROF(rcc->channel, TunnelChannelClient, base); // can happen when it is a forced close if (sckt->out_data.ready_chunks_queue.head) { - red_printf("socket closed but there are still buffers in outgoing ready queue" + spice_printerr("socket closed but there are still buffers in outgoing ready queue" "(local_port=%d, service_id=%d)", ntohs(sckt->local_port), sckt->far_service->id); } if (sckt->out_data.process_queue->head) { - red_printf("socket closed but there are still buffers in outgoing process queue" + spice_printerr("socket closed but there are still buffers in outgoing process queue" "(local_port=%d, service_id=%d)", ntohs(sckt->local_port), sckt->far_service->id); } @@ -2668,7 +2670,7 @@ static void tunnel_channel_marshall_socket_closed_ack(RedChannelClient *rcc, Spi PRINT_SCKT(sckt); #endif - ASSERT(sckt->client_waits_close_ack && (sckt->client_status == CLIENT_SCKT_STATUS_CLOSED)); + spice_assert(sckt->client_waits_close_ack && (sckt->client_status == CLIENT_SCKT_STATUS_CLOSED)); tunnel_worker_free_socket(tunnel_channel->worker, sckt); if (CHECK_TUNNEL_ERROR(tunnel_channel)) { tunnel_shutdown(tunnel_channel->worker); @@ -2690,12 +2692,12 @@ static void tunnel_channel_marshall_socket_token(RedChannelClient *rcc, SpiceMar if (sckt->in_data.num_tokens > 0) { tunnel_channel->send_data.u.socket_token.num_tokens = sckt->in_data.num_tokens; } else { - ASSERT(!sckt->in_data.client_total_num_tokens && !sckt->in_data.ready_chunks_queue.head); + spice_assert(!sckt->in_data.client_total_num_tokens && !sckt->in_data.ready_chunks_queue.head); tunnel_channel->send_data.u.socket_token.num_tokens = SOCKET_TOKENS_TO_SEND_FOR_PROCESS; } sckt->in_data.num_tokens -= tunnel_channel->send_data.u.socket_token.num_tokens; sckt->in_data.client_total_num_tokens += tunnel_channel->send_data.u.socket_token.num_tokens; - ASSERT(sckt->in_data.client_total_num_tokens <= SOCKET_WINDOW_SIZE); + spice_assert(sckt->in_data.client_total_num_tokens <= SOCKET_WINDOW_SIZE); red_channel_client_init_send_data(rcc, SPICE_MSG_TUNNEL_SOCKET_TOKEN, item); spice_marshaller_add_ref(m, (uint8_t*)&tunnel_channel->send_data.u.socket_token, @@ -2712,7 +2714,7 @@ static void tunnel_channel_marshall_socket_out_data(RedChannelClient *rcc, Spice uint32_t total_push_size = 0; uint32_t pushed_bufs_num = 0; - ASSERT(!sckt->pushed_close); + spice_assert(!sckt->pushed_close); if (sckt->client_status == CLIENT_SCKT_STATUS_CLOSED) { return; } @@ -2721,9 +2723,9 @@ static void tunnel_channel_marshall_socket_out_data(RedChannelClient *rcc, Spice return; // only when an we will receive tokens, data will be sent again. } - ASSERT(sckt->out_data.ready_chunks_queue.head); - ASSERT(!sckt->out_data.push_tail); - ASSERT(sckt->out_data.ready_chunks_queue.head->size <= MAX_SOCKET_DATA_SIZE); + spice_assert(sckt->out_data.ready_chunks_queue.head); + spice_assert(!sckt->out_data.push_tail); + spice_assert(sckt->out_data.ready_chunks_queue.head->size <= MAX_SOCKET_DATA_SIZE); tunnel_channel->send_data.u.socket_data.connection_id = sckt->connection_id; @@ -2763,7 +2765,7 @@ static void tunnel_worker_release_socket_out_data(TunnelWorker *worker, PipeItem RedSocketOutData *sckt_out_data = SPICE_CONTAINEROF(item, RedSocketOutData, data_pipe_item); RedSocket *sckt = SPICE_CONTAINEROF(sckt_out_data, RedSocket, out_data); - ASSERT(sckt_out_data->ready_chunks_queue.head); + spice_assert(sckt_out_data->ready_chunks_queue.head); while (sckt_out_data->ready_chunks_queue.head != sckt_out_data->push_tail) { sckt_out_data->data_size -= sckt_out_data->ready_chunks_queue.head->size; @@ -2850,7 +2852,7 @@ static void tunnel_channel_send_item(RedChannelClient *rcc, PipeItem *item) tunnel_channel_marshall_migrate_data(rcc, m, item); break; default: - red_error("invalid pipe item type"); + spice_error("invalid pipe item type"); } red_channel_client_begin_send_message(rcc); } @@ -2886,7 +2888,7 @@ static void tunnel_channel_release_pipe_item(RedChannelClient *rcc, PipeItem *it release_migrate_item((TunnelMigrateItem *)item); break; default: - red_error("invalid pipe item type"); + spice_error("invalid pipe item type"); } } @@ -2924,14 +2926,14 @@ static int tunnel_socket_connect(SlirpUsrNetworkInterface *usr_interface, RedSocket *sckt; TunnelService *far_service; - ASSERT(usr_interface); + spice_assert(usr_interface); #ifdef DEBUG_NETWORK - red_printf("TUNNEL_DBG"); + spice_printerr("TUNNEL_DBG"); #endif worker = ((RedSlirpNetworkInterface *)usr_interface)->worker; - ASSERT(worker->channel_client); - ASSERT(!worker->channel_client->mig_inprogress); + spice_assert(worker->channel_client); + spice_assert(!worker->channel_client->mig_inprogress); far_service = tunnel_worker_find_service_by_addr(worker, &dst_addr, (uint32_t)ntohs(dst_port)); @@ -2941,13 +2943,13 @@ static int tunnel_socket_connect(SlirpUsrNetworkInterface *usr_interface, } if (tunnel_worker_find_socket(worker, src_port, far_service->id)) { - red_printf("slirp tried to open a socket that is still opened"); + spice_printerr("slirp tried to open a socket that is still opened"); errno = EADDRINUSE; return -1; } if (worker->num_sockets == MAX_SOCKETS_NUM) { - red_printf("number of tunneled sockets exceeds the limit"); + spice_printerr("number of tunneled sockets exceeds the limit"); errno = ENFILE; return -1; } @@ -2979,12 +2981,12 @@ static int tunnel_socket_send(SlirpUsrNetworkInterface *usr_interface, UserSocke RedSocket *sckt; size_t size_to_send; - ASSERT(usr_interface); - ASSERT(opaque); + spice_assert(usr_interface); + spice_assert(opaque); worker = ((RedSlirpNetworkInterface *)usr_interface)->worker; - ASSERT(!worker->channel_client->mig_inprogress); + spice_assert(!worker->channel_client->mig_inprogress); sckt = (RedSocket *)opaque; @@ -2995,7 +2997,7 @@ static int tunnel_socket_send(SlirpUsrNetworkInterface *usr_interface, UserSocke if ((sckt->client_status != CLIENT_SCKT_STATUS_OPEN) && (sckt->client_status != CLIENT_SCKT_STATUS_SHUTDOWN_SEND)) { - red_printf("client socket is unable to receive data"); + spice_printerr("client socket is unable to receive data"); errno = ECONNRESET; return -1; } @@ -3003,7 +3005,7 @@ static int tunnel_socket_send(SlirpUsrNetworkInterface *usr_interface, UserSocke if ((sckt->slirp_status == SLIRP_SCKT_STATUS_SHUTDOWN_SEND) || (sckt->slirp_status == SLIRP_SCKT_STATUS_WAIT_CLOSE)) { - red_printf("send was shutdown"); + spice_printerr("send was shutdown"); errno = EPIPE; return -1; } @@ -3026,10 +3028,10 @@ static int tunnel_socket_send(SlirpUsrNetworkInterface *usr_interface, UserSocke // and buffers will be released, we will try to send again. size_to_send = 0; } else { - ASSERT(sckt->out_data.process_queue->head); + spice_assert(sckt->out_data.process_queue->head); if ((sckt->out_data.data_size + len) > (MAX_SOCKET_OUT_BUFFERS * MAX_SOCKET_DATA_SIZE)) { - red_printf("socket out buffers overflow, socket will be closed" + spice_printerr("socket out buffers overflow, socket will be closed" " (local_port=%d, service_id=%d)", ntohs(sckt->local_port), sckt->far_service->id); tunnel_socket_force_close(worker->channel_client, sckt); @@ -3084,11 +3086,11 @@ static int tunnel_socket_recv(SlirpUsrNetworkInterface *usr_interface, UserSocke RedSocket *sckt; int copied = 0; - ASSERT(usr_interface); - ASSERT(opaque); + spice_assert(usr_interface); + spice_assert(opaque); worker = ((RedSlirpNetworkInterface *)usr_interface)->worker; - ASSERT(!worker->channel_client->mig_inprogress); + spice_assert(!worker->channel_client->mig_inprogress); sckt = (RedSocket *)opaque; @@ -3112,7 +3114,7 @@ static int tunnel_socket_recv(SlirpUsrNetworkInterface *usr_interface, UserSocke return -1; } - ASSERT((sckt->client_status == CLIENT_SCKT_STATUS_OPEN) || + spice_assert((sckt->client_status == CLIENT_SCKT_STATUS_OPEN) || (sckt->client_status == CLIENT_SCKT_STATUS_SHUTDOWN_SEND) || ((sckt->client_status == CLIENT_SCKT_STATUS_CLOSED) && (sckt->slirp_status == SLIRP_SCKT_STATUS_SHUTDOWN_SEND))); @@ -3121,7 +3123,7 @@ static int tunnel_socket_recv(SlirpUsrNetworkInterface *usr_interface, UserSocke // if there is data in ready queue, when it is acked, slirp will call recv and get 0 if (__should_send_fin_to_guest(sckt)) { if (sckt->in_data.process_queue->head) { - red_printf("client socket sent FIN but there are still buffers in incoming process" + spice_printerr("client socket sent FIN but there are still buffers in incoming process" "queue (local_port=%d, service_id=%d)", ntohs(sckt->local_port), sckt->far_service->id); } @@ -3139,7 +3141,7 @@ static int tunnel_socket_recv(SlirpUsrNetworkInterface *usr_interface, UserSocke ready_queue_pop_chunk(&sckt->in_data.ready_chunks_queue); sckt->in_data.ready_chunks_queue.offset = 0; } else { - ASSERT(copied == len); + spice_assert(copied == len); sckt->in_data.ready_chunks_queue.offset += copy_count; } } @@ -3164,15 +3166,15 @@ static void tunnel_socket_shutdown_send(SlirpUsrNetworkInterface *usr_interface, TunnelWorker *worker; RedSocket *sckt; - ASSERT(usr_interface); - ASSERT(opaque); + spice_assert(usr_interface); + spice_assert(opaque); worker = ((RedSlirpNetworkInterface *)usr_interface)->worker; sckt = (RedSocket *)opaque; #ifdef DEBUG_NETWORK PRINT_SCKT(sckt); #endif - ASSERT(!worker->channel_client->mig_inprogress); + spice_assert(!worker->channel_client->mig_inprogress); if (sckt->slirp_status == SLIRP_SCKT_STATUS_DELAY_ABORT) { return; @@ -3181,7 +3183,7 @@ static void tunnel_socket_shutdown_send(SlirpUsrNetworkInterface *usr_interface, if (sckt->slirp_status == SLIRP_SCKT_STATUS_OPEN) { sckt->slirp_status = SLIRP_SCKT_STATUS_SHUTDOWN_SEND; } else if (sckt->slirp_status == SLIRP_SCKT_STATUS_SHUTDOWN_RECV) { - ASSERT(sckt->client_status == CLIENT_SCKT_STATUS_SHUTDOWN_SEND); + spice_assert(sckt->client_status == CLIENT_SCKT_STATUS_SHUTDOWN_SEND); sckt->slirp_status = SLIRP_SCKT_STATUS_WAIT_CLOSE; } else { SET_TUNNEL_ERROR(worker->channel_client, "unexpected tunnel_socket_shutdown_send slirp_status=%d", @@ -3216,15 +3218,15 @@ static void tunnel_socket_shutdown_recv(SlirpUsrNetworkInterface *usr_interface, TunnelWorker *worker; RedSocket *sckt; - ASSERT(usr_interface); - ASSERT(opaque); + spice_assert(usr_interface); + spice_assert(opaque); worker = ((RedSlirpNetworkInterface *)usr_interface)->worker; sckt = (RedSocket *)opaque; #ifdef DEBUG_NETWORK PRINT_SCKT(sckt); #endif - ASSERT(!worker->channel_client->mig_inprogress); + spice_assert(!worker->channel_client->mig_inprogress); /* failure in recv can happen after the client sckt was shutdown (after client sent FIN, or after slirp sent FIN and client socket was closed */ @@ -3253,8 +3255,8 @@ static void null_tunnel_socket_close(SlirpUsrNetworkInterface *usr_interface, Us TunnelWorker *worker; RedSocket *sckt; - ASSERT(usr_interface); - ASSERT(opaque); + spice_assert(usr_interface); + spice_assert(opaque); worker = ((RedSlirpNetworkInterface *)usr_interface)->worker; @@ -3278,8 +3280,8 @@ static void tunnel_socket_close(SlirpUsrNetworkInterface *usr_interface, UserSoc TunnelWorker *worker; RedSocket *sckt; - ASSERT(usr_interface); - ASSERT(opaque); + spice_assert(usr_interface); + spice_assert(opaque); worker = ((RedSlirpNetworkInterface *)usr_interface)->worker; @@ -3313,7 +3315,7 @@ static UserTimer *create_timer(SlirpUsrNetworkInterface *usr_interface, { TunnelWorker *worker; - ASSERT(usr_interface); + spice_assert(usr_interface); worker = ((RedSlirpNetworkInterface *)usr_interface)->worker; @@ -3324,12 +3326,12 @@ static void arm_timer(SlirpUsrNetworkInterface *usr_interface, UserTimer *timer, { TunnelWorker *worker; - ASSERT(usr_interface); + spice_assert(usr_interface); worker = ((RedSlirpNetworkInterface *)usr_interface)->worker; #ifdef DEBUG_NETWORK if (!worker->channel_client) { - red_printf("channel not connected"); + spice_printerr("channel not connected"); } #endif if (worker->channel_client && worker->channel_client->mig_inprogress) { @@ -3352,12 +3354,12 @@ static int tunnel_channel_config_socket(RedChannelClient *rcc) RedsStream *stream = red_channel_client_get_stream(rcc); if ((flags = fcntl(stream->socket, F_GETFL)) == -1) { - red_printf("accept failed, %s", strerror(errno)); // can't we just use red_error? + spice_printerr("accept failed, %s", strerror(errno)); // can't we just use spice_error? return FALSE; } if (fcntl(stream->socket, F_SETFL, flags | O_NONBLOCK) == -1) { - red_printf("accept failed, %s", strerror(errno)); + spice_printerr("accept failed, %s", strerror(errno)); return FALSE; } @@ -3366,7 +3368,7 @@ static int tunnel_channel_config_socket(RedChannelClient *rcc) if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY, &delay_val, sizeof(delay_val)) == -1) { if (errno != ENOTSUP) { - red_printf("setsockopt failed, %s", strerror(errno)); + spice_printerr("setsockopt failed, %s", strerror(errno)); } } @@ -3401,7 +3403,7 @@ static void tunnel_channel_on_disconnect(RedChannel *channel) if (!channel) { return; } - red_printf(""); + spice_printerr(""); worker = (TunnelWorker *)channel->data; tunnel_worker_disconnect_slirp(worker); @@ -3444,7 +3446,7 @@ static void handle_tunnel_channel_link(RedChannel *channel, RedClient *client, TunnelWorker *worker = (TunnelWorker *)channel->data; if (worker->channel_client) { - red_error("tunnel does not support multiple client"); + spice_error("tunnel does not support multiple client"); } tcc = (TunnelChannelClient*)red_channel_client_create(sizeof(TunnelChannelClient), @@ -3462,10 +3464,10 @@ static void handle_tunnel_channel_client_migrate(RedChannelClient *rcc) { TunnelChannelClient *tunnel_channel; #ifdef DEBUG_NETWORK - red_printf("TUNNEL_DBG: MIGRATE STARTED"); + spice_printerr("TUNNEL_DBG: MIGRATE STARTED"); #endif tunnel_channel = (TunnelChannelClient *)rcc; - ASSERT(tunnel_channel == tunnel_channel->worker->channel_client); + spice_assert(tunnel_channel == tunnel_channel->worker->channel_client); tunnel_channel->mig_inprogress = TRUE; net_slirp_freeze(); red_channel_client_pipe_add_type(rcc, PIPE_ITEM_TYPE_MIGRATE); diff --git a/server/red_worker.c b/server/red_worker.c index 172a571..c17a7d0 100644 --- a/server/red_worker.c +++ b/server/red_worker.c @@ -19,6 +19,8 @@ #include <config.h> #endif +#define SPICE_LOG_DOMAIN "SpiceWorker" + /* Common variable abberiviations: * * rcc - RedChannelClient @@ -1113,46 +1115,46 @@ static void print_compress_stats(DisplayChannel *display_channel) display_channel->zlib_glz_stat.comp_size : display_channel->glz_stat.comp_size; - red_printf("==> Compression stats for display %u", display_channel->common.id); - red_printf("Method \t count \torig_size(MB)\tenc_size(MB)\tenc_time(s)"); - red_printf("QUIC \t%8d\t%13.2f\t%12.2f\t%12.2f", + spice_printerr("==> Compression stats for display %u", display_channel->common.id); + spice_printerr("Method \t count \torig_size(MB)\tenc_size(MB)\tenc_time(s)"); + spice_printerr("QUIC \t%8d\t%13.2f\t%12.2f\t%12.2f", display_channel->quic_stat.count, stat_byte_to_mega(display_channel->quic_stat.orig_size), stat_byte_to_mega(display_channel->quic_stat.comp_size), stat_cpu_time_to_sec(display_channel->quic_stat.total) ); - red_printf("GLZ \t%8d\t%13.2f\t%12.2f\t%12.2f", + spice_printerr("GLZ \t%8d\t%13.2f\t%12.2f\t%12.2f", display_channel->glz_stat.count, stat_byte_to_mega(display_channel->glz_stat.orig_size), stat_byte_to_mega(display_channel->glz_stat.comp_size), stat_cpu_time_to_sec(display_channel->glz_stat.total) ); - red_printf("ZLIB GLZ \t%8d\t%13.2f\t%12.2f\t%12.2f", + spice_printerr("ZLIB GLZ \t%8d\t%13.2f\t%12.2f\t%12.2f", display_channel->zlib_glz_stat.count, stat_byte_to_mega(display_channel->zlib_glz_stat.orig_size), stat_byte_to_mega(display_channel->zlib_glz_stat.comp_size), stat_cpu_time_to_sec(display_channel->zlib_glz_stat.total) ); - red_printf("LZ \t%8d\t%13.2f\t%12.2f\t%12.2f", + spice_printerr("LZ \t%8d\t%13.2f\t%12.2f\t%12.2f", display_channel->lz_stat.count, stat_byte_to_mega(display_channel->lz_stat.orig_size), stat_byte_to_mega(display_channel->lz_stat.comp_size), stat_cpu_time_to_sec(display_channel->lz_stat.total) ); - red_printf("JPEG \t%8d\t%13.2f\t%12.2f\t%12.2f", + spice_printerr("JPEG \t%8d\t%13.2f\t%12.2f\t%12.2f", display_channel->jpeg_stat.count, stat_byte_to_mega(display_channel->jpeg_stat.orig_size), stat_byte_to_mega(display_channel->jpeg_stat.comp_size), stat_cpu_time_to_sec(display_channel->jpeg_stat.total) ); - red_printf("JPEG-RGBA\t%8d\t%13.2f\t%12.2f\t%12.2f", + spice_printerr("JPEG-RGBA\t%8d\t%13.2f\t%12.2f\t%12.2f", display_channel->jpeg_alpha_stat.count, stat_byte_to_mega(display_channel->jpeg_alpha_stat.orig_size), stat_byte_to_mega(display_channel->jpeg_alpha_stat.comp_size), stat_cpu_time_to_sec(display_channel->jpeg_alpha_stat.total) ); - red_printf("-------------------------------------------------------------------"); - red_printf("Total \t%8d\t%13.2f\t%12.2f\t%12.2f", + spice_printerr("-------------------------------------------------------------------"); + spice_printerr("Total \t%8d\t%13.2f\t%12.2f\t%12.2f", display_channel->lz_stat.count + display_channel->glz_stat.count + display_channel->quic_stat.count + display_channel->jpeg_stat.count + @@ -1188,15 +1190,15 @@ static inline int is_primary_surface(RedWorker *worker, uint32_t surface_id) static inline void __validate_surface(RedWorker *worker, uint32_t surface_id) { - PANIC_ON(surface_id >= worker->n_surfaces); + spice_warn_if(surface_id >= worker->n_surfaces); } static inline void validate_surface(RedWorker *worker, uint32_t surface_id) { - PANIC_ON(surface_id >= worker->n_surfaces); + spice_warn_if(surface_id >= worker->n_surfaces); if (!worker->surfaces[surface_id].context.canvas) { - red_printf("failed on %d", surface_id); - PANIC_ON(!worker->surfaces[surface_id].context.canvas); + spice_printerr("failed on %d", surface_id); + spice_warn_if(!worker->surfaces[surface_id].context.canvas); } } @@ -1264,7 +1266,7 @@ static void show_red_drawable(RedWorker *worker, RedDrawable *drawable, const ch case QXL_DRAW_TEXT: break; default: - red_error("bad drawable type"); + spice_error("bad drawable type"); } printf("\n"); } @@ -1363,8 +1365,8 @@ static void put_drawable_pipe_item(DrawablePipeItem *dpi) return; } - ASSERT(!ring_item_is_linked(&dpi->dpi_pipe_item.link)); - ASSERT(!ring_item_is_linked(&dpi->base)); + spice_assert(!ring_item_is_linked(&dpi->dpi_pipe_item.link)); + spice_assert(!ring_item_is_linked(&dpi->base)); release_drawable(worker, dpi->drawable); free(dpi); } @@ -1387,7 +1389,7 @@ static inline DrawablePipeItem *get_drawable_pipe_item(DisplayChannelClient *dcc static inline DrawablePipeItem *ref_drawable_pipe_item(DrawablePipeItem *dpi) { - ASSERT(dpi->drawable); + spice_assert(dpi->drawable); dpi->refs++; return dpi; } @@ -1406,7 +1408,7 @@ static inline void red_pipes_add_drawable(RedWorker *worker, Drawable *drawable) DisplayChannelClient *dcc; RingItem *dcc_ring_item; - PANIC_ON(!ring_is_empty(&drawable->pipes)); + spice_warn_if(!ring_is_empty(&drawable->pipes)); WORKER_FOREACH_DCC(worker, dcc_ring_item, dcc) { red_pipe_add_drawable(dcc, drawable); } @@ -1446,7 +1448,7 @@ static inline void red_pipes_add_drawable_after(RedWorker *worker, } if (num_other_linked != worker->display_channel->common.base.clients_num) { RingItem *worker_item; - red_printf("TODO: not O(n^2)"); + spice_printerr("TODO: not O(n^2)"); WORKER_FOREACH_DCC(worker, worker_item, dcc) { int sent = 0; DRAWABLE_FOREACH_DPI(pos_after, dpi_link, dpi_pos_after) { @@ -1592,7 +1594,7 @@ static SurfaceDestroyItem *get_surface_destroy_item(RedChannel *channel, SurfaceDestroyItem *destroy; destroy = (SurfaceDestroyItem *)malloc(sizeof(SurfaceDestroyItem)); - PANIC_ON(!destroy); + spice_warn_if(!destroy); destroy->surface_destroy.surface_id = surface_id; @@ -1628,7 +1630,7 @@ static inline void red_destroy_surface(RedWorker *worker, uint32_t surface_id) if (is_primary_surface(worker, surface_id)) { red_reset_stream_trace(worker); } - ASSERT(surface->context.canvas); + spice_assert(surface->context.canvas); surface->context.canvas->ops->destroy(surface->context.canvas); if (surface->create.info) { @@ -1644,7 +1646,7 @@ static inline void red_destroy_surface(RedWorker *worker, uint32_t surface_id) red_destroy_surface_item(worker, dcc, surface_id); } - PANIC_ON(!ring_is_empty(&surface->depend_on_me)); + spice_warn_if(!ring_is_empty(&surface->depend_on_me)); } } @@ -1693,8 +1695,8 @@ static inline void put_red_drawable(RedWorker *worker, RedDrawable *drawable, ui static void remove_depended_item(DependItem *item) { - ASSERT(item->drawable); - ASSERT(ring_item_is_linked(&item->ring_item)); + spice_assert(item->drawable); + spice_assert(ring_item_is_linked(&item->ring_item)); item->drawable = NULL; ring_remove(&item->ring_item); } @@ -1731,9 +1733,9 @@ static inline void release_drawable(RedWorker *worker, Drawable *drawable) RingItem *item, *next; if (!--drawable->refs) { - ASSERT(!drawable->stream); - ASSERT(!drawable->tree_item.shadow); - ASSERT(ring_is_empty(&drawable->pipes)); + spice_assert(!drawable->stream); + spice_assert(!drawable->tree_item.shadow); + spice_assert(ring_is_empty(&drawable->pipes)); region_destroy(&drawable->tree_item.base.rgn); remove_drawable_dependencies(worker, drawable); @@ -1769,7 +1771,7 @@ static inline void remove_shadow(RedWorker *worker, DrawItem *item) static inline void current_remove_container(RedWorker *worker, Container *container) { - ASSERT(ring_is_empty(&container->items)); + spice_assert(ring_is_empty(&container->items)); worker->containers_count--; ring_remove(&container->base.siblings_link); region_destroy(&container->base.rgn); @@ -1782,7 +1784,7 @@ static inline void container_cleanup(RedWorker *worker, Container *container) Container *next = container->base.container; if (container->items.next != &container->items) { TreeItem *item = (TreeItem *)ring_get_head(&container->items); - ASSERT(item); + spice_assert(item); ring_remove(&item->siblings_link); ring_add_after(&item->siblings_link, &container->base.siblings_link); item->container = container->base.container; @@ -1867,7 +1869,7 @@ static inline void current_remove(RedWorker *worker, TreeItem *item) } else { Container *container = (Container *)now; - ASSERT(now->type == TREE_ITEM_TYPE_CONTAINER); + spice_assert(now->type == TREE_ITEM_TYPE_CONTAINER); if ((ring_item = ring_get_head(&container->items))) { now = SPICE_CONTAINEROF(ring_item, TreeItem, siblings_link); @@ -2080,7 +2082,7 @@ static void print_base_item(const char* prefix, const TreeItem *base) print_container_item(prefix, (const Container *)base); break; default: - red_error("invalid type %u", base->type); + spice_error("invalid type %u", base->type); } } @@ -2092,7 +2094,7 @@ void __show_current(TreeItem *item, void *data) static void show_current(RedWorker *worker, Ring *ring) { if (ring_is_empty(ring)) { - red_printf("TEST: TREE: EMPTY"); + spice_printerr("TEST: TREE: EMPTY"); return; } current_tree_for_each(ring, __show_current, NULL); @@ -2128,7 +2130,7 @@ static inline Ring *ring_of(RedWorker *worker, Ring *ring, TreeItem *item) static inline int __contained_by(RedWorker *worker, TreeItem *item, Ring *ring) { - ASSERT(item && ring); + spice_assert(item && ring); do { Ring *now = ring_of(worker, ring, item); if (now == ring) { @@ -2200,7 +2202,7 @@ static inline void __exclude_region(RedWorker *worker, Ring *ring, TreeItem *ite } else { Shadow *shadow; - ASSERT(item->type == TREE_ITEM_TYPE_SHADOW); + spice_assert(item->type == TREE_ITEM_TYPE_SHADOW); shadow = (Shadow *)item; region_exclude(rgn, &and_rgn); region_or(&shadow->on_hold, &and_rgn); @@ -2228,7 +2230,7 @@ static void exclude_region(RedWorker *worker, Ring *ring, RingItem *ring_item, Q TreeItem *now = SPICE_CONTAINEROF(ring_item, TreeItem, siblings_link); Container *container = now->container; - ASSERT(!region_is_empty(&now->rgn)); + spice_assert(!region_is_empty(&now->rgn)); if (region_intersects(rgn, &now->rgn)) { print_base_item("EXCLUDE2", now); @@ -2236,7 +2238,7 @@ static void exclude_region(RedWorker *worker, Ring *ring, RingItem *ring_item, Q print_base_item("EXCLUDE3", now); if (region_is_empty(&now->rgn)) { - ASSERT(now->type != TREE_ITEM_TYPE_SHADOW); + spice_assert(now->type != TREE_ITEM_TYPE_SHADOW); ring_item = now->siblings_link.prev; print_base_item("EXCLUDE_REMOVE", now); current_remove(worker, now); @@ -2247,7 +2249,7 @@ static void exclude_region(RedWorker *worker, Ring *ring, RingItem *ring_item, Q Container *container = (Container *)now; if ((ring_item = ring_get_head(&container->items))) { ring = &container->items; - ASSERT(((TreeItem *)ring_item)->container); + spice_assert(((TreeItem *)ring_item)->container); continue; } ring_item = &now->siblings_link; @@ -2402,7 +2404,7 @@ static inline void red_free_stream(RedWorker *worker, Stream *stream) static void red_release_stream(RedWorker *worker, Stream *stream) { if (!--stream->refs) { - ASSERT(!ring_item_is_linked(&stream->link)); + spice_assert(!ring_item_is_linked(&stream->link)); if (stream->mjpeg_encoder) { mjpeg_encoder_destroy(stream->mjpeg_encoder); } @@ -2413,8 +2415,8 @@ static void red_release_stream(RedWorker *worker, Stream *stream) static inline void red_detach_stream(RedWorker *worker, Stream *stream) { - ASSERT(stream->current && stream->current->stream); - ASSERT(stream->current->stream == stream); + spice_assert(stream->current && stream->current->stream); + spice_assert(stream->current->stream == stream); stream->current->stream = NULL; stream->current = NULL; } @@ -2438,7 +2440,7 @@ static void push_stream_clip_by_drawable(DisplayChannelClient* dcc, StreamAgent int n_rects; if (!item) { - PANIC("alloc failed"); + spice_critical("alloc failed"); } if (drawable->red_drawable->clip.type == SPICE_CLIP_TYPE_NONE) { @@ -2462,7 +2464,7 @@ static void push_stream_clip(DisplayChannelClient* dcc, StreamAgent *agent) int n_rects; if (!item) { - PANIC("alloc failed"); + spice_critical("alloc failed"); } item->clip_type = SPICE_CLIP_TYPE_RECTS; @@ -2489,8 +2491,8 @@ static void red_attach_stream(RedWorker *worker, Drawable *drawable, Stream *str StreamAgent *agent; RingItem *item; - ASSERT(!drawable->stream && !stream->current); - ASSERT(drawable && stream); + spice_assert(!drawable->stream && !stream->current); + spice_assert(drawable && stream); stream->current = drawable; drawable->stream = stream; stream->last_time = drawable->creation_time; @@ -2510,13 +2512,13 @@ static void red_stop_stream(RedWorker *worker, Stream *stream) DisplayChannelClient *dcc; RingItem *item; - ASSERT(ring_item_is_linked(&stream->link)); - ASSERT(!stream->current); + spice_assert(ring_item_is_linked(&stream->link)); + spice_assert(!stream->current); WORKER_FOREACH_DCC(worker, item, dcc) { StreamAgent *stream_agent; stream_agent = &dcc->stream_agents[stream - worker->streams_buf]; region_clear(&stream_agent->vis_region); - ASSERT(!pipe_item_is_linked(&stream_agent->destroy_item)); + spice_assert(!pipe_item_is_linked(&stream_agent->destroy_item)); stream->refs++; red_channel_client_pipe_add(&dcc->common.base, &stream_agent->destroy_item); } @@ -2536,7 +2538,7 @@ static inline void red_detach_stream_gracefully(RedWorker *worker, Stream *strea RedChannelClient *rcc; DisplayChannelClient *dcc; - ASSERT(stream->current); + spice_assert(stream->current); WORKER_FOREACH_DCC(worker, item, dcc) { UpgradeItem *upgrade_item; int n_rects; @@ -2682,7 +2684,7 @@ static inline void red_handle_streams_timout(RedWorker *worker) static void red_display_release_stream(RedWorker *worker, StreamAgent *agent) { - ASSERT(agent->stream); + spice_assert(agent->stream); red_release_stream(worker, agent->stream); } @@ -2736,7 +2738,7 @@ static void red_display_create_stream(DisplayChannelClient *dcc, Stream *stream) StreamAgent *agent = &dcc->stream_agents[stream - dcc->common.worker->streams_buf]; stream->refs++; - ASSERT(region_is_empty(&agent->vis_region)); + spice_assert(region_is_empty(&agent->vis_region)); if (stream->current) { agent->frames = 1; region_clone(&agent->vis_region, &stream->current->tree_item.base.rgn); @@ -2760,13 +2762,13 @@ static void red_create_stream(RedWorker *worker, Drawable *drawable) int stream_width; int stream_height; - ASSERT(!drawable->stream); + spice_assert(!drawable->stream); if (!(stream = red_alloc_stream(worker))) { return; } - ASSERT(drawable->red_drawable->type == QXL_DRAW_COPY); + spice_assert(drawable->red_drawable->type == QXL_DRAW_COPY); src_rect = &drawable->red_drawable->u.copy.src_area; stream_width = src_rect->right - src_rect->left; stream_height = src_rect->bottom - src_rect->top; @@ -2919,7 +2921,7 @@ static inline void pre_stream_item_swap(RedWorker *worker, Stream *stream) StreamAgent *agent; RingItem *ring_item; - ASSERT(stream->current); + spice_assert(stream->current); if (!display_is_connected(worker)) { return; @@ -2962,7 +2964,7 @@ static inline void pre_stream_item_swap(RedWorker *worker, Stream *stream) static inline void red_update_copy_graduality(RedWorker* worker, Drawable *drawable) { SpiceBitmap *bitmap; - ASSERT(drawable->red_drawable->type == QXL_DRAW_COPY); + spice_assert(drawable->red_drawable->type == QXL_DRAW_COPY); if (worker->streaming_video != STREAM_VIDEO_FILTER) { drawable->copy_bitmap_graduality = BITMAP_GRADUAL_INVALID; @@ -3211,7 +3213,7 @@ static void red_reset_stream_trace(RedWorker *worker) if (!stream->current) { red_stop_stream(worker, stream); } else { - red_printf("attached stream"); + spice_printerr("attached stream"); } } @@ -3230,7 +3232,7 @@ static inline int red_current_add(RedWorker *worker, Ring *ring, Drawable *drawa RingItem *exclude_base = NULL; print_base_item("ADD", &item->base); - ASSERT(!region_is_empty(&item->base.rgn)); + spice_assert(!region_is_empty(&item->base.rgn)); region_init(&exclude_rgn); now = ring_next(ring, ring); @@ -3298,11 +3300,11 @@ static inline int red_current_add(RedWorker *worker, Ring *ring, Drawable *drawa now = ring_next(ring, ring); continue; } - ASSERT(IS_DRAW_ITEM(sibling)); + spice_assert(IS_DRAW_ITEM(sibling)); if (!((DrawItem *)sibling)->container_root) { container = __new_container(worker, (DrawItem *)sibling); if (!container) { - red_printf("create new container failed"); + spice_printerr("create new container failed"); region_destroy(&exclude_rgn); return FALSE; } @@ -3465,17 +3467,17 @@ static inline int red_current_add_qxl(RedWorker *worker, Ring *ring, Drawable *d #ifdef RED_WORKER_STAT if ((++worker->add_count % 100) == 0) { stat_time_t total = worker->add_stat.total; - red_printf("add with shadow count %u", + spice_printerr("add with shadow count %u", worker->add_with_shadow_count); worker->add_with_shadow_count = 0; - red_printf("add[%u] %f exclude[%u] %f __exclude[%u] %f", + spice_printerr("add[%u] %f exclude[%u] %f __exclude[%u] %f", worker->add_stat.count, stat_cpu_time_to_sec(total), worker->exclude_stat.count, stat_cpu_time_to_sec(worker->exclude_stat.total), worker->__exclude_stat.count, stat_cpu_time_to_sec(worker->__exclude_stat.total)); - red_printf("add %f%% exclude %f%% exclude2 %f%% __exclude %f%%", + spice_printerr("add %f%% exclude %f%% exclude2 %f%% __exclude %f%%", (double)(total - worker->exclude_stat.total) / total * 100, (double)(worker->exclude_stat.total) / total * 100, (double)(worker->exclude_stat.total - @@ -3514,7 +3516,7 @@ static int surface_format_to_image_type(uint32_t surface_format) case SPICE_SURFACE_FMT_32_ARGB: return SPICE_BITMAP_FMT_RGBA; default: - PANIC("Unsupported surface format"); + spice_critical("Unsupported surface format"); } return 0; } @@ -3614,7 +3616,7 @@ static void free_one_drawable(RedWorker *worker, int force_glz_free) Drawable *drawable; Container *container; - ASSERT(ring_item); + spice_assert(ring_item); drawable = SPICE_CONTAINEROF(ring_item, Drawable, list_link); if (force_glz_free) { RingItem *glz_item, *next_item; @@ -3752,7 +3754,7 @@ static inline void red_process_drawable(RedWorker *worker, RedDrawable *drawable int surface_id; Drawable *item = get_drawable(worker, drawable->effect, drawable, group_id); - ASSERT(item); + spice_assert(item); surface_id = item->surface_id; @@ -3851,7 +3853,7 @@ static inline void red_process_surface(RedWorker *worker, RedSurfaceCmd *surface break; } case QXL_SURFACE_CMD_DESTROY: - PANIC_ON(!red_surface->context.canvas); + spice_warn_if(!red_surface->context.canvas); set_surface_release_info(worker, surface_id, 0, surface->release_info, group_id); red_handle_depends_on_target_surface(worker, surface_id); /* note that red_handle_depends_on_target_surface must be called before red_current_clear. @@ -3862,7 +3864,7 @@ static inline void red_process_surface(RedWorker *worker, RedSurfaceCmd *surface red_destroy_surface(worker, surface_id); break; default: - red_error("unknown surface command"); + spice_error("unknown surface command"); }; red_put_surface_cmd(surface); free(surface); @@ -3921,7 +3923,7 @@ static void image_cache_remove(ImageCache *cache, ImageCacheItem *item) now = &cache->hash_table[item->id % IMAGE_CACHE_HASH_SIZE]; for (;;) { - ASSERT(*now); + spice_assert(*now); if (*now == item) { *now = item->next; break; @@ -3946,7 +3948,7 @@ static void image_cache_put(SpiceImageCache *spice_cache, uint64_t id, pixman_im #ifndef IMAGE_CACHE_AGE if (cache->num_items == IMAGE_CACHE_MAX_ITEMS) { ImageCacheItem *tail = (ImageCacheItem *)ring_get_tail(&cache->lru); - ASSERT(tail); + spice_assert(tail); image_cache_remove(cache, tail); } #endif @@ -3973,7 +3975,7 @@ static pixman_image_t *image_cache_get(SpiceImageCache *spice_cache, uint64_t id ImageCacheItem *item = image_cache_find(cache, id); if (!item) { - red_error("not found"); + spice_error("not found"); } return pixman_image_ref(item->image); } @@ -4028,8 +4030,8 @@ static void localize_bitmap(RedWorker *worker, SpiceImage **image_ptr, SpiceImag SpiceImage *image = *image_ptr; if (image == NULL) { - ASSERT(drawable != NULL); - ASSERT(drawable->self_bitmap != NULL); + spice_assert(drawable != NULL); + spice_assert(drawable->self_bitmap != NULL); *image_ptr = drawable->self_bitmap; return; } @@ -4061,7 +4063,7 @@ static void localize_bitmap(RedWorker *worker, SpiceImage **image_ptr, SpiceImag /* nothing */ break; default: - red_error("invalid image type"); + spice_error("invalid image type"); } } @@ -4204,7 +4206,7 @@ static void red_draw_qxl_drawable(RedWorker *worker, Drawable *drawable) break; } default: - red_printf("invalid type"); + spice_printerr("invalid type"); } } @@ -4242,7 +4244,7 @@ static void validate_area(RedWorker *worker, const SpiceRect *area, uint32_t sur return; } - ASSERT(stride < 0); + spice_assert(stride < 0); uint8_t *dest = line_0 + (area->top * stride) + area->left * sizeof(uint32_t); dest += (h - 1) * stride; canvas->ops->read_bits(canvas, dest, -stride, area); @@ -4280,7 +4282,7 @@ static inline void __red_collect_for_update(RedWorker *worker, Ring *ring, RingI if ((ring_item = ring_get_head(&container->items))) { ring = &container->items; - ASSERT(((TreeItem *)ring_item)->container); + spice_assert(((TreeItem *)ring_item)->container); continue; } ring_item = &now->siblings_link; @@ -4353,8 +4355,8 @@ static void red_update_area_till(RedWorker *worker, const SpiceRect *area, int s Drawable *now; QRegion rgn; - ASSERT(last); - ASSERT(ring_item_is_linked(&last->list_link)); + spice_assert(last); + spice_assert(ring_item_is_linked(&last->list_link)); surface = &worker->surfaces[surface_id]; @@ -4471,7 +4473,7 @@ static void red_update_area(RedWorker *worker, const SpiceRect *area, int surfac release_drawable(worker, now); #ifdef ACYCLIC_SURFACE_DEBUG if (gn != surface->current_gn) { - red_error("cyclic surface dependencies"); + spice_error("cyclic surface dependencies"); } #endif } while (now != last); @@ -4533,7 +4535,7 @@ static inline void free_cursor_item(RedWorker *worker, CursorItem *item) worker->free_cursor_items = (_CursorItem *)item; #ifdef DEBUG_CURSORS ++_cursor_count; - ASSERT(_cursor_count <= NUM_CURSORS); + spice_assert(_cursor_count <= NUM_CURSORS); #endif } @@ -4551,7 +4553,7 @@ static CursorItem *get_cursor_item(RedWorker *worker, RedCursorCmd *cmd, uint32_ { CursorItem *cursor_item; - PANIC_ON(!(cursor_item = alloc_cursor_item(worker))); + spice_warn_if(!(cursor_item = alloc_cursor_item(worker))); cursor_item->refs = 1; cursor_item->group_id = group_id; @@ -4562,7 +4564,7 @@ static CursorItem *get_cursor_item(RedWorker *worker, RedCursorCmd *cmd, uint32_ static CursorPipeItem *ref_cursor_pipe_item(CursorPipeItem *item) { - ASSERT(item); + spice_assert(item); item->refs++; return item; } @@ -4580,13 +4582,13 @@ static PipeItem *new_cursor_pipe_item(RedChannelClient *rcc, void *data, int num static void put_cursor_pipe_item(CursorChannelClient *ccc, CursorPipeItem *pipe_item) { - ASSERT(pipe_item); + spice_assert(pipe_item); if (--pipe_item->refs) { return; } - ASSERT(!pipe_item_is_linked(&pipe_item->base)); + spice_assert(!pipe_item_is_linked(&pipe_item->base)); red_release_cursor(ccc->common.worker, pipe_item->cursor_item); free(pipe_item); @@ -4617,7 +4619,7 @@ static void qxl_process_cursor(RedWorker *worker, RedCursorCmd *cursor_cmd, uint worker->cursor_trail_frequency = cursor_cmd->u.trail.frequency; break; default: - red_error("invalid cursor command %u", cursor_cmd->type); + spice_error("invalid cursor command %u", cursor_cmd->type); } if (cursor_is_connected(worker) && (worker->mouse_mode == SPICE_MOUSE_MODE_SERVER || @@ -4675,7 +4677,7 @@ static int red_process_cursor(RedWorker *worker, uint32_t max_pipe_size, int *ri break; } default: - red_error("bad command type"); + spice_error("bad command type"); } n++; } @@ -4755,7 +4757,7 @@ static int red_process_commands(RedWorker *worker, uint32_t max_pipe_size, int * &message, ext_cmd.cmd.data); #ifdef DEBUG /* alert: accessing message.data is insecure */ - red_printf("MESSAGE: %s", message.data); + spice_printerr("MESSAGE: %s", message.data); #endif release_info_ext.group_id = ext_cmd.group_id; release_info_ext.info = message.release_info; @@ -4772,7 +4774,7 @@ static int red_process_commands(RedWorker *worker, uint32_t max_pipe_size, int * break; } default: - red_error("bad command type"); + spice_error("bad command type"); } n++; if ((worker->display_channel && @@ -4793,9 +4795,8 @@ static void red_free_some(RedWorker *worker) DisplayChannelClient *dcc; RingItem *item; - red_printf_debug(3, "WORKER", - "#draw=%d, #red_draw=%d, #glz_draw=%d", worker->drawable_count, - worker->red_drawable_count, worker->glz_drawable_count); + spice_debug("#draw=%d, #red_draw=%d, #glz_draw=%d", worker->drawable_count, + worker->red_drawable_count, worker->glz_drawable_count); WORKER_FOREACH_DCC(worker, item, dcc) { GlzSharedDictionary *glz_dict = dcc ? dcc->glz_dict : NULL; @@ -4844,7 +4845,7 @@ static ImageItem *red_add_surface_area_image(DisplayChannelClient *dcc, int surf int bpp; int all_set; - ASSERT(area); + spice_assert(area); width = area->right - area->left; height = area->bottom - area->top; @@ -4929,7 +4930,7 @@ static void marshaller_add_compressed(SpiceMarshaller *m, size_t max = size; size_t now; do { - ASSERT(comp_buf); + spice_assert(comp_buf); now = MIN(sizeof(comp_buf->buf), max); max -= now; spice_marshaller_add_ref(m, (uint8_t*)comp_buf->buf, now); @@ -5020,7 +5021,7 @@ static void red_display_free_compress_buf(DisplayChannelClient *dcc, RedCompressBuf **curr_used = &dcc->send_data.used_compress_bufs; for (;;) { - ASSERT(*curr_used); + spice_assert(*curr_used); if (*curr_used == buf) { *curr_used = buf->next; break; @@ -5041,7 +5042,7 @@ static void red_display_reset_compress_buf(DisplayChannelClient *dcc) static void red_display_destroy_compress_bufs(DisplayChannel *display_channel) { - ASSERT(!red_channel_is_connected(&display_channel->common.base)); + spice_assert(!red_channel_is_connected(&display_channel->common.base)); while (display_channel->free_compress_bufs) { RedCompressBuf *buf = display_channel->free_compress_bufs; display_channel->free_compress_bufs = buf->next; @@ -5091,7 +5092,7 @@ static RedGlzDrawable *red_display_get_glz_drawable(DisplayChannelClient *dcc, D NOTE - the caller should set the glz_instance returned by the encoder by itself.*/ static GlzDrawableInstanceItem *red_display_add_glz_drawable_instance(RedGlzDrawable *glz_drawable) { - ASSERT(glz_drawable->instances_count < MAX_GLZ_DRAWABLE_INSTANCES); + spice_assert(glz_drawable->instances_count < MAX_GLZ_DRAWABLE_INSTANCES); // NOTE: We assume the additions are performed consecutively, without removals in the middle GlzDrawableInstanceItem *ret = glz_drawable->instances_pool + glz_drawable->instances_count; glz_drawable->instances_count++; @@ -5117,13 +5118,13 @@ static void red_display_free_glz_drawable_instance(DisplayChannelClient *dcc, RedWorker *worker = display_channel->common.worker; RedGlzDrawable *glz_drawable; - ASSERT(glz_drawable_instance); - ASSERT(glz_drawable_instance->red_glz_drawable); + spice_assert(glz_drawable_instance); + spice_assert(glz_drawable_instance->red_glz_drawable); glz_drawable = glz_drawable_instance->red_glz_drawable; - ASSERT(glz_drawable->dcc == dcc); - ASSERT(glz_drawable->instances_count); + spice_assert(glz_drawable->dcc == dcc); + spice_assert(glz_drawable->instances_count); ring_remove(&glz_drawable_instance->glz_link); glz_drawable->instances_count--; @@ -5134,7 +5135,7 @@ static void red_display_free_glz_drawable_instance(DisplayChannelClient *dcc, } if (ring_is_empty(&glz_drawable->instances)) { - ASSERT(!glz_drawable->instances_count); + spice_assert(!glz_drawable->instances_count); Drawable *drawable = glz_drawable->drawable; @@ -5272,7 +5273,7 @@ static void quic_usr_error(QuicUsrContext *usr, const char *fmt, ...) va_start(ap, fmt); vsnprintf(usr_data->message_buf, sizeof(usr_data->message_buf), fmt, ap); va_end(ap); - red_printf("%s", usr_data->message_buf); + spice_printerr("%s", usr_data->message_buf); longjmp(usr_data->jmp_env, 1); } @@ -5285,7 +5286,7 @@ static void lz_usr_error(LzUsrContext *usr, const char *fmt, ...) va_start(ap, fmt); vsnprintf(usr_data->message_buf, sizeof(usr_data->message_buf), fmt, ap); va_end(ap); - red_printf("%s", usr_data->message_buf); + spice_printerr("%s", usr_data->message_buf); longjmp(usr_data->jmp_env, 1); } @@ -5299,7 +5300,7 @@ static void glz_usr_error(GlzEncoderUsrContext *usr, const char *fmt, ...) vsnprintf(usr_data->message_buf, sizeof(usr_data->message_buf), fmt, ap); va_end(ap); - PANIC("%s", usr_data->message_buf); // if global lz fails in the middle + spice_critical("%s", usr_data->message_buf); // if global lz fails in the middle // the consequences are not predictable since the window // can turn to be unsynchronized between the server and // and the client @@ -5313,7 +5314,7 @@ static void quic_usr_warn(QuicUsrContext *usr, const char *fmt, ...) va_start(ap, fmt); vsnprintf(usr_data->message_buf, sizeof(usr_data->message_buf), fmt, ap); va_end(ap); - red_printf("%s", usr_data->message_buf); + spice_printerr("%s", usr_data->message_buf); } static void lz_usr_warn(LzUsrContext *usr, const char *fmt, ...) @@ -5324,7 +5325,7 @@ static void lz_usr_warn(LzUsrContext *usr, const char *fmt, ...) va_start(ap, fmt); vsnprintf(usr_data->message_buf, sizeof(usr_data->message_buf), fmt, ap); va_end(ap); - red_printf("%s", usr_data->message_buf); + spice_printerr("%s", usr_data->message_buf); } static void glz_usr_warn(GlzEncoderUsrContext *usr, const char *fmt, ...) @@ -5335,7 +5336,7 @@ static void glz_usr_warn(GlzEncoderUsrContext *usr, const char *fmt, ...) va_start(ap, fmt); vsnprintf(usr_data->message_buf, sizeof(usr_data->message_buf), fmt, ap); va_end(ap); - red_printf("%s", usr_data->message_buf); + spice_printerr("%s", usr_data->message_buf); } static void *quic_usr_malloc(QuicUsrContext *usr, int size) @@ -5472,7 +5473,7 @@ static int zlib_usr_more_input(ZlibEncoderUsrContext *usr, uint8_t** input) int buf_size; if (!usr_data->u.compressed_data.next) { - ASSERT(usr_data->u.compressed_data.size_left == 0); + spice_assert(usr_data->u.compressed_data.size_left == 0); return 0; } @@ -5521,7 +5522,7 @@ static inline void red_init_quic(RedWorker *worker) worker->quic = quic_create(&worker->quic_data.usr); if (!worker->quic) { - PANIC("create quic failed"); + spice_critical("create quic failed"); } } @@ -5538,7 +5539,7 @@ static inline void red_init_lz(RedWorker *worker) worker->lz = lz_create(&worker->lz_data.usr); if (!worker->lz) { - PANIC("create lz failed"); + spice_critical("create lz failed"); } } @@ -5563,7 +5564,7 @@ static inline void red_init_jpeg(RedWorker *worker) worker->jpeg = jpeg_encoder_create(&worker->jpeg_data.usr); if (!worker->jpeg) { - PANIC("create jpeg encoder failed"); + spice_critical("create jpeg encoder failed"); } } @@ -5575,7 +5576,7 @@ static inline void red_init_zlib(RedWorker *worker) worker->zlib = zlib_encoder_create(&worker->zlib_data.usr, ZLIB_DEFAULT_COMPRESSION_LEVEL); if (!worker->zlib) { - PANIC("create zlib encoder failed"); + spice_critical("create zlib encoder failed"); } } @@ -5655,13 +5656,13 @@ static BitmapGradualType _get_bitmap_graduality_level(RedWorker *worker, SpiceBi &chunk_score, &chunk_num_samples); break; default: - red_error("invalid bitmap format (not RGB) %u", bitmap->format); + spice_error("invalid bitmap format (not RGB) %u", bitmap->format); } score += chunk_score; num_samples += chunk_num_samples; } - ASSERT(num_samples); + spice_assert(num_samples); score /= num_samples; if (bitmap->format == SPICE_BITMAP_FMT_16BIT) { @@ -5683,7 +5684,7 @@ static BitmapGradualType _get_bitmap_graduality_level(RedWorker *worker, SpiceBi static inline int _stride_is_extra(SpiceBitmap *bitmap) { - ASSERT(bitmap); + spice_assert(bitmap); if (BITMAP_FMT_IS_RGB[bitmap->format]) { return ((bitmap->x * BITMAP_FMP_BYTES_PER_PIXEL[bitmap->format]) < bitmap->stride); } else { @@ -5701,9 +5702,11 @@ static inline int _stride_is_extra(SpiceBitmap *bitmap) return bytes_width < bitmap->stride; } default: - red_error("invalid image type %u", bitmap->format); + spice_error("invalid image type %u", bitmap->format); + return 0; } } + return 0; } static const LzImageType MAP_BITMAP_FMT_TO_LZ_IMAGE_TYPE[] = { @@ -5736,7 +5739,7 @@ static inline int red_glz_compress_image(DisplayChannelClient *dcc, #ifdef COMPRESS_STAT stat_time_t start_time = stat_now(); #endif - ASSERT(BITMAP_FMT_IS_RGB[src->format]); + spice_assert(BITMAP_FMT_IS_RGB[src->format]); GlzData *glz_data = &dcc->glz_data; ZlibData *zlib_data; LzImageType type = MAP_BITMAP_FMT_TO_LZ_IMAGE_TYPE[src->format]; @@ -5785,7 +5788,7 @@ static inline int red_glz_compress_image(DisplayChannelClient *dcc, zlib_data->data.bufs_head = zlib_data->data.bufs_tail; if (!zlib_data->data.bufs_head) { - red_printf("failed to allocate zlib compress buffer"); + spice_printerr("failed to allocate zlib compress buffer"); goto glz; } @@ -5948,7 +5951,7 @@ static int red_jpeg_compress_image(DisplayChannelClient *dcc, SpiceImage *dest, jpeg_data->data.bufs_head = jpeg_data->data.bufs_tail; if (!jpeg_data->data.bufs_head) { - red_printf("failed to allocate compress buffer"); + spice_printerr("failed to allocate compress buffer"); return FALSE; } @@ -6190,7 +6193,7 @@ static inline int red_compress_image(DisplayChannelClient *dcc, if (quic_compress) { #ifdef COMPRESS_DEBUG - red_printf("QUIC compress"); + spice_printerr("QUIC compress"); #endif // if bitmaps is picture-like, compress it using jpeg if (can_lossy && display_channel->enable_jpeg && @@ -6216,7 +6219,8 @@ static inline int red_compress_image(DisplayChannelClient *dcc, (image_compression == SPICE_IMAGE_COMPRESS_LZ)) { glz = FALSE; } else { - red_error("invalid image compression type %u", image_compression); + spice_error("invalid image compression type %u", image_compression); + return FALSE; } if (glz) { @@ -6236,12 +6240,12 @@ static inline int red_compress_image(DisplayChannelClient *dcc, ret = red_lz_compress_image(dcc, dest, src, o_comp_data, drawable->group_id); #ifdef COMPRESS_DEBUG - red_printf("LZ LOCAL compress"); + spice_printerr("LZ LOCAL compress"); #endif } #ifdef COMPRESS_DEBUG else { - red_printf("LZ global compress fmt=%d", src->format); + spice_printerr("LZ global compress fmt=%d", src->format); } #endif return ret; @@ -6256,7 +6260,7 @@ static inline void red_display_add_image_to_pixmap_cache(RedChannelClient *rcc, DisplayChannelClient *dcc = RCC_TO_DCC(rcc); if ((image->descriptor.flags & SPICE_IMAGE_FLAGS_CACHE_ME)) { - ASSERT(image->descriptor.width * image->descriptor.height > 0); + spice_assert(image->descriptor.width * image->descriptor.height > 0); if (!(io_image->descriptor.flags & SPICE_IMAGE_FLAGS_CACHE_REPLACE_ME)) { if (pixmap_cache_add(dcc->pixmap_cache, image->descriptor.id, image->descriptor.width * image->descriptor.height, is_lossy, @@ -6296,7 +6300,7 @@ static FillBitsType fill_bits(DisplayChannelClient *dcc, SpiceMarshaller *m, SpiceMarshaller *bitmap_palette_out, *lzplt_palette_out; if (simage == NULL) { - ASSERT(drawable->self_bitmap); + spice_assert(drawable->self_bitmap); simage = drawable->self_bitmap; } @@ -6319,8 +6323,8 @@ static FillBitsType fill_bits(DisplayChannelClient *dcc, SpiceMarshaller *m, } spice_marshall_Image(m, &image, &bitmap_palette_out, &lzplt_palette_out); - ASSERT(bitmap_palette_out == NULL); - ASSERT(lzplt_palette_out == NULL); + spice_assert(bitmap_palette_out == NULL); + spice_assert(lzplt_palette_out == NULL); stat_inc_counter(display_channel->cache_hits_counter, 1); return FILL_BITS_TYPE_CACHE; } else { @@ -6348,8 +6352,8 @@ static FillBitsType fill_bits(DisplayChannelClient *dcc, SpiceMarshaller *m, image.u.surface.surface_id = surface_id; spice_marshall_Image(m, &image, &bitmap_palette_out, &lzplt_palette_out); - ASSERT(bitmap_palette_out == NULL); - ASSERT(lzplt_palette_out == NULL); + spice_assert(bitmap_palette_out == NULL); + spice_assert(lzplt_palette_out == NULL); return FILL_BITS_TYPE_SURFACE; } case SPICE_IMAGE_TYPE_BITMAP: { @@ -6373,7 +6377,7 @@ static FillBitsType fill_bits(DisplayChannelClient *dcc, SpiceMarshaller *m, fill_palette(dcc, palette, &bitmap->flags); spice_marshall_Image(m, &image, &bitmap_palette_out, &lzplt_palette_out); - ASSERT(lzplt_palette_out == NULL); + spice_assert(lzplt_palette_out == NULL); if (bitmap_palette_out && palette) { spice_marshall_Palette(bitmap_palette_out, palette); @@ -6387,7 +6391,7 @@ static FillBitsType fill_bits(DisplayChannelClient *dcc, SpiceMarshaller *m, spice_marshall_Image(m, &image, &bitmap_palette_out, &lzplt_palette_out); - ASSERT(bitmap_palette_out == NULL); + spice_assert(bitmap_palette_out == NULL); marshaller_add_compressed(m, comp_send_data.comp_buf, comp_send_data.comp_buf_size); @@ -6396,7 +6400,7 @@ static FillBitsType fill_bits(DisplayChannelClient *dcc, SpiceMarshaller *m, spice_marshall_Palette(lzplt_palette_out, comp_send_data.lzplt_palette); } - ASSERT(!comp_send_data.is_lossy || can_lossy); + spice_assert(!comp_send_data.is_lossy || can_lossy); return (comp_send_data.is_lossy ? FILL_BITS_TYPE_COMPRESS_LOSSY : FILL_BITS_TYPE_COMPRESS_LOSSLESS); } @@ -6407,13 +6411,15 @@ static FillBitsType fill_bits(DisplayChannelClient *dcc, SpiceMarshaller *m, image.u.quic = simage->u.quic; spice_marshall_Image(m, &image, &bitmap_palette_out, &lzplt_palette_out); - ASSERT(bitmap_palette_out == NULL); - ASSERT(lzplt_palette_out == NULL); + spice_assert(bitmap_palette_out == NULL); + spice_assert(lzplt_palette_out == NULL); spice_marshaller_add_ref_chunks(m, image.u.quic.data); return FILL_BITS_TYPE_COMPRESS_LOSSLESS; default: - red_error("invalid image type %u", image.descriptor.type); + spice_error("invalid image type %u", image.descriptor.type); } + + return 0; } static void fill_mask(RedChannelClient *rcc, SpiceMarshaller *m, @@ -6706,7 +6712,7 @@ static int pipe_rendered_drawables_intersect_with_areas(RedWorker *worker, PipeItem *pipe_item; Ring *pipe; - ASSERT(num_surfaces); + spice_assert(num_surfaces); pipe = &dcc->common.base.pipe; for (pipe_item = (PipeItem *)ring_get_head(pipe); @@ -6780,7 +6786,7 @@ static void red_pipe_replace_rendered_drawables_with_images(RedWorker *worker, resent_areas[num_resent] = drawable->red_drawable->bbox; num_resent++; - ASSERT(image); + spice_assert(image); red_channel_client_pipe_remove_and_release(&dcc->common.base, &dpi->dpi_pipe_item); pipe_item = &image->link; } @@ -7722,7 +7728,7 @@ static void red_lossy_marshall_qxl_drawable(RedWorker *worker, RedChannelClient red_lossy_marshall_qxl_draw_text(worker, rcc, base_marshaller, dpi); break; default: - red_error("invalid type"); + spice_error("invalid type"); } } @@ -7773,7 +7779,7 @@ static inline void red_marshall_qxl_drawable(RedWorker *worker, RedChannelClient red_marshall_qxl_draw_text(worker, rcc, m, dpi); break; default: - red_error("invalid type"); + spice_error("invalid type"); } } @@ -7956,7 +7962,7 @@ static inline uint8_t *red_get_image_line(RedWorker *worker, SpiceChunks *chunks } if (chunk->len - *offset < stride) { - red_printf("bad chunk alignment"); + spice_printerr("bad chunk alignment"); return NULL; } ret = chunk->data + *offset; @@ -8011,8 +8017,8 @@ static inline int red_marshall_stream_data(RedChannelClient *rcc, RedWorker *worker = dcc->common.worker; int n; - ASSERT(stream); - ASSERT(drawable->red_drawable->type == QXL_DRAW_COPY); + spice_assert(stream); + spice_assert(drawable->red_drawable->type == QXL_DRAW_COPY); worker = display_channel->common.worker; image = drawable->red_drawable->u.copy.src_bitmap; @@ -8062,7 +8068,7 @@ static inline void marshall_qxl_drawable(RedChannelClient *rcc, Drawable *item = dpi->drawable; DisplayChannel *display_channel = SPICE_CONTAINEROF(rcc->channel, DisplayChannel, common.base); - ASSERT(display_channel && rcc); + spice_assert(display_channel && rcc); if (item->stream && red_marshall_stream_data(rcc, m, item)) { return; } @@ -8074,7 +8080,7 @@ static inline void marshall_qxl_drawable(RedChannelClient *rcc, static inline void red_marshall_verb(RedChannelClient *rcc, uint16_t verb) { - ASSERT(rcc); + spice_assert(rcc); red_channel_client_init_send_data(rcc, verb, NULL); } @@ -8109,9 +8115,9 @@ static void display_channel_marshall_migrate_data(RedChannelClient *rcc, red_channel_client_init_send_data(rcc, SPICE_MSG_MIGRATE_DATA, NULL); - ASSERT(dcc->pixmap_cache); + spice_assert(dcc->pixmap_cache); display_data.magic = DISPLAY_MIGRATE_DATA_MAGIC; - ASSERT(MAX_CACHE_CLIENTS == 4); //MIGRATE_DATA_VERSION dependent + spice_assert(MAX_CACHE_CLIENTS == 4); //MIGRATE_DATA_VERSION dependent display_data.version = DISPLAY_MIGRATE_DATA_VERSION; display_data.message_serial = red_channel_client_get_message_serial(rcc); @@ -8122,7 +8128,7 @@ static void display_channel_marshall_migrate_data(RedChannelClient *rcc, memcpy(display_data.pixmap_cache_clients, dcc->pixmap_cache->sync, sizeof(display_data.pixmap_cache_clients)); - ASSERT(dcc->glz_dict); + spice_assert(dcc->glz_dict); red_freeze_glz(dcc); display_data.glz_dict_id = dcc->glz_dict->id; glz_enc_dictionary_get_restore_data(dcc->glz_dict->dict, @@ -8187,7 +8193,7 @@ static void red_marshall_image(RedChannelClient *rcc, SpiceMarshaller *m, ImageI SpiceMarshaller *src_bitmap_out, *mask_bitmap_out; SpiceMarshaller *bitmap_palette_out, *lzplt_palette_out; - ASSERT(rcc && display_channel && item); + spice_assert(rcc && display_channel && item); worker = display_channel->common.worker; QXL_SET_IMAGE_ID(&red_image, QXL_IMAGE_GROUP_RED, ++worker->bits_unique); @@ -8312,14 +8318,14 @@ static void red_display_marshall_upgrade(RedChannelClient *rcc, SpiceMarshaller SpiceMsgDisplayDrawCopy copy; SpiceMarshaller *src_bitmap_out, *mask_bitmap_out; - ASSERT(rcc && rcc->channel && item && item->drawable); + spice_assert(rcc && rcc->channel && item && item->drawable); red_channel_client_init_send_data(rcc, SPICE_MSG_DISPLAY_DRAW_COPY, &item->base); red_drawable = item->drawable->red_drawable; - ASSERT(red_drawable->type == QXL_DRAW_COPY); - ASSERT(red_drawable->u.copy.rop_descriptor == SPICE_ROPD_OP_PUT); - ASSERT(red_drawable->u.copy.mask.bitmap == 0); + spice_assert(red_drawable->type == QXL_DRAW_COPY); + spice_assert(red_drawable->u.copy.rop_descriptor == SPICE_ROPD_OP_PUT); + spice_assert(red_drawable->u.copy.mask.bitmap == 0); copy.base.surface_id = 0; copy.base.box = red_drawable->bbox; @@ -8340,7 +8346,7 @@ static void red_display_marshall_stream_start(RedChannelClient *rcc, Stream *stream = agent->stream; agent->last_send_time = 0; - ASSERT(stream); + spice_assert(stream); red_channel_client_init_send_data(rcc, SPICE_MSG_DISPLAY_STREAM_CREATE, &agent->create_item); SpiceMsgDisplayStreamCreate stream_create; SpiceClipRects clip_rects; @@ -8377,7 +8383,7 @@ static void red_display_marshall_stream_clip(RedChannelClient *rcc, DisplayChannelClient *dcc = RCC_TO_DCC(rcc); StreamAgent *agent = item->stream_agent; - ASSERT(agent->stream); + spice_assert(agent->stream); red_channel_client_init_send_data(rcc, SPICE_MSG_DISPLAY_STREAM_CLIP, &item->base); SpiceMsgDisplayStreamClip stream_clip; @@ -8404,7 +8410,7 @@ static void red_display_marshall_stream_end(RedChannelClient *rcc, static void red_cursor_marshall_inval(RedChannelClient *rcc, SpiceMarshaller *m, CacheItem *cach_item) { - ASSERT(rcc); + spice_assert(rcc); red_marshall_inval(rcc, m, cach_item); } @@ -8417,7 +8423,7 @@ static void red_marshall_cursor_init(RedChannelClient *rcc, SpiceMarshaller *bas SpiceMsgCursorInit msg; AddBufInfo info; - ASSERT(rcc); + spice_assert(rcc); cursor_channel = SPICE_CONTAINEROF(rcc->channel, CursorChannel, common.base); worker = cursor_channel->common.worker; @@ -8453,7 +8459,7 @@ static void red_marshall_cursor(RedChannelClient *rcc, RedCursorCmd *cmd; RedWorker *worker; - ASSERT(cursor_channel); + spice_assert(cursor_channel); worker = cursor_channel->common.worker; @@ -8495,7 +8501,7 @@ static void red_marshall_cursor(RedChannelClient *rcc, } break; default: - red_error("bad cursor command %d", cmd->type); + spice_error("bad cursor command %d", cmd->type); } } @@ -8561,7 +8567,7 @@ static void display_channel_send_item(RedChannelClient *rcc, PipeItem *pipe_item red_marshall_verb(rcc, ((VerbItem*)pipe_item)->verb); break; case PIPE_ITEM_TYPE_MIGRATE: - red_printf("PIPE_ITEM_TYPE_MIGRATE"); + spice_printerr("PIPE_ITEM_TYPE_MIGRATE"); display_channel_marshall_migrate(rcc, m); break; case PIPE_ITEM_TYPE_MIGRATE_DATA: @@ -8593,7 +8599,7 @@ static void display_channel_send_item(RedChannelClient *rcc, PipeItem *pipe_item break; } default: - red_error("invalid pipe item type"); + spice_error("invalid pipe item type"); } display_channel_client_release_item_before_push(dcc, pipe_item); @@ -8620,7 +8626,7 @@ static void cursor_channel_send_item(RedChannelClient *rcc, PipeItem *pipe_item) red_marshall_verb(rcc, ((VerbItem*)pipe_item)->verb); break; case PIPE_ITEM_TYPE_MIGRATE: - red_printf("PIPE_ITEM_TYPE_MIGRATE"); + spice_printerr("PIPE_ITEM_TYPE_MIGRATE"); cursor_channel_marshall_migrate(rcc, m); break; case PIPE_ITEM_TYPE_CURSOR_INIT: @@ -8632,7 +8638,7 @@ static void cursor_channel_send_item(RedChannelClient *rcc, PipeItem *pipe_item) red_marshall_verb(rcc, SPICE_MSG_CURSOR_INVAL_ALL); break; default: - red_error("invalid pipe item type"); + spice_error("invalid pipe item type"); } cursor_channel_client_release_item_before_push(ccc, pipe_item); @@ -8662,7 +8668,7 @@ static void __show_tree_call(TreeItem *item, void *data) int i; while (tree_data->container != item->container) { - ASSERT(tree_data->container); + spice_assert(tree_data->container); tree_data->level--; tree_data->container = tree_data->container->base.container; } @@ -8726,11 +8732,11 @@ static void display_channel_client_on_disconnect(RedChannelClient *rcc) if (!rcc) { return; } - red_printf(""); + spice_printerr(""); common = SPICE_CONTAINEROF(rcc->channel, CommonChannel, base); worker = common->worker; display_channel = (DisplayChannel *)rcc->channel; - ASSERT(display_channel == worker->display_channel); + spice_assert(display_channel == worker->display_channel); #ifdef COMPRESS_STAT print_compress_stats(display_channel); #endif @@ -8746,9 +8752,9 @@ static void display_channel_client_on_disconnect(RedChannelClient *rcc) if (!red_channel_is_connected(rcc->channel)) { red_display_destroy_compress_bufs(display_channel); } - red_printf_debug(3, "WORKER", "#draw=%d, #red_draw=%d, #glz_draw=%d", - worker->drawable_count, worker->red_drawable_count, - worker->glz_drawable_count); + spice_debug("#draw=%d, #red_draw=%d, #glz_draw=%d", + worker->drawable_count, worker->red_drawable_count, + worker->glz_drawable_count); } void red_disconnect_all_display_TODO_remove_me(RedChannel *channel) @@ -8858,8 +8864,10 @@ static inline void *create_canvas_for_surface(RedWorker *worker, RedSurface *sur return canvas; #endif default: - red_error("invalid renderer type"); + spice_error("invalid renderer type"); }; + + return NULL; } static SurfaceCreateItem *get_surface_create_item( @@ -8870,7 +8878,7 @@ static SurfaceCreateItem *get_surface_create_item( SurfaceCreateItem *create; create = (SurfaceCreateItem *)malloc(sizeof(SurfaceCreateItem)); - PANIC_ON(!create); + spice_warn_if(!create); create->surface_create.surface_id = surface_id; create->surface_create.width = width; @@ -8931,9 +8939,9 @@ static inline void red_create_surface(RedWorker *worker, uint32_t surface_id, ui uint32_t i; if (stride >= 0) { - PANIC("Untested path stride >= 0"); + spice_critical("Untested path stride >= 0"); } - PANIC_ON(surface->context.canvas); + spice_warn_if(surface->context.canvas); surface->context.canvas_draws_on_surface = FALSE; surface->context.width = width; @@ -8956,7 +8964,7 @@ static inline void red_create_surface(RedWorker *worker, uint32_t surface_id, ui width, height, stride, surface->context.format, line_0); if (!surface->context.canvas) { - PANIC("drawing canvas creating failed - can`t create same type canvas"); + spice_critical("drawing canvas creating failed - can`t create same type canvas"); } if (send_client) { @@ -8984,7 +8992,7 @@ static inline void red_create_surface(RedWorker *worker, uint32_t surface_id, ui } } - PANIC("unable to create drawing canvas"); + spice_critical("unable to create drawing canvas"); } static inline void flush_display_commands(RedWorker *worker) @@ -9021,7 +9029,7 @@ static inline void flush_display_commands(RedWorker *worker) // TODO: MC: the whole timeout will break since it takes lowest timeout, should // do it client by client. if (red_now() >= end_time) { - red_printf("update timeout"); + spice_printerr("update timeout"); red_disconnect_all_display_TODO_remove_me(channel); } else { sleep_count++; @@ -9063,7 +9071,7 @@ static inline void flush_cursor_commands(RedWorker *worker) red_channel_receive(channel); red_channel_send(channel); if (red_now() >= end_time) { - red_printf("flush cursor timeout"); + spice_printerr("flush cursor timeout"); red_disconnect_cursor(channel); } else { sleep_count++; @@ -9107,15 +9115,15 @@ static int display_channel_client_wait_for_init(DisplayChannelClient *dcc) if (dcc->pixmap_cache && dcc->glz_dict) { dcc->pixmap_cache_generation = dcc->pixmap_cache->generation; /* TODO: move common.id? if it's used for a per client structure.. */ - red_printf("creating encoder with id == %d", dcc->common.id); + spice_printerr("creating encoder with id == %d", dcc->common.id); dcc->glz = glz_encoder_create(dcc->common.id, dcc->glz_dict->dict, &dcc->glz_data.usr); if (!dcc->glz) { - PANIC("create global lz failed"); + spice_critical("create global lz failed"); } return TRUE; } if (red_now() > end_time) { - red_printf("timeout"); + spice_printerr("timeout"); red_channel_client_disconnect(&dcc->common.base); break; } @@ -9189,10 +9197,10 @@ static GlzSharedDictionary *red_create_glz_dictionary(DisplayChannelClient *dcc, MAX_LZ_ENCODERS, &dcc->glz_data.usr); #ifdef COMPRESS_DEBUG - red_printf("Lz Window %d Size=%d", id, window_size); + spice_printerr("Lz Window %d Size=%d", id, window_size); #endif if (!glz_dict) { - PANIC("failed creating lz dictionary"); + spice_critical("failed creating lz dictionary"); return NULL; } return _red_create_glz_dictionary(dcc->common.base.client, id, glz_dict); @@ -9205,7 +9213,7 @@ static GlzSharedDictionary *red_create_restored_glz_dictionary(DisplayChannelCli GlzEncDictContext *glz_dict = glz_enc_dictionary_restore(restore_data, &dcc->glz_data.usr); if (!glz_dict) { - PANIC("failed creating lz dictionary"); + spice_critical("failed creating lz dictionary"); return NULL; } return _red_create_glz_dictionary(dcc->common.base.client, id, glz_dict); @@ -9342,7 +9350,7 @@ static void red_release_pixmap_cache(DisplayChannelClient *dcc) static int display_channel_init_cache(DisplayChannelClient *dcc, SpiceMsgcDisplayInit *init_info) { - ASSERT(!dcc->pixmap_cache); + spice_assert(!dcc->pixmap_cache); return !!(dcc->pixmap_cache = red_get_pixmap_cache(dcc->common.base.client, init_info->pixmap_cache_id, init_info->pixmap_cache_size)); @@ -9351,7 +9359,7 @@ static int display_channel_init_cache(DisplayChannelClient *dcc, SpiceMsgcDispla static int display_channel_init_glz_dictionary(DisplayChannelClient *dcc, SpiceMsgcDisplayInit *init_info) { - ASSERT(!dcc->glz_dict); + spice_assert(!dcc->glz_dict); ring_init(&dcc->glz_drawables); ring_init(&dcc->glz_drawables_inst_to_free); pthread_mutex_init(&dcc->glz_drawables_inst_to_free_lock, NULL); @@ -9369,7 +9377,7 @@ static int display_channel_init(DisplayChannelClient *dcc, SpiceMsgcDisplayInit static int display_channel_handle_migrate_glz_dictionary(DisplayChannelClient *dcc, DisplayChannelMigrateData *migrate_info) { - ASSERT(!dcc->glz_dict); + spice_assert(!dcc->glz_dict); ring_init(&dcc->glz_drawables); ring_init(&dcc->glz_drawables_inst_to_free); pthread_mutex_init(&dcc->glz_drawables_inst_to_free_lock, NULL); @@ -9384,7 +9392,7 @@ static int display_channel_handle_migrate_mark(RedChannelClient *rcc) RedChannel *channel = &display_channel->common.base; if (!display_channel->expect_migrate_mark) { - red_printf("unexpected"); + spice_printerr("unexpected"); return FALSE; } display_channel->expect_migrate_mark = FALSE; @@ -9398,12 +9406,12 @@ static uint64_t display_channel_handle_migrate_data_get_serial( DisplayChannelMigrateData *migrate_data = message; if (size < sizeof(*migrate_data)) { - red_printf("bad message size"); + spice_printerr("bad message size"); return 0; } if (migrate_data->magic != DISPLAY_MIGRATE_DATA_MAGIC || migrate_data->version != DISPLAY_MIGRATE_DATA_VERSION) { - red_printf("invalid content"); + spice_printerr("invalid content"); return 0; } return migrate_data->message_serial; @@ -9419,17 +9427,17 @@ static uint64_t display_channel_handle_migrate_data(RedChannelClient *rcc, uint3 int i; if (size < sizeof(*migrate_data)) { - red_printf("bad message size"); + spice_printerr("bad message size"); return FALSE; } migrate_data = (DisplayChannelMigrateData *)message; if (migrate_data->magic != DISPLAY_MIGRATE_DATA_MAGIC || migrate_data->version != DISPLAY_MIGRATE_DATA_VERSION) { - red_printf("invalid content"); + spice_printerr("invalid content"); return FALSE; } if (!display_channel->expect_migrate_data) { - red_printf("unexpected"); + spice_printerr("unexpected"); return FALSE; } display_channel->expect_migrate_data = FALSE; @@ -9456,10 +9464,10 @@ static uint64_t display_channel_handle_migrate_data(RedChannelClient *rcc, uint3 dcc->glz = glz_encoder_create(dcc->common.id, dcc->glz_dict->dict, &dcc->glz_data.usr); if (!dcc->glz) { - PANIC("create global lz failed"); + spice_critical("create global lz failed"); } } else { - PANIC("restoring global lz dictionary failed"); + spice_critical("restoring global lz dictionary failed"); } red_channel_client_pipe_add_type(rcc, PIPE_ITEM_TYPE_INVAL_PALLET_CACHE); @@ -9474,7 +9482,7 @@ static int display_channel_handle_message(RedChannelClient *rcc, uint32_t size, switch (type) { case SPICE_MSGC_DISPLAY_INIT: if (!dcc->expect_init) { - red_printf("unexpected SPICE_MSGC_DISPLAY_INIT"); + spice_printerr("unexpected SPICE_MSGC_DISPLAY_INIT"); return FALSE; } dcc->expect_init = FALSE; @@ -9493,12 +9501,12 @@ static int common_channel_config_socket(RedChannelClient *rcc) int delay_val; if ((flags = fcntl(stream->socket, F_GETFL)) == -1) { - red_printf("accept failed, %s", strerror(errno)); + spice_printerr("accept failed, %s", strerror(errno)); return FALSE; } if (fcntl(stream->socket, F_SETFL, flags | O_NONBLOCK) == -1) { - red_printf("accept failed, %s", strerror(errno)); + spice_printerr("accept failed, %s", strerror(errno)); return FALSE; } @@ -9507,7 +9515,7 @@ static int common_channel_config_socket(RedChannelClient *rcc) if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY, &delay_val, sizeof(delay_val)) == -1) { if (errno != ENOTSUP) { - red_printf("setsockopt failed, %s", strerror(errno)); + spice_printerr("setsockopt failed, %s", strerror(errno)); } } return TRUE; @@ -9553,7 +9561,7 @@ static SpiceWatch *worker_watch_add(int fd, int event_mask, SpiceWatchFunc func, } } if (i == MAX_EVENT_SOURCES) { - red_printf("ERROR could not add a watch for channel type %u id %u", + spice_printerr("ERROR could not add a watch for channel type %u id %u", rcc->channel->type, rcc->channel->id); return NULL; } @@ -9700,7 +9708,7 @@ error: static void display_channel_hold_pipe_item(RedChannelClient *rcc, PipeItem *item) { - ASSERT(item); + spice_assert(item); switch (item->type) { case PIPE_ITEM_TYPE_DRAW: ref_drawable_pipe_item(SPICE_CONTAINEROF(item, DrawablePipeItem, dpi_pipe_item)); @@ -9722,7 +9730,7 @@ static void display_channel_hold_pipe_item(RedChannelClient *rcc, PipeItem *item ((ImageItem *)item)->refs++; break; default: - PANIC("invalid item type"); + spice_critical("invalid item type"); } } @@ -9755,7 +9763,7 @@ static void display_channel_client_release_item_after_push(DisplayChannelClient free(item); break; default: - PANIC("invalid item type"); + spice_critical("invalid item type"); } } @@ -9814,7 +9822,7 @@ static void display_channel_client_release_item_before_push(DisplayChannelClient free(item); break; default: - PANIC("invalid item type"); + spice_critical("invalid item type"); } } @@ -9822,11 +9830,11 @@ static void display_channel_release_item(RedChannelClient *rcc, PipeItem *item, { DisplayChannelClient *dcc = RCC_TO_DCC(rcc); - ASSERT(item); + spice_assert(item); if (item_pushed) { display_channel_client_release_item_after_push(dcc, item); } else { - red_printf_once("not pushed (%d)", item->type); + spice_debug("not pushed (%d)", item->type); display_channel_client_release_item_before_push(dcc, item); } } @@ -9839,7 +9847,7 @@ static void display_channel_create(RedWorker *worker, int migrate) return; } - red_printf("create display channel"); + spice_printerr("create display channel"); if (!(worker->display_channel = (DisplayChannel *)__new_channel( worker, sizeof(*display_channel), SPICE_CHANNEL_DISPLAY, migrate, @@ -9852,7 +9860,7 @@ static void display_channel_create(RedWorker *worker, int migrate) display_channel_handle_migrate_data, display_channel_handle_migrate_data_get_serial ))) { - red_printf("failed to create display channel"); + spice_printerr("failed to create display channel"); return; } display_channel = worker->display_channel; @@ -9887,18 +9895,18 @@ static void handle_new_display_channel(RedWorker *worker, RedClient *client, Red int is_low_bandwidth = main_channel_client_is_low_bandwidth(red_client_get_main(client)); if (!worker->display_channel) { - red_printf("Warning: Display channel was not created"); + spice_printerr("Warning: Display channel was not created"); return; } display_channel = worker->display_channel; - red_printf("add display channel client"); + spice_printerr("add display channel client"); dcc = display_channel_client_create(&display_channel->common, client, stream, common_caps, num_common_caps, caps, num_caps); if (!dcc) { return; } - red_printf("New display (client %p) dcc %p stream %p", client, dcc, stream); + spice_printerr("New display (client %p) dcc %p stream %p", client, dcc, stream); stream_buf_size = 32*1024; dcc->send_data.stream_outbuf = spice_malloc(stream_buf_size); dcc->send_data.stream_outbuf_size = stream_buf_size; @@ -9925,8 +9933,8 @@ static void handle_new_display_channel(RedWorker *worker, RedClient *client, Red SPICE_WAN_COMPRESSION_ALWAYS); } - red_printf("jpeg %s", display_channel->enable_jpeg ? "enabled" : "disabled"); - red_printf("zlib-over-glz %s", display_channel->enable_zlib_glz_wrap ? "enabled" : "disabled"); + spice_printerr("jpeg %s", display_channel->enable_jpeg ? "enabled" : "disabled"); + spice_printerr("zlib-over-glz %s", display_channel->enable_zlib_glz_wrap ? "enabled" : "disabled"); // todo: tune level according to bandwidth display_channel->zlib_level = ZLIB_DEFAULT_COMPRESSION_LEVEL; @@ -9950,7 +9958,7 @@ static void red_disconnect_cursor(RedChannel *channel) return; } common = SPICE_CONTAINEROF(channel, CommonChannel, base); - ASSERT(channel == (RedChannel *)common->worker->cursor_channel); + spice_assert(channel == (RedChannel *)common->worker->cursor_channel); common->worker->cursor_channel = NULL; red_channel_apply_clients(channel, red_reset_cursor_cache); red_channel_disconnect(channel); @@ -9971,7 +9979,7 @@ static void on_new_cursor_channel(RedWorker *worker, RedChannelClient *rcc) { CursorChannel *channel = worker->cursor_channel; - ASSERT(channel); + spice_assert(channel); red_channel_client_ack_zero_messages_window(rcc); red_channel_client_push_set_ack(rcc); // TODO: why do we check for context.canvas? defer this to after display cc is connected @@ -9984,7 +9992,7 @@ static void on_new_cursor_channel(RedWorker *worker, RedChannelClient *rcc) static void cursor_channel_hold_pipe_item(RedChannelClient *rcc, PipeItem *item) { CursorPipeItem *cursor_pipe_item; - ASSERT(item); + spice_assert(item); cursor_pipe_item = SPICE_CONTAINEROF(item, CursorPipeItem, base); ref_cursor_pipe_item(cursor_pipe_item); } @@ -10008,7 +10016,7 @@ static void cursor_channel_client_release_item_before_push(CursorChannelClient * free(item); break; default: - red_error("invalid pipe item type"); + spice_error("invalid pipe item type"); } } @@ -10022,7 +10030,7 @@ static void cursor_channel_client_release_item_after_push(CursorChannelClient *c break; } default: - PANIC("invalid item type"); + spice_critical("invalid item type"); } } @@ -10030,12 +10038,12 @@ static void cursor_channel_release_item(RedChannelClient *rcc, PipeItem *item, i { CursorChannelClient *ccc = RCC_TO_CCC(rcc); - ASSERT(item); + spice_assert(item); if (item_pushed) { cursor_channel_client_release_item_after_push(ccc, item); } else { - red_printf_once("not pushed (%d)", item->type); + spice_debug("not pushed (%d)", item->type); cursor_channel_client_release_item_before_push(ccc, item); } } @@ -10045,7 +10053,7 @@ static void cursor_channel_create(RedWorker *worker, int migrate) if (worker->cursor_channel != NULL) { return; } - red_printf("create cursor channel"); + spice_printerr("create cursor channel"); worker->cursor_channel = (CursorChannel *)__new_channel( worker, sizeof(*worker->cursor_channel), SPICE_CHANNEL_CURSOR, migrate, @@ -10068,11 +10076,11 @@ static void red_connect_cursor(RedWorker *worker, RedClient *client, RedsStream CursorChannelClient *ccc; if (worker->cursor_channel == NULL) { - red_printf("Warning: cursor channel was not created"); + spice_printerr("Warning: cursor channel was not created"); return; } channel = worker->cursor_channel; - red_printf("add cursor channel client"); + spice_printerr("add cursor channel client"); ccc = cursor_channel_create_rcc(&channel->common, client, stream, common_caps, num_common_caps, caps, num_caps); @@ -10104,7 +10112,7 @@ static void red_wait_outgoing_item(RedChannelClient *rcc) return; } end_time = red_now() + DETACH_TIMEOUT; - red_printf("blocked"); + spice_printerr("blocked"); do { usleep(DETACH_SLEEP_DURATION); @@ -10113,12 +10121,12 @@ static void red_wait_outgoing_item(RedChannelClient *rcc) } while ((blocked = red_channel_client_blocked(rcc)) && red_now() < end_time); if (blocked) { - red_printf("timeout"); + spice_printerr("timeout"); // TODO - shutting down the socket but we still need to trigger // disconnection. Right now we wait for main channel to error for that. red_channel_client_shutdown(rcc); } else { - ASSERT(red_channel_client_no_item_being_sent(rcc)); + spice_assert(red_channel_client_no_item_being_sent(rcc)); } } @@ -10127,7 +10135,7 @@ static void rcc_shutdown_if_blocked(RedChannelClient *rcc) if (red_channel_client_blocked(rcc)) { red_channel_client_shutdown(rcc); } else { - ASSERT(red_channel_client_no_item_being_sent(rcc)); + spice_assert(red_channel_client_no_item_being_sent(rcc)); } } @@ -10141,7 +10149,7 @@ static void red_wait_outgoing_items(RedChannel *channel) } end_time = red_now() + DETACH_TIMEOUT; - red_printf("blocked"); + spice_printerr("blocked"); do { usleep(DETACH_SLEEP_DURATION); @@ -10150,10 +10158,10 @@ static void red_wait_outgoing_items(RedChannel *channel) } while ((blocked = red_channel_any_blocked(channel)) && red_now() < end_time); if (blocked) { - red_printf("timeout"); + spice_printerr("timeout"); red_channel_apply_clients(channel, rcc_shutdown_if_blocked); } else { - ASSERT(red_channel_no_item_being_sent(channel)); + spice_assert(red_channel_no_item_being_sent(channel)); } } @@ -10168,7 +10176,7 @@ static void red_wait_pipe_item_sent(RedChannelClient *rcc, PipeItem *item) return; } - red_printf(""); + spice_printerr(""); channel->channel_cbs.hold_item(rcc, item); end_time = red_now() + CHANNEL_PUSH_TIMEOUT; @@ -10187,7 +10195,7 @@ static void red_wait_pipe_item_sent(RedChannelClient *rcc, PipeItem *item) } if (item_in_pipe) { - red_printf("timeout"); + spice_printerr("timeout"); red_channel_client_disconnect(rcc); } else { if (red_channel_client_item_being_sent(rcc, item)) { @@ -10236,7 +10244,7 @@ void handle_dev_update_async(void *opaque, void *payload) red_get_rect_ptr(&rect, &qxl_area); flush_display_commands(worker); - ASSERT(worker->running); + spice_assert(worker->running); validate_surface(worker, surface_id); red_update_area(worker, &rect, surface_id); @@ -10272,7 +10280,7 @@ void handle_dev_update(void *opaque, void *payload) red_get_rect_ptr(rect, qxl_area); flush_display_commands(worker); - ASSERT(worker->running); + spice_assert(worker->running); validate_surface(worker, surface_id); red_update_area(worker, rect, surface_id); @@ -10328,7 +10336,7 @@ static inline void destroy_surface_wait(RedWorker *worker, int surface_id) static void dev_destroy_surface_wait(RedWorker *worker, uint32_t surface_id) { - ASSERT(surface_id == 0); + spice_assert(surface_id == 0); flush_all_qxl_commands(worker); @@ -10381,10 +10389,10 @@ static inline void dev_destroy_surfaces(RedWorker *worker) if (worker->surfaces[i].context.canvas) { red_destroy_surface(worker, i); } - ASSERT(!worker->surfaces[i].context.canvas); + spice_assert(!worker->surfaces[i].context.canvas); } } - ASSERT(ring_is_empty(&worker->streams)); + spice_assert(ring_is_empty(&worker->streams)); if (display_is_connected(worker)) { red_channel_pipes_add_type(&worker->display_channel->common.base, @@ -10410,9 +10418,9 @@ static void dev_create_primary_surface(RedWorker *worker, uint32_t surface_id, { uint8_t *line_0; - PANIC_ON(surface_id != 0); - PANIC_ON(surface.height == 0); - PANIC_ON(((uint64_t)abs(surface.stride) * (uint64_t)surface.height) != + spice_warn_if(surface_id != 0); + spice_warn_if(surface.height == 0); + spice_warn_if(((uint64_t)abs(surface.stride) * (uint64_t)surface.height) != abs(surface.stride) * surface.height); line_0 = (uint8_t*)get_virt(&worker->mem_slots, surface.mem, @@ -10446,19 +10454,19 @@ void handle_dev_create_primary_surface(void *opaque, void *payload) static void dev_destroy_primary_surface(RedWorker *worker, uint32_t surface_id) { - PANIC_ON(surface_id != 0); + spice_warn_if(surface_id != 0); if (!worker->surfaces[surface_id].context.canvas) { - red_printf("double destroy of primary surface"); + spice_printerr("double destroy of primary surface"); return; } flush_all_qxl_commands(worker); dev_destroy_surface_wait(worker, 0); red_destroy_surface(worker, 0); - ASSERT(ring_is_empty(&worker->streams)); + spice_assert(ring_is_empty(&worker->streams)); - ASSERT(!worker->surfaces[surface_id].context.canvas); + spice_assert(!worker->surfaces[surface_id].context.canvas); red_cursor_reset(worker); } @@ -10518,8 +10526,8 @@ void handle_dev_stop(void *opaque, void *payload) { RedWorker *worker = opaque; - red_printf("stop"); - ASSERT(worker->running); + spice_printerr("stop"); + spice_assert(worker->running); worker->running = FALSE; red_display_clear_glz_drawables(worker->display_channel); flush_all_surfaces(worker); @@ -10533,7 +10541,7 @@ void handle_dev_start(void *opaque, void *payload) RedChannel *cursor_red_channel = &worker->cursor_channel->common.base; RedChannel *display_red_channel = &worker->display_channel->common.base; - ASSERT(!worker->running); + spice_assert(!worker->running); if (worker->cursor_channel) { cursor_red_channel->migrate = FALSE; } @@ -10558,16 +10566,15 @@ void handle_dev_oom(void *opaque, void *payload) RedChannel *display_red_channel = &worker->display_channel->common.base; int ring_is_empty; - ASSERT(worker->running); + spice_assert(worker->running); // streams? but without streams also leak - red_printf_debug(1, "WORKER", - "OOM1 #draw=%u, #red_draw=%u, #glz_draw=%u current %u pipes %u", - worker->drawable_count, - worker->red_drawable_count, - worker->glz_drawable_count, - worker->current_size, - worker->display_channel ? - red_channel_sum_pipes_size(display_red_channel) : 0); + spice_debug("OOM1 #draw=%u, #red_draw=%u, #glz_draw=%u current %u pipes %u", + worker->drawable_count, + worker->red_drawable_count, + worker->glz_drawable_count, + worker->current_size, + worker->display_channel ? + red_channel_sum_pipes_size(display_red_channel) : 0); while (red_process_commands(worker, MAX_PIPE_SIZE, &ring_is_empty)) { red_channel_push(&worker->display_channel->common.base); } @@ -10575,14 +10582,13 @@ void handle_dev_oom(void *opaque, void *payload) red_free_some(worker); worker->qxl->st->qif->flush_resources(worker->qxl); } - red_printf_debug(1, "WORKER", - "OOM2 #draw=%u, #red_draw=%u, #glz_draw=%u current %u pipes %u", - worker->drawable_count, - worker->red_drawable_count, - worker->glz_drawable_count, - worker->current_size, - worker->display_channel ? - red_channel_sum_pipes_size(display_red_channel) : 0); + spice_debug("OOM2 #draw=%u, #red_draw=%u, #glz_draw=%u current %u pipes %u", + worker->drawable_count, + worker->red_drawable_count, + worker->glz_drawable_count, + worker->current_size, + worker->display_channel ? + red_channel_sum_pipes_size(display_red_channel) : 0); clear_bit(RED_WORKER_PENDING_OOM, worker->pending); } @@ -10644,7 +10650,7 @@ void handle_dev_display_connect(void *opaque, void *payload) RedClient *client = msg->client; int migration = msg->migration; - red_printf("connect"); + spice_printerr("connect"); handle_new_display_channel(worker, client, stream, migration, msg->common_caps, msg->num_common_caps, msg->caps, msg->num_caps); @@ -10657,8 +10663,8 @@ void handle_dev_display_disconnect(void *opaque, void *payload) RedWorkerMessageDisplayDisconnect *msg = payload; RedChannelClient *rcc = msg->rcc; - red_printf("disconnect display client"); - ASSERT(rcc); + spice_printerr("disconnect display client"); + spice_assert(rcc); red_channel_client_disconnect(rcc); } @@ -10668,8 +10674,8 @@ void handle_dev_display_migrate(void *opaque, void *payload) RedWorker *worker = opaque; RedChannelClient *rcc = msg->rcc; - red_printf("migrate display client"); - ASSERT(rcc); + spice_printerr("migrate display client"); + spice_assert(rcc); red_migrate_display(worker, rcc); } @@ -10693,7 +10699,7 @@ void handle_dev_cursor_connect(void *opaque, void *payload) RedClient *client = msg->client; int migration = msg->migration; - red_printf("cursor connect"); + spice_printerr("cursor connect"); red_connect_cursor(worker, client, stream, migration, msg->common_caps, msg->num_common_caps, msg->caps, msg->num_caps); @@ -10706,8 +10712,8 @@ void handle_dev_cursor_disconnect(void *opaque, void *payload) RedWorkerMessageCursorDisconnect *msg = payload; RedChannelClient *rcc = msg->rcc; - red_printf("disconnect cursor client"); - ASSERT(rcc); + spice_printerr("disconnect cursor client"); + spice_assert(rcc); red_channel_client_disconnect(rcc); } @@ -10717,8 +10723,8 @@ void handle_dev_cursor_migrate(void *opaque, void *payload) RedWorker *worker = opaque; RedChannelClient *rcc = msg->rcc; - red_printf("migrate cursor client"); - ASSERT(rcc); + spice_printerr("migrate cursor client"); + spice_assert(rcc); red_migrate_cursor(worker, rcc); } @@ -10730,25 +10736,25 @@ void handle_dev_set_compression(void *opaque, void *payload) worker->image_compression = msg->image_compression; switch (worker->image_compression) { case SPICE_IMAGE_COMPRESS_AUTO_LZ: - red_printf("ic auto_lz"); + spice_printerr("ic auto_lz"); break; case SPICE_IMAGE_COMPRESS_AUTO_GLZ: - red_printf("ic auto_glz"); + spice_printerr("ic auto_glz"); break; case SPICE_IMAGE_COMPRESS_QUIC: - red_printf("ic quic"); + spice_printerr("ic quic"); break; case SPICE_IMAGE_COMPRESS_LZ: - red_printf("ic lz"); + spice_printerr("ic lz"); break; case SPICE_IMAGE_COMPRESS_GLZ: - red_printf("ic glz"); + spice_printerr("ic glz"); break; case SPICE_IMAGE_COMPRESS_OFF: - red_printf("ic off"); + spice_printerr("ic off"); break; default: - red_printf("ic invalid"); + spice_printerr("ic invalid"); } #ifdef COMPRESS_STAT print_compress_stats(worker->display_channel); @@ -10769,19 +10775,19 @@ void handle_dev_set_streaming_video(void *opaque, void *payload) RedWorker *worker = opaque; worker->streaming_video = msg->streaming_video; - ASSERT(worker->streaming_video != STREAM_VIDEO_INVALID); + spice_assert(worker->streaming_video != STREAM_VIDEO_INVALID); switch(worker->streaming_video) { case STREAM_VIDEO_ALL: - red_printf("sv all"); + spice_printerr("sv all"); break; case STREAM_VIDEO_FILTER: - red_printf("sv filter"); + spice_printerr("sv filter"); break; case STREAM_VIDEO_OFF: - red_printf("sv off"); + spice_printerr("sv off"); break; default: - red_printf("sv invalid"); + spice_printerr("sv invalid"); } } @@ -10791,7 +10797,7 @@ void handle_dev_set_mouse_mode(void *opaque, void *payload) RedWorker *worker = opaque; worker->mouse_mode = msg->mode; - red_printf("mouse mode %u", worker->mouse_mode); + spice_printerr("mouse mode %u", worker->mouse_mode); } void handle_dev_add_memslot_async(void *opaque, void *payload) @@ -10819,7 +10825,7 @@ void handle_dev_loadvm_commands(void *opaque, void *payload) uint32_t count = msg->count; QXLCommandExt *ext = msg->ext; - red_printf("loadvm_commands"); + spice_printerr("loadvm_commands"); for (i = 0 ; i < count ; ++i) { switch (ext[i].cmd.type) { case QXL_CMD_CURSOR: @@ -10835,7 +10841,7 @@ void handle_dev_loadvm_commands(void *opaque, void *payload) red_process_surface(worker, surface_cmd, ext[i].group_id, TRUE); break; default: - red_printf("unhandled loadvm command type (%d)", ext[i].cmd.type); + spice_printerr("unhandled loadvm command type (%d)", ext[i].cmd.type); break; } } @@ -10848,7 +10854,7 @@ static void worker_handle_dispatcher_async_done(void *opaque, RedWorker *worker = opaque; RedWorkerMessageAsync *msg_async = payload; - red_printf_debug(2, "WORKER", ""); + spice_debug(NULL); red_dispatcher_async_complete(worker->red_dispatcher, msg_async->cmd); } @@ -11039,7 +11045,7 @@ static void red_init(RedWorker *worker, WorkerInitData *init_data) Dispatcher *dispatcher; int i; - ASSERT(sizeof(CursorItem) <= QXL_CURSUR_DEVICE_DATA_SIZE); + spice_assert(sizeof(CursorItem) <= QXL_CURSUR_DEVICE_DATA_SIZE); memset(worker, 0, sizeof(RedWorker)); dispatcher = red_dispatcher_get_dispatcher(init_data->red_dispatcher); @@ -11051,7 +11057,7 @@ static void red_init(RedWorker *worker, WorkerInitData *init_data) register_callbacks(dispatcher); worker->pending = init_data->pending; worker->cursor_visible = TRUE; - ASSERT(init_data->num_renderers > 0); + spice_assert(init_data->num_renderers > 0); worker->num_renderers = init_data->num_renderers; memcpy(worker->renderers, init_data->renderers, sizeof(worker->renderers)); worker->renderer = RED_RENDERER_INVALID; @@ -11093,7 +11099,7 @@ static void red_init(RedWorker *worker, WorkerInitData *init_data) init_data->memslot_id_bits, init_data->internal_groupslot_id); - PANIC_ON(init_data->n_surfaces > NUM_SURFACES); + spice_warn_if(init_data->n_surfaces > NUM_SURFACES); worker->n_surfaces = init_data->n_surfaces; message = RED_WORKER_MESSAGE_READY; @@ -11111,13 +11117,13 @@ void *red_worker_main(void *arg) { RedWorker worker; - red_printf("begin"); - ASSERT(MAX_PIPE_SIZE > WIDE_CLIENT_ACK_WINDOW && + spice_printerr("begin"); + spice_assert(MAX_PIPE_SIZE > WIDE_CLIENT_ACK_WINDOW && MAX_PIPE_SIZE > NARROW_CLIENT_ACK_WINDOW); //ensure wakeup by ack message #if defined(RED_WORKER_STAT) || defined(COMPRESS_STAT) if (pthread_getcpuclockid(pthread_self(), &clock_id)) { - red_error("pthread_getcpuclockid failed"); + spice_error("pthread_getcpuclockid failed"); } #endif @@ -11145,7 +11151,7 @@ void *red_worker_main(void *arg) worker.event_timeout = INF_EVENT_WAIT; if (num_events == -1) { if (errno != EINTR) { - red_error("poll failed, %s", strerror(errno)); + spice_error("poll failed, %s", strerror(errno)); } } @@ -11181,7 +11187,7 @@ void *red_worker_main(void *arg) } red_push(&worker); } - red_printf("exit"); + spice_printerr("exit"); return 0; } @@ -11260,7 +11266,7 @@ static void dump_bitmap(RedWorker *worker, SpiceBitmap *bitmap, uint32_t group_i alpha = 1; break; default: - red_error("invalid bitmap format %u", bitmap->format); + spice_error("invalid bitmap format %u", bitmap->format); } if (!rgb) { @@ -11282,7 +11288,7 @@ static void dump_bitmap(RedWorker *worker, SpiceBitmap *bitmap, uint32_t group_i f = fopen(file_str, "wb"); if (!f) { - red_error("Error creating bmp\n"); + spice_error("Error creating bmp"); return; } diff --git a/server/red_worker.h b/server/red_worker.h index 1f63d01..fd23ede 100644 --- a/server/red_worker.h +++ b/server/red_worker.h @@ -131,7 +131,7 @@ static inline void send_data(int fd, void *in_buf, int n) if (errno == EINTR) { continue; } - red_error("%s", strerror(errno)); + spice_error("%s", strerror(errno)); } buf += now; n -= now; @@ -152,7 +152,7 @@ static inline void receive_data(int fd, void *in_buf, int n) if (errno == EINTR) { continue; } - red_error("%s", strerror(errno)); + spice_error("%s", strerror(errno)); } buf += now; n -= now; diff --git a/server/reds.c b/server/reds.c index cf493dd..27e7ea2 100644 --- a/server/reds.c +++ b/server/reds.c @@ -467,7 +467,7 @@ StatNodeRef stat_add_node(StatNodeRef parent, const char *name, int visible) StatNodeRef ref; SpiceStatNode *node; - ASSERT(name && strlen(name) > 0); + spice_assert(name && strlen(name) > 0); if (strlen(name) >= sizeof(node->name)) { return INVALID_STAT_REF; } @@ -495,7 +495,7 @@ StatNodeRef stat_add_node(StatNodeRef parent, const char *name, int visible) break; } } - ASSERT(!(node->flags & SPICE_STAT_NODE_FLAG_ENABLED)); + spice_assert(!(node->flags & SPICE_STAT_NODE_FLAG_ENABLED)); node->value = 0; node->flags = SPICE_STAT_NODE_FLAG_ENABLED | (visible ? SPICE_STAT_NODE_FLAG_VISIBLE : 0); strncpy(node->name, name, sizeof(node->name)); @@ -552,7 +552,7 @@ void reds_update_stat_value(uint32_t value) void reds_register_channel(RedChannel *channel) { - ASSERT(reds); + spice_assert(reds); ring_add(&reds->channels, &channel->link); reds->num_of_channels++; } @@ -563,7 +563,7 @@ void reds_unregister_channel(RedChannel *channel) ring_remove(&channel->link); reds->num_of_channels--; } else { - red_printf("not found"); + spice_printerr("not found"); } } @@ -585,7 +585,7 @@ static void reds_mig_cleanup(void) if (reds->mig_inprogress) { if (reds->mig_wait_connect) { SpiceMigrateInterface *sif; - ASSERT(migration_interface); + spice_assert(migration_interface); sif = SPICE_CONTAINEROF(migration_interface->base.sif, SpiceMigrateInterface, base); sif->migrate_connect_complete(migration_interface); } @@ -644,7 +644,7 @@ void reds_client_disconnect(RedClient *client) return; } - red_printf(""); + spice_printerr(""); /* disconnecting is set to prevent recursion because of the following: * main_channel_client_on_disconnect-> * reds_client_disconnect->red_client_destroy->main_channel... @@ -684,7 +684,7 @@ static void reds_disconnect(void) { RingItem *link, *next; - red_printf(""); + spice_printerr(""); RING_FOREACH_SAFE(link, next, &reds->clients) { reds_client_disconnect(SPICE_CONTAINEROF(link, RedClient, link)); } @@ -759,7 +759,7 @@ static void reds_agent_remove(void) static void reds_push_tokens(void) { reds->agent_state.num_client_tokens += reds->agent_state.num_tokens; - ASSERT(reds->agent_state.num_client_tokens <= REDS_AGENT_WINDOW_SIZE); + spice_assert(reds->agent_state.num_client_tokens <= REDS_AGENT_WINDOW_SIZE); main_channel_push_tokens(reds->main_channel, reds->agent_state.num_tokens); reds->agent_state.num_tokens = 0; } @@ -865,7 +865,7 @@ static void dispatch_vdi_port_data(int port, VDIReadBuf *buf) break; default: ring_add(&state->read_bufs, &buf->link); - red_printf("invalid port"); + spice_printerr("invalid port"); reds_agent_remove(); } } @@ -1019,7 +1019,7 @@ int reds_num_of_clients(void) SPICE_GNUC_VISIBLE int spice_server_get_num_clients(SpiceServer *s) { - ASSERT(reds == s); + spice_assert(reds == s); return reds_num_of_clients(); } @@ -1055,7 +1055,7 @@ void reds_fill_channels(SpiceMsgChannels *channels_info) channels_info->num_of_channels = used_channels; if (used_channels != reds->num_of_channels) { - red_printf("sent %d out of %d", used_channels, reds->num_of_channels); + spice_printerr("sent %d out of %d", used_channels, reds->num_of_channels); } } @@ -1076,7 +1076,7 @@ void reds_on_main_agent_data(MainChannelClient *mcc, void *message, size_t size) int res; if (!reds->agent_state.num_client_tokens) { - red_printf("token violation"); + spice_printerr("token violation"); reds_disconnect(); return; } @@ -1096,7 +1096,7 @@ void reds_on_main_agent_data(MainChannelClient *mcc, void *message, size_t size) } if (!(ring_item = ring_get_head(&reds->agent_state.external_bufs))) { - red_printf("no agent free bufs"); + spice_printerr("no agent free bufs"); reds_disconnect(); return; } @@ -1124,14 +1124,14 @@ void reds_on_main_mouse_mode_request(void *message, size_t size) if (reds->is_client_mouse_allowed) { reds_set_mouse_mode(SPICE_MOUSE_MODE_CLIENT); } else { - red_printf("client mouse is disabled"); + spice_printerr("client mouse is disabled"); } break; case SPICE_MOUSE_MODE_SERVER: reds_set_mouse_mode(SPICE_MOUSE_MODE_SERVER); break; default: - red_printf("unsupported mouse mode"); + spice_printerr("unsupported mouse mode"); } } @@ -1211,7 +1211,7 @@ static int reds_main_channel_restore_vdi_read_state(MainMigrateData *data, uint8 switch (state->read_state) { case VDI_PORT_READ_STATE_READ_HADER: if (data->read_buf_len) { - red_printf("unexpected receive buf"); + spice_printerr("unexpected receive buf"); reds_disconnect(); return FALSE; } @@ -1219,13 +1219,13 @@ static int reds_main_channel_restore_vdi_read_state(MainMigrateData *data, uint8 break; case VDI_PORT_READ_STATE_GET_BUFF: if (state->message_recive_len > state->vdi_chunk_header.size) { - red_printf("invalid message receive len"); + spice_printerr("invalid message receive len"); reds_disconnect(); return FALSE; } if (data->read_buf_len) { - red_printf("unexpected receive buf"); + spice_printerr("unexpected receive buf"); reds_disconnect(); return FALSE; } @@ -1235,20 +1235,20 @@ static int reds_main_channel_restore_vdi_read_state(MainMigrateData *data, uint8 uint32_t n; if (!data->read_buf_len) { - red_printf("read state and read_buf_len == 0"); + spice_printerr("read state and read_buf_len == 0"); reds_disconnect(); return FALSE; } if (state->message_recive_len > state->vdi_chunk_header.size) { - red_printf("invalid message receive len"); + spice_printerr("invalid message receive len"); reds_disconnect(); return FALSE; } if (!(ring_item = ring_get_head(&state->read_bufs))) { - red_printf("get read buf failed"); + spice_printerr("get read buf failed"); reds_disconnect(); return FALSE; } @@ -1258,7 +1258,7 @@ static int reds_main_channel_restore_vdi_read_state(MainMigrateData *data, uint8 buff->len = data->read_buf_len; n = buff->len - state->recive_len; if (buff->len > SPICE_AGENT_MAX_DATA_SIZE || n > SPICE_AGENT_MAX_DATA_SIZE) { - red_printf("bad read position"); + spice_printerr("bad read position"); reds_disconnect(); return FALSE; } @@ -1268,7 +1268,7 @@ static int reds_main_channel_restore_vdi_read_state(MainMigrateData *data, uint8 break; } default: - red_printf("invalid read state"); + spice_printerr("invalid read state"); reds_disconnect(); return FALSE; } @@ -1296,14 +1296,14 @@ static int reds_main_channel_restore_vdi_wqueue(MainMigrateData *data, uint8_t * inf_end = inf + data->write_queue_size; pos = (uint8_t *)inf_end; if (pos > end) { - red_printf("access violation"); + spice_printerr("access violation"); reds_disconnect(); return FALSE; } for (; inf < inf_end; inf++) { if (pos + inf->len > end) { - red_printf("access violation"); + spice_printerr("access violation"); reds_disconnect(); return FALSE; } @@ -1311,7 +1311,7 @@ static int reds_main_channel_restore_vdi_wqueue(MainMigrateData *data, uint8_t * VDInternalBuf *buf; if (inf->len > sizeof(*buf) - SPICE_OFFSETOF(VDInternalBuf, header)) { - red_printf("bad buffer len"); + spice_printerr("bad buffer len"); reds_disconnect(); return FALSE; } @@ -1327,12 +1327,12 @@ static int reds_main_channel_restore_vdi_wqueue(MainMigrateData *data, uint8_t * state->num_tokens--; if (inf->len > sizeof(*buf) - SPICE_OFFSETOF(VDAgentExtBuf, buf)) { - red_printf("bad buffer len"); + spice_printerr("bad buffer len"); reds_disconnect(); return FALSE; } if (!(ring_item = ring_get_head(&reds->agent_state.external_bufs))) { - red_printf("no external buff"); + spice_printerr("no external buff"); reds_disconnect(); return FALSE; } @@ -1343,7 +1343,7 @@ static int reds_main_channel_restore_vdi_wqueue(MainMigrateData *data, uint8_t * buf->base.write_len = inf->len; ring_add(&reds->agent_state.write_queue, &buf->base.link); } else { - red_printf("invalid data"); + spice_printerr("invalid data"); reds_disconnect(); return FALSE; } @@ -1358,13 +1358,13 @@ void reds_on_main_receive_migrate_data(MainMigrateData *data, uint8_t *end) uint8_t *pos; if (data->version != MAIN_CHANNEL_MIG_DATA_VERSION) { - red_printf("version mismatch"); + spice_printerr("version mismatch"); reds_disconnect(); return; } state->num_client_tokens = data->num_client_tokens; - ASSERT(state->num_client_tokens + data->write_queue_size <= REDS_AGENT_WINDOW_SIZE + + spice_assert(state->num_client_tokens + data->write_queue_size <= REDS_AGENT_WINDOW_SIZE + REDS_NUM_INTERNAL_AGENT_MESSAGES); state->num_tokens = REDS_AGENT_WINDOW_SIZE - state->num_client_tokens; @@ -1395,7 +1395,7 @@ void reds_on_main_receive_migrate_data(MainMigrateData *data, uint8_t *end) } reds_main_channel_restore_vdi_wqueue(data, pos, end); - ASSERT(state->num_client_tokens + state->num_tokens == REDS_AGENT_WINDOW_SIZE); + spice_assert(state->num_client_tokens + state->num_tokens == REDS_AGENT_WINDOW_SIZE); while (write_to_vdi_port() || read_from_vdi_port()); } @@ -1447,8 +1447,8 @@ static int reds_send_link_ack(RedLinkInfo *link) channel = reds_find_channel(link->link_mess->channel_type, 0); if (!channel) { - ASSERT(link->link_mess->channel_type == SPICE_CHANNEL_MAIN); - ASSERT(reds->main_channel); + spice_assert(link->link_mess->channel_type == SPICE_CHANNEL_MAIN); + spice_assert(reds->main_channel); channel = &reds->main_channel->base; } @@ -1461,12 +1461,12 @@ static int reds_send_link_ack(RedLinkInfo *link) ack.caps_offset = sizeof(SpiceLinkReply); if (!(link->tiTicketing.rsa = RSA_new())) { - red_printf("RSA nes failed"); + spice_printerr("RSA nes failed"); return FALSE; } if (!(bio = BIO_new(BIO_s_mem()))) { - red_printf("BIO new failed"); + spice_printerr("BIO new failed"); return FALSE; } @@ -1511,7 +1511,7 @@ static int reds_send_link_error(RedLinkInfo *link, uint32_t error) static void reds_show_new_channel(RedLinkInfo *link, int connection_id) { - red_printf("channel %d:%d, connected successfully, over %s link", + spice_printerr("channel %d:%d, connected successfully, over %s link", link->link_mess->channel_type, link->link_mess->channel_id, link->stream->ssl == NULL ? "Non Secure" : "Secure"); @@ -1532,7 +1532,7 @@ static void reds_send_link_result(RedLinkInfo *link, uint32_t error) int reds_expects_link_id(uint32_t connection_id) { - red_printf("TODO: keep a list of connection_id's from migration, compare to them"); + spice_printerr("TODO: keep a list of connection_id's from migration, compare to them"); return 1; } @@ -1540,8 +1540,8 @@ static void reds_mig_target_client_add(RedClient *client) { RedsMigTargetClient *mig_client; - ASSERT(reds); - red_printf(""); + spice_assert(reds); + spice_printerr(""); mig_client = spice_malloc0(sizeof(RedsMigTargetClient)); mig_client->client = client; ring_init(&mig_client->pending_links); @@ -1571,8 +1571,8 @@ static void reds_mig_target_client_add_pending_link(RedsMigTargetClient *client, { RedsMigPendingLink *mig_link; - ASSERT(reds); - ASSERT(client); + spice_assert(reds); + spice_assert(client); mig_link = spice_malloc0(sizeof(RedsMigPendingLink)); mig_link->link_msg = link_msg; mig_link->stream = stream; @@ -1617,8 +1617,8 @@ static void reds_handle_main_link(RedLinkInfo *link) MainChannelClient *mcc; int mig_target = FALSE; - red_printf(""); - ASSERT(reds->main_channel); + spice_printerr(""); + spice_assert(reds->main_channel); link_mess = link->link_mess; if (!reds->allow_multiple_clients) { @@ -1657,7 +1657,7 @@ static void reds_handle_main_link(RedLinkInfo *link) link_mess->num_common_caps, link_mess->num_common_caps ? caps : NULL, link_mess->num_channel_caps, link_mess->num_channel_caps ? caps + link_mess->num_common_caps : NULL); - red_printf("NEW Client %p mcc %p connect-id %d", client, mcc, connection_id); + spice_printerr("NEW Client %p mcc %p connect-id %d", client, mcc, connection_id); free(link_mess); red_client_set_main(client, mcc); @@ -1713,7 +1713,7 @@ static void openssl_init(RedLinkInfo *link) link->tiTicketing.bn = BN_new(); if (!link->tiTicketing.bn) { - red_error("OpenSSL BIGNUMS alloc failed"); + spice_error("OpenSSL BIGNUMS alloc failed"); } BN_set_word(link->tiTicketing.bn, f4); @@ -1725,9 +1725,9 @@ static void reds_channel_do_link(RedChannel *channel, RedClient *client, { uint32_t *caps; - ASSERT(channel); - ASSERT(link_msg); - ASSERT(stream); + spice_assert(channel); + spice_assert(link_msg); + spice_assert(stream); if (link_msg->channel_type == SPICE_CHANNEL_INPUTS && !stream->ssl) { char *mess = "keyboard channel is insecure"; @@ -1751,11 +1751,11 @@ void reds_on_client_migrate_complete(RedClient *client) MainChannelClient *mcc; RingItem *item; - red_printf("%p", client); + spice_printerr("%p", client); mcc = red_client_get_main(client); mig_client = reds_mig_target_client_find(client); if (!mig_client) { - red_printf("Error: mig target client was not found"); + spice_printerr("Error: mig target client was not found"); return; } @@ -1773,7 +1773,7 @@ void reds_on_client_migrate_complete(RedClient *client) channel = reds_find_channel(mig_link->link_msg->channel_type, mig_link->link_msg->channel_id); if (!channel) { - red_printf("warning: client %p channel (%d, %d) (type, id) wasn't found", + spice_printerr("warning: client %p channel (%d, %d) (type, id) wasn't found", client, mig_link->link_msg->channel_type, mig_link->link_msg->channel_id); @@ -1824,10 +1824,10 @@ static void reds_handle_other_links(RedLinkInfo *link) mig_client = reds_mig_target_client_find(client); if (red_client_during_migrate_at_target(client)) { - ASSERT(mig_client); + spice_assert(mig_client); reds_mig_target_client_add_pending_link(mig_client, link_mess, link->stream); } else { - ASSERT(!mig_client); + spice_assert(!mig_client); reds_channel_do_link(channel, client, link_mess, link->stream); free(link_mess); } @@ -1862,7 +1862,7 @@ static void reds_handle_ticket(void *opaque) if (strlen(taTicket.password) == 0) { reds_send_link_result(link, SPICE_LINK_ERR_PERMISSION_DENIED); - red_printf("Ticketing is enabled, but no password is set. " + spice_printerr("Ticketing is enabled, but no password is set. " "please set a ticket first"); reds_link_free(link); return; @@ -1870,9 +1870,9 @@ static void reds_handle_ticket(void *opaque) if (expired || strncmp(password, taTicket.password, SPICE_MAX_PASSWORD_LENGTH) != 0) { if (expired) { - red_printf("Ticket has expired"); + spice_printerr("Ticket has expired"); } else { - red_printf("Invalid password"); + spice_printerr("Invalid password"); } reds_send_link_result(link, SPICE_LINK_ERR_PERMISSION_DENIED); reds_link_free(link); @@ -1913,7 +1913,7 @@ static ssize_t reds_stream_sasl_write(RedsStream *s, const void *buf, size_t nby (const char **)&s->sasl.encoded, &s->sasl.encodedLength); if (err != SASL_OK) { - red_printf("sasl_encode error: %d", err); + spice_printerr("sasl_encode error: %d", err); return -1; } @@ -1922,7 +1922,7 @@ static ssize_t reds_stream_sasl_write(RedsStream *s, const void *buf, size_t nby } if (!s->sasl.encoded) { - red_printf("sasl_encode didn't return a buffer!"); + spice_printerr("sasl_encode didn't return a buffer!"); return 0; } @@ -1974,7 +1974,7 @@ static ssize_t reds_stream_sasl_read(RedsStream *s, uint8_t *buf, size_t nbyte) (char *)encoded, n, &decoded, &decodedlen); if (err != SASL_OK) { - red_printf("sasl_decode error: %d", err); + spice_printerr("sasl_decode error: %d", err); return -1; } @@ -1997,7 +1997,7 @@ static void async_read_handler(int fd, int event, void *data) for (;;) { int n = obj->end - obj->now; - ASSERT(n > 0); + spice_assert(n > 0); n = reds_stream_read(obj->stream, obj->now, n); if (n <= 0) { if (n < 0) { @@ -2056,7 +2056,7 @@ static char *addr_to_string(const char *format, host, sizeof(host), serv, sizeof(serv), NI_NUMERICHOST | NI_NUMERICSERV)) != 0) { - red_printf("Cannot resolve address %d: %s", + spice_printerr("Cannot resolve address %d: %s", err, gai_strerror(err)); return NULL; } @@ -2087,7 +2087,7 @@ static int auth_sasl_check_ssf(RedsSASL *sasl, int *runSSF) } ssf = *(const int *)val; - red_printf("negotiated an SSF of %d", ssf); + spice_printerr("negotiated an SSF of %d", ssf); if (ssf < 56) { return 0; /* 56 is good for Kerberos */ } @@ -2134,7 +2134,7 @@ static void reds_handle_auth_sasl_step(void *opaque) datalen--; /* Don't count NULL byte when passing to _start() */ } - red_printf("Step using SASL Data %p (%d bytes)", + spice_printerr("Step using SASL Data %p (%d bytes)", clientdata, datalen); err = sasl_server_step(sasl->conn, clientdata, @@ -2143,18 +2143,18 @@ static void reds_handle_auth_sasl_step(void *opaque) &serveroutlen); if (err != SASL_OK && err != SASL_CONTINUE) { - red_printf("sasl step failed %d (%s)", + spice_printerr("sasl step failed %d (%s)", err, sasl_errdetail(sasl->conn)); goto authabort; } if (serveroutlen > SASL_DATA_MAX_LEN) { - red_printf("sasl step reply data too long %d", + spice_printerr("sasl step reply data too long %d", serveroutlen); goto authabort; } - red_printf("SASL return data %d bytes, %p", serveroutlen, serverout); + spice_printerr("SASL return data %d bytes, %p", serveroutlen, serverout); if (serveroutlen) { serveroutlen += 1; @@ -2168,7 +2168,7 @@ static void reds_handle_auth_sasl_step(void *opaque) sync_write_u8(link->stream, err == SASL_CONTINUE ? 0 : 1); if (err == SASL_CONTINUE) { - red_printf("%s", "Authentication must continue (step)"); + spice_printerr("%s", "Authentication must continue (step)"); /* Wait for step length */ obj->now = (uint8_t *)&sasl->len; obj->end = obj->now + sizeof(uint32_t); @@ -2178,11 +2178,11 @@ static void reds_handle_auth_sasl_step(void *opaque) int ssf; if (auth_sasl_check_ssf(sasl, &ssf) == 0) { - red_printf("Authentication rejected for weak SSF"); + spice_printerr("Authentication rejected for weak SSF"); goto authreject; } - red_printf("Authentication successful"); + spice_printerr("Authentication successful"); sync_write_u32(link->stream, SPICE_LINK_ERR_OK); /* Accept auth */ /* @@ -2212,9 +2212,9 @@ static void reds_handle_auth_sasl_steplen(void *opaque) AsyncRead *obj = &link->asyc_read; RedsSASL *sasl = &link->stream->sasl; - red_printf("Got steplen %d", sasl->len); + spice_printerr("Got steplen %d", sasl->len); if (sasl->len > SASL_DATA_MAX_LEN) { - red_printf("Too much SASL data %d", sasl->len); + spice_printerr("Too much SASL data %d", sasl->len); reds_link_free(link); return; } @@ -2264,7 +2264,7 @@ static void reds_handle_auth_sasl_start(void *opaque) datalen--; /* Don't count NULL byte when passing to _start() */ } - red_printf("Start SASL auth with mechanism %s. Data %p (%d bytes)", + spice_printerr("Start SASL auth with mechanism %s. Data %p (%d bytes)", sasl->mechlist, clientdata, datalen); err = sasl_server_start(sasl->conn, sasl->mechlist, @@ -2274,18 +2274,18 @@ static void reds_handle_auth_sasl_start(void *opaque) &serveroutlen); if (err != SASL_OK && err != SASL_CONTINUE) { - red_printf("sasl start failed %d (%s)", + spice_printerr("sasl start failed %d (%s)", err, sasl_errdetail(sasl->conn)); goto authabort; } if (serveroutlen > SASL_DATA_MAX_LEN) { - red_printf("sasl start reply data too long %d", + spice_printerr("sasl start reply data too long %d", serveroutlen); goto authabort; } - red_printf("SASL return data %d bytes, %p", serveroutlen, serverout); + spice_printerr("SASL return data %d bytes, %p", serveroutlen, serverout); if (serveroutlen) { serveroutlen += 1; @@ -2299,7 +2299,7 @@ static void reds_handle_auth_sasl_start(void *opaque) sync_write_u8(link->stream, err == SASL_CONTINUE ? 0 : 1); if (err == SASL_CONTINUE) { - red_printf("%s", "Authentication must continue (start)"); + spice_printerr("%s", "Authentication must continue (start)"); /* Wait for step length */ obj->now = (uint8_t *)&sasl->len; obj->end = obj->now + sizeof(uint32_t); @@ -2309,11 +2309,11 @@ static void reds_handle_auth_sasl_start(void *opaque) int ssf; if (auth_sasl_check_ssf(sasl, &ssf) == 0) { - red_printf("Authentication rejected for weak SSF"); + spice_printerr("Authentication rejected for weak SSF"); goto authreject; } - red_printf("Authentication successful"); + spice_printerr("Authentication successful"); sync_write_u32(link->stream, SPICE_LINK_ERR_OK); /* Accept auth */ /* @@ -2343,9 +2343,9 @@ static void reds_handle_auth_startlen(void *opaque) AsyncRead *obj = &link->asyc_read; RedsSASL *sasl = &link->stream->sasl; - red_printf("Got client start len %d", sasl->len); + spice_printerr("Got client start len %d", sasl->len); if (sasl->len > SASL_DATA_MAX_LEN) { - red_printf("Too much SASL data %d", sasl->len); + spice_printerr("Too much SASL data %d", sasl->len); reds_send_link_error(link, SPICE_LINK_ERR_INVALID_DATA); reds_link_free(link); return; @@ -2370,24 +2370,24 @@ static void reds_handle_auth_mechname(void *opaque) RedsSASL *sasl = &link->stream->sasl; sasl->mechname[sasl->len] = '\0'; - red_printf("Got client mechname '%s' check against '%s'", + spice_printerr("Got client mechname '%s' check against '%s'", sasl->mechname, sasl->mechlist); if (strncmp(sasl->mechlist, sasl->mechname, sasl->len) == 0) { if (sasl->mechlist[sasl->len] != '\0' && sasl->mechlist[sasl->len] != ',') { - red_printf("One %d", sasl->mechlist[sasl->len]); + spice_printerr("One %d", sasl->mechlist[sasl->len]); reds_link_free(link); return; } } else { char *offset = strstr(sasl->mechlist, sasl->mechname); - red_printf("Two %p", offset); + spice_printerr("Two %p", offset); if (!offset) { reds_send_link_error(link, SPICE_LINK_ERR_INVALID_DATA); return; } - red_printf("Two '%s'", offset); + spice_printerr("Two '%s'", offset); if (offset[-1] != ',' || (offset[sasl->len] != '\0'&& offset[sasl->len] != ',')) { @@ -2399,7 +2399,7 @@ static void reds_handle_auth_mechname(void *opaque) free(sasl->mechlist); sasl->mechlist = spice_strdup(sasl->mechname); - red_printf("Validated mechname '%s'", sasl->mechname); + spice_printerr("Validated mechname '%s'", sasl->mechname); obj->now = (uint8_t *)&sasl->len; obj->end = obj->now + sizeof(uint32_t); @@ -2416,14 +2416,14 @@ static void reds_handle_auth_mechlen(void *opaque) RedsSASL *sasl = &link->stream->sasl; if (sasl->len < 1 || sasl->len > 100) { - red_printf("Got bad client mechname len %d", sasl->len); + spice_printerr("Got bad client mechname len %d", sasl->len); reds_link_free(link); return; } sasl->mechname = spice_malloc(sasl->len + 1); - red_printf("Wait for client mechname"); + spice_printerr("Wait for client mechname"); obj->now = (uint8_t *)sasl->mechname; obj->end = obj->now + sasl->len; obj->done = reds_handle_auth_mechname; @@ -2465,7 +2465,7 @@ static void reds_start_auth_sasl(RedLinkInfo *link) localAddr = remoteAddr = NULL; if (err != SASL_OK) { - red_printf("sasl context setup failed %d (%s)", + spice_printerr("sasl context setup failed %d (%s)", err, sasl_errstring(err, NULL, NULL)); sasl->conn = NULL; goto error; @@ -2478,7 +2478,7 @@ static void reds_start_auth_sasl(RedLinkInfo *link) ssf = SSL_get_cipher_bits(link->stream->ssl, NULL); err = sasl_setprop(sasl->conn, SASL_SSF_EXTERNAL, &ssf); if (err != SASL_OK) { - red_printf("cannot set SASL external SSF %d (%s)", + spice_printerr("cannot set SASL external SSF %d (%s)", err, sasl_errstring(err, NULL, NULL)); goto error_dispose; } @@ -2506,7 +2506,7 @@ static void reds_start_auth_sasl(RedLinkInfo *link) err = sasl_setprop(sasl->conn, SASL_SEC_PROPS, &secprops); if (err != SASL_OK) { - red_printf("cannot set SASL security props %d (%s)", + spice_printerr("cannot set SASL security props %d (%s)", err, sasl_errstring(err, NULL, NULL)); goto error_dispose; } @@ -2520,23 +2520,23 @@ static void reds_start_auth_sasl(RedLinkInfo *link) NULL, NULL); if (err != SASL_OK || mechlist == NULL) { - red_printf("cannot list SASL mechanisms %d (%s)", + spice_printerr("cannot list SASL mechanisms %d (%s)", err, sasl_errdetail(sasl->conn)); goto error_dispose; } - red_printf("Available mechanisms for client: '%s'", mechlist); + spice_printerr("Available mechanisms for client: '%s'", mechlist); sasl->mechlist = spice_strdup(mechlist); mechlistlen = strlen(mechlist); if (!sync_write(link->stream, &mechlistlen, sizeof(uint32_t)) || !sync_write(link->stream, sasl->mechlist, mechlistlen)) { - red_printf("SASL mechanisms write error"); + spice_printerr("SASL mechanisms write error"); goto error; } - red_printf("Wait for client mechname length"); + spice_printerr("Wait for client mechname length"); obj->now = (uint8_t *)&sasl->len; obj->end = obj->now + sizeof(uint32_t); obj->done = reds_handle_auth_mechlen; @@ -2557,7 +2557,7 @@ static void reds_handle_auth_mechanism(void *opaque) { RedLinkInfo *link = (RedLinkInfo *)opaque; - red_printf("Auth method: %d", link->auth_mechanism.auth_mechanism); + spice_printerr("Auth method: %d", link->auth_mechanism.auth_mechanism); if (link->auth_mechanism.auth_mechanism == SPICE_COMMON_CAP_AUTH_SPICE && !sasl_enabled @@ -2565,13 +2565,13 @@ static void reds_handle_auth_mechanism(void *opaque) reds_get_spice_ticket(link); #if HAVE_SASL } else if (link->auth_mechanism.auth_mechanism == SPICE_COMMON_CAP_AUTH_SASL) { - red_printf("Starting SASL"); + spice_printerr("Starting SASL"); reds_start_auth_sasl(link); #endif } else { - red_printf("Unknown auth method, disconnecting"); + spice_printerr("Unknown auth method, disconnecting"); if (sasl_enabled) { - red_printf("Your client doesn't handle SASL?"); + spice_printerr("Your client doesn't handle SASL?"); } reds_send_link_error(link, SPICE_LINK_ERR_INVALID_DATA); reds_link_free(link); @@ -2608,10 +2608,10 @@ static void reds_handle_read_link_done(void *opaque) if (!reds_security_check(link)) { if (link->stream->ssl) { - red_printf("spice channels %d should not be encrypted", link_mess->channel_type); + spice_printerr("spice channels %d should not be encrypted", link_mess->channel_type); reds_send_link_error(link, SPICE_LINK_ERR_NEED_UNSECURED); } else { - red_printf("spice channels %d should be encrypted", link_mess->channel_type); + spice_printerr("spice channels %d should be encrypted", link_mess->channel_type); reds_send_link_error(link, SPICE_LINK_ERR_NEED_SECURED); } reds_link_free(link); @@ -2625,11 +2625,11 @@ static void reds_handle_read_link_done(void *opaque) if (!auth_selection) { if (sasl_enabled && !link->skip_auth) { - red_printf("SASL enabled, but peer supports only spice authentication"); + spice_printerr("SASL enabled, but peer supports only spice authentication"); reds_send_link_error(link, SPICE_LINK_ERR_VERSION_MISMATCH); return; } - red_printf("Peer doesn't support AUTH selection"); + spice_printerr("Peer doesn't support AUTH selection"); reds_get_spice_ticket(link); } else { obj->now = (uint8_t *)&link->auth_mechanism; @@ -2647,7 +2647,7 @@ static void reds_handle_link_error(void *opaque, int err) case EPIPE: break; default: - red_printf("%s", strerror(errno)); + spice_printerr("%s", strerror(errno)); break; } reds_link_free(link); @@ -2670,7 +2670,7 @@ static void reds_handle_read_header_done(void *opaque) reds_send_link_error(link, SPICE_LINK_ERR_VERSION_MISMATCH); } - red_printf("version mismatch"); + spice_printerr("version mismatch"); reds_link_free(link); return; } @@ -2679,7 +2679,7 @@ static void reds_handle_read_header_done(void *opaque) if (header->size < sizeof(SpiceLinkMess)) { reds_send_link_error(link, SPICE_LINK_ERR_INVALID_DATA); - red_printf("bad size %u", header->size); + spice_printerr("bad size %u", header->size); reds_link_free(link); return; } @@ -2712,7 +2712,7 @@ static void reds_handle_ssl_accept(int fd, int event, void *data) if ((return_code = SSL_accept(link->stream->ssl)) != 1) { int ssl_error = SSL_get_error(link->stream->ssl, return_code); if (ssl_error != SSL_ERROR_WANT_READ && ssl_error != SSL_ERROR_WANT_WRITE) { - red_printf("SSL_accept failed, error=%d", ssl_error); + spice_printerr("SSL_accept failed, error=%d", ssl_error); reds_link_free(link); } else { if (ssl_error == SSL_ERROR_WANT_READ) { @@ -2735,18 +2735,18 @@ static RedLinkInfo *reds_init_client_connection(int socket) int flags; if ((flags = fcntl(socket, F_GETFL)) == -1) { - red_printf("accept failed, %s", strerror(errno)); + spice_printerr("accept failed, %s", strerror(errno)); goto error; } if (fcntl(socket, F_SETFL, flags | O_NONBLOCK) == -1) { - red_printf("accept failed, %s", strerror(errno)); + spice_printerr("accept failed, %s", strerror(errno)); goto error; } if (setsockopt(socket, IPPROTO_TCP, TCP_NODELAY, &delay_val, sizeof(delay_val)) == -1) { if (errno != ENOTSUP) { - red_printf("setsockopt failed, %s", strerror(errno)); + spice_printerr("setsockopt failed, %s", strerror(errno)); } } @@ -2796,13 +2796,13 @@ static RedLinkInfo *reds_init_client_ssl_connection(int socket) // Handle SSL handshaking if (!(sbio = BIO_new_socket(link->stream->socket, BIO_NOCLOSE))) { - red_printf("could not allocate ssl bio socket"); + spice_printerr("could not allocate ssl bio socket"); goto error; } link->stream->ssl = SSL_new(reds->ctx); if (!link->stream->ssl) { - red_printf("could not allocate ssl context"); + spice_printerr("could not allocate ssl context"); BIO_free(sbio); goto error; } @@ -2830,7 +2830,7 @@ static RedLinkInfo *reds_init_client_ssl_connection(int socket) } ERR_print_errors_fp(stderr); - red_printf("SSL_accept failed, error=%d", ssl_error); + spice_printerr("SSL_accept failed, error=%d", ssl_error); SSL_free(link->stream->ssl); error: @@ -2846,7 +2846,7 @@ static void reds_accept_ssl_connection(int fd, int event, void *data) int socket; if ((socket = accept(reds->secure_listen_socket, NULL, 0)) == -1) { - red_printf("accept failed, %s", strerror(errno)); + spice_printerr("accept failed, %s", strerror(errno)); return; } @@ -2862,7 +2862,7 @@ static void reds_accept(int fd, int event, void *data) int socket; if ((socket = accept(reds->listen_socket, NULL, 0)) == -1) { - red_printf("accept failed, %s", strerror(errno)); + spice_printerr("accept failed, %s", strerror(errno)); return; } @@ -2876,9 +2876,9 @@ SPICE_GNUC_VISIBLE int spice_server_add_client(SpiceServer *s, int socket, int s RedLinkInfo *link; RedsStream *stream; - ASSERT(reds == s); + spice_assert(reds == s); if (!(link = reds_init_client_connection(socket))) { - red_printf("accept failed"); + spice_printerr("accept failed"); return -1; } @@ -2898,7 +2898,7 @@ SPICE_GNUC_VISIBLE int spice_server_add_ssl_client(SpiceServer *s, int socket, i { RedLinkInfo *link; - ASSERT(reds == s); + spice_assert(reds == s); if (!(link = reds_init_client_ssl_connection(socket))) { return -1; } @@ -2925,7 +2925,7 @@ static int reds_init_socket(const char *addr, int portnr, int family) snprintf(port, sizeof(port), "%d", portnr); rc = getaddrinfo(strlen(addr) ? addr : NULL, port, &ai, &res); if (rc != 0) { - red_error("getaddrinfo(%s,%s): %s", addr, port, + spice_error("getaddrinfo(%s,%s): %s", addr, port, gai_strerror(rc)); } @@ -2951,7 +2951,7 @@ static int reds_init_socket(const char *addr, int portnr, int family) } close(slisten); } - red_printf("%s: binding socket to %s:%d failed", __FUNCTION__, + spice_printerr("%s: binding socket to %s:%d failed", __FUNCTION__, addr, portnr); freeaddrinfo(res); return -1; @@ -2959,7 +2959,7 @@ static int reds_init_socket(const char *addr, int portnr, int family) listen: freeaddrinfo(res); if (listen(slisten,1) != 0) { - red_error("%s: listen: %s", __FUNCTION__, strerror(errno)); + spice_error("listen: %s", strerror(errno)); close(slisten); return -1; } @@ -2977,7 +2977,7 @@ static int reds_init_net(void) SPICE_WATCH_EVENT_READ, reds_accept, NULL); if (reds->listen_watch == NULL) { - red_error("set fd handle failed"); + spice_error("set fd handle failed"); } } @@ -2991,7 +2991,7 @@ static int reds_init_net(void) SPICE_WATCH_EVENT_READ, reds_accept_ssl_connection, NULL); if (reds->secure_listen_watch == NULL) { - red_error("set fd handle failed"); + spice_error("set fd handle failed"); } } @@ -3001,7 +3001,7 @@ static int reds_init_net(void) SPICE_WATCH_EVENT_READ, reds_accept, NULL); if (reds->listen_watch == NULL) { - red_error("set fd handle failed"); + spice_error("set fd handle failed"); } } return 0; @@ -3013,18 +3013,18 @@ static void load_dh_params(SSL_CTX *ctx, char *file) BIO *bio; if ((bio = BIO_new_file(file, "r")) == NULL) { - red_error("Could not open DH file"); + spice_error("Could not open DH file"); } ret = PEM_read_bio_DHparams(bio, NULL, NULL, NULL); if (ret == 0) { - red_error("Could not read DH params"); + spice_error("Could not read DH params"); } BIO_free(bio); if (SSL_CTX_set_tmp_dh(ctx, ret) < 0) { - red_error("Could not set DH params"); + spice_error("Could not set DH params"); } } @@ -3092,7 +3092,7 @@ static void reds_init_ssl(void) ssl_method = TLSv1_method(); reds->ctx = SSL_CTX_new(ssl_method); if (!reds->ctx) { - red_error("Could not allocate new SSL context"); + spice_error("Could not allocate new SSL context"); } /* Limit connection to TLSv1 only */ @@ -3104,9 +3104,9 @@ static void reds_init_ssl(void) /* Load our keys and certificates*/ return_code = SSL_CTX_use_certificate_chain_file(reds->ctx, ssl_parameters.certs_file); if (return_code == 1) { - red_printf("Loaded certificates from %s", ssl_parameters.certs_file); + spice_printerr("Loaded certificates from %s", ssl_parameters.certs_file); } else { - red_error("Could not load certificates from %s", ssl_parameters.certs_file); + spice_error("Could not load certificates from %s", ssl_parameters.certs_file); } SSL_CTX_set_default_passwd_cb(reds->ctx, ssl_password_cb); @@ -3114,17 +3114,17 @@ static void reds_init_ssl(void) return_code = SSL_CTX_use_PrivateKey_file(reds->ctx, ssl_parameters.private_key_file, SSL_FILETYPE_PEM); if (return_code == 1) { - red_printf("Using private key from %s", ssl_parameters.private_key_file); + spice_printerr("Using private key from %s", ssl_parameters.private_key_file); } else { - red_error("Could not use private key file"); + spice_error("Could not use private key file"); } /* Load the CAs we trust*/ return_code = SSL_CTX_load_verify_locations(reds->ctx, ssl_parameters.ca_certificate_file, 0); if (return_code == 1) { - red_printf("Loaded CA certificates from %s", ssl_parameters.ca_certificate_file); + spice_printerr("Loaded CA certificates from %s", ssl_parameters.ca_certificate_file); } else { - red_error("Could not use CA file %s", ssl_parameters.ca_certificate_file); + spice_error("Could not use CA file %s", ssl_parameters.ca_certificate_file); } #if (OPENSSL_VERSION_NUMBER < 0x00905100L) @@ -3195,7 +3195,7 @@ enum { static inline void on_activating_ticketing(void) { if (!ticketing_enabled && reds_main_channel_connected()) { - red_printf("disconnecting"); + spice_printerr("disconnecting"); reds_disconnect(); } } @@ -3247,8 +3247,8 @@ static void reds_mig_release(void) static void reds_mig_started(void) { - red_printf(""); - ASSERT(reds->mig_spice); + spice_printerr(""); + spice_assert(reds->mig_spice); reds->mig_inprogress = TRUE; reds->mig_wait_connect = TRUE; @@ -3257,10 +3257,10 @@ static void reds_mig_started(void) static void reds_mig_finished(int completed) { - red_printf(""); + spice_printerr(""); if (!reds_main_channel_connected()) { - red_printf("no peer connected"); + spice_printerr("no peer connected"); return; } reds->mig_inprogress = TRUE; @@ -3277,7 +3277,7 @@ static void reds_mig_finished(int completed) static void reds_mig_switch(void) { if (!reds->mig_spice) { - red_printf("warning: reds_mig_switch called without migrate_info set"); + spice_printerr("warning: reds_mig_switch called without migrate_info set"); return; } main_channel_migrate_switch(reds->main_channel, reds->mig_spice); @@ -3286,8 +3286,8 @@ static void reds_mig_switch(void) static void migrate_timeout(void *opaque) { - red_printf(""); - ASSERT(reds->mig_wait_connect || reds->mig_wait_disconnect); + spice_printerr(""); + spice_assert(reds->mig_wait_connect || reds->mig_wait_disconnect); if (reds->mig_wait_connect) { /* we will fall back to the switch host scheme when migration completes */ main_channel_migrate_cancel_wait(reds->main_channel); @@ -3383,10 +3383,10 @@ static int spice_server_char_device_add_interface(SpiceServer *s, SpiceCharDeviceInstance* char_device = SPICE_CONTAINEROF(sin, SpiceCharDeviceInstance, base); - red_printf("CHAR_DEVICE %s", char_device->subtype); + spice_printerr("CHAR_DEVICE %s", char_device->subtype); if (strcmp(char_device->subtype, SUBTYPE_VDAGENT) == 0) { if (vdagent) { - red_printf("vdagent already attached"); + spice_printerr("vdagent already attached"); return -1; } char_device->st = &vdagent_char_device_state; @@ -3410,7 +3410,7 @@ static void spice_server_char_device_remove_interface(SpiceBaseInstance *sin) SpiceCharDeviceInstance* char_device = SPICE_CONTAINEROF(sin, SpiceCharDeviceInstance, base); - red_printf("remove CHAR_DEVICE %s", char_device->subtype); + spice_printerr("remove CHAR_DEVICE %s", char_device->subtype); if (strcmp(char_device->subtype, SUBTYPE_VDAGENT) == 0) { if (vdagent) { reds_agent_remove(); @@ -3431,23 +3431,23 @@ SPICE_GNUC_VISIBLE int spice_server_add_interface(SpiceServer *s, { const SpiceBaseInterface *interface = sin->sif; - ASSERT(reds == s); + spice_assert(reds == s); if (strcmp(interface->type, SPICE_INTERFACE_KEYBOARD) == 0) { - red_printf("SPICE_INTERFACE_KEYBOARD"); + spice_printerr("SPICE_INTERFACE_KEYBOARD"); if (interface->major_version != SPICE_INTERFACE_KEYBOARD_MAJOR || interface->minor_version > SPICE_INTERFACE_KEYBOARD_MINOR) { - red_printf("unsupported keyboard interface"); + spice_printerr("unsupported keyboard interface"); return -1; } if (inputs_set_keyboard(SPICE_CONTAINEROF(sin, SpiceKbdInstance, base)) != 0) { return -1; } } else if (strcmp(interface->type, SPICE_INTERFACE_MOUSE) == 0) { - red_printf("SPICE_INTERFACE_MOUSE"); + spice_printerr("SPICE_INTERFACE_MOUSE"); if (interface->major_version != SPICE_INTERFACE_MOUSE_MAJOR || interface->minor_version > SPICE_INTERFACE_MOUSE_MINOR) { - red_printf("unsupported mouse interface"); + spice_printerr("unsupported mouse interface"); return -1; } if (inputs_set_mouse(SPICE_CONTAINEROF(sin, SpiceMouseInstance, base)) != 0) { @@ -3456,10 +3456,10 @@ SPICE_GNUC_VISIBLE int spice_server_add_interface(SpiceServer *s, } else if (strcmp(interface->type, SPICE_INTERFACE_QXL) == 0) { QXLInstance *qxl; - red_printf("SPICE_INTERFACE_QXL"); + spice_printerr("SPICE_INTERFACE_QXL"); if (interface->major_version != SPICE_INTERFACE_QXL_MAJOR || interface->minor_version > SPICE_INTERFACE_QXL_MINOR) { - red_printf("unsupported qxl interface"); + spice_printerr("unsupported qxl interface"); return -1; } @@ -3469,10 +3469,10 @@ SPICE_GNUC_VISIBLE int spice_server_add_interface(SpiceServer *s, qxl->st->dispatcher = red_dispatcher_init(qxl); } else if (strcmp(interface->type, SPICE_INTERFACE_TABLET) == 0) { - red_printf("SPICE_INTERFACE_TABLET"); + spice_printerr("SPICE_INTERFACE_TABLET"); if (interface->major_version != SPICE_INTERFACE_TABLET_MAJOR || interface->minor_version > SPICE_INTERFACE_TABLET_MINOR) { - red_printf("unsupported tablet interface"); + spice_printerr("unsupported tablet interface"); return -1; } if (inputs_set_tablet(SPICE_CONTAINEROF(sin, SpiceTabletInstance, base)) != 0) { @@ -3484,19 +3484,19 @@ SPICE_GNUC_VISIBLE int spice_server_add_interface(SpiceServer *s, } } else if (strcmp(interface->type, SPICE_INTERFACE_PLAYBACK) == 0) { - red_printf("SPICE_INTERFACE_PLAYBACK"); + spice_printerr("SPICE_INTERFACE_PLAYBACK"); if (interface->major_version != SPICE_INTERFACE_PLAYBACK_MAJOR || interface->minor_version > SPICE_INTERFACE_PLAYBACK_MINOR) { - red_printf("unsupported playback interface"); + spice_printerr("unsupported playback interface"); return -1; } snd_attach_playback(SPICE_CONTAINEROF(sin, SpicePlaybackInstance, base)); } else if (strcmp(interface->type, SPICE_INTERFACE_RECORD) == 0) { - red_printf("SPICE_INTERFACE_RECORD"); + spice_printerr("SPICE_INTERFACE_RECORD"); if (interface->major_version != SPICE_INTERFACE_RECORD_MAJOR || interface->minor_version > SPICE_INTERFACE_RECORD_MINOR) { - red_printf("unsupported record interface"); + spice_printerr("unsupported record interface"); return -1; } snd_attach_record(SPICE_CONTAINEROF(sin, SpiceRecordInstance, base)); @@ -3504,7 +3504,7 @@ SPICE_GNUC_VISIBLE int spice_server_add_interface(SpiceServer *s, } else if (strcmp(interface->type, SPICE_INTERFACE_CHAR_DEVICE) == 0) { if (interface->major_version != SPICE_INTERFACE_CHAR_DEVICE_MAJOR || interface->minor_version > SPICE_INTERFACE_CHAR_DEVICE_MINOR) { - red_printf("unsupported char device interface"); + spice_printerr("unsupported char device interface"); return -1; } spice_server_char_device_add_interface(s, sin); @@ -3512,33 +3512,33 @@ SPICE_GNUC_VISIBLE int spice_server_add_interface(SpiceServer *s, } else if (strcmp(interface->type, SPICE_INTERFACE_NET_WIRE) == 0) { #ifdef USE_TUNNEL SpiceNetWireInstance *net; - red_printf("SPICE_INTERFACE_NET_WIRE"); + spice_printerr("SPICE_INTERFACE_NET_WIRE"); if (red_tunnel) { - red_printf("net wire already attached"); + spice_printerr("net wire already attached"); return -1; } if (interface->major_version != SPICE_INTERFACE_NET_WIRE_MAJOR || interface->minor_version > SPICE_INTERFACE_NET_WIRE_MINOR) { - red_printf("unsupported net wire interface"); + spice_printerr("unsupported net wire interface"); return -1; } net = SPICE_CONTAINEROF(sin, SpiceNetWireInstance, base); net->st = spice_new0(SpiceNetWireState, 1); red_tunnel = red_tunnel_attach(core, net); #else - red_printf("unsupported net wire interface"); + spice_printerr("unsupported net wire interface"); return -1; #endif } else if (strcmp(interface->type, SPICE_INTERFACE_MIGRATION) == 0) { - red_printf("SPICE_INTERFACE_MIGRATION"); + spice_printerr("SPICE_INTERFACE_MIGRATION"); if (migration_interface) { - red_printf("already have migration"); + spice_printerr("already have migration"); return -1; } if (interface->major_version != SPICE_INTERFACE_MIGRATION_MAJOR || interface->minor_version > SPICE_INTERFACE_MIGRATION_MINOR) { - red_printf("unsupported migration interface"); + spice_printerr("unsupported migration interface"); return -1; } migration_interface = SPICE_CONTAINEROF(sin, SpiceMigrateInstance, base); @@ -3553,21 +3553,21 @@ SPICE_GNUC_VISIBLE int spice_server_remove_interface(SpiceBaseInstance *sin) const SpiceBaseInterface *interface = sin->sif; if (strcmp(interface->type, SPICE_INTERFACE_TABLET) == 0) { - red_printf("remove SPICE_INTERFACE_TABLET"); + spice_printerr("remove SPICE_INTERFACE_TABLET"); inputs_detach_tablet(SPICE_CONTAINEROF(sin, SpiceTabletInstance, base)); reds_update_mouse_mode(); } else if (strcmp(interface->type, SPICE_INTERFACE_PLAYBACK) == 0) { - red_printf("remove SPICE_INTERFACE_PLAYBACK"); + spice_printerr("remove SPICE_INTERFACE_PLAYBACK"); snd_detach_playback(SPICE_CONTAINEROF(sin, SpicePlaybackInstance, base)); } else if (strcmp(interface->type, SPICE_INTERFACE_RECORD) == 0) { - red_printf("remove SPICE_INTERFACE_RECORD"); + spice_printerr("remove SPICE_INTERFACE_RECORD"); snd_detach_record(SPICE_CONTAINEROF(sin, SpiceRecordInstance, base)); } else if (strcmp(interface->type, SPICE_INTERFACE_CHAR_DEVICE) == 0) { spice_server_char_device_remove_interface(sin); } else { - red_error("VD_INTERFACE_REMOVING unsupported"); + spice_error("VD_INTERFACE_REMOVING unsupported"); return -1; } @@ -3640,10 +3640,10 @@ const char *version_string = VERSION; static int do_spice_init(SpiceCoreInterface *core_interface) { - red_printf("starting %s", version_string); + spice_printerr("starting %s", version_string); if (core_interface->base.major_version != SPICE_INTERFACE_CORE_MAJOR) { - red_printf("bad core interface version"); + spice_printerr("bad core interface version"); goto err; } core = core_interface; @@ -3657,11 +3657,11 @@ static int do_spice_init(SpiceCoreInterface *core_interface) ring_init(&reds->mig_target_clients); if (!(reds->mig_timer = core->timer_add(migrate_timeout, NULL))) { - red_error("migration timer create failed"); + spice_error("migration timer create failed"); } if (!(reds->vdi_port_write_timer = core->timer_add(vdi_port_write_retry, NULL))) { - red_error("vdi port write timer create failed"); + spice_error("vdi port write timer create failed"); } reds->vdi_port_write_timer_started = FALSE; @@ -3672,26 +3672,26 @@ static int do_spice_init(SpiceCoreInterface *core_interface) reds->stat_shm_name = (char *)spice_malloc(shm_name_len); snprintf(reds->stat_shm_name, shm_name_len, SPICE_STAT_SHM_NAME, getpid()); if ((fd = shm_open(reds->stat_shm_name, O_CREAT | O_RDWR, 0444)) == -1) { - red_error("statistics shm_open failed, %s", strerror(errno)); + spice_error("statistics shm_open failed, %s", strerror(errno)); } if (ftruncate(fd, REDS_STAT_SHM_SIZE) == -1) { - red_error("statistics ftruncate failed, %s", strerror(errno)); + spice_error("statistics ftruncate failed, %s", strerror(errno)); } reds->stat = (SpiceStat *)mmap(NULL, REDS_STAT_SHM_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (reds->stat == (SpiceStat *)MAP_FAILED) { - red_error("statistics mmap failed, %s", strerror(errno)); + spice_error("statistics mmap failed, %s", strerror(errno)); } memset(reds->stat, 0, REDS_STAT_SHM_SIZE); reds->stat->magic = SPICE_STAT_MAGIC; reds->stat->version = SPICE_STAT_VERSION; reds->stat->root_index = INVALID_STAT_REF; if (pthread_mutex_init(&reds->stat_lock, NULL)) { - red_error("mutex init failed"); + spice_error("mutex init failed"); } #endif if (!(reds->mm_timer = core->timer_add(mm_timer_proc, NULL))) { - red_error("mm timer create failed"); + spice_error("mm timer create failed"); } core->timer_start(reds->mm_timer, MM_TIMER_GRANULARITY_MS); @@ -3705,7 +3705,7 @@ static int do_spice_init(SpiceCoreInterface *core_interface) int saslerr; if ((saslerr = sasl_server_init(NULL, sasl_appname ? sasl_appname : "spice")) != SASL_OK) { - red_error("Failed to initialize SASL auth %s", + spice_error("Failed to initialize SASL auth %s", sasl_errstring(saslerr, NULL, NULL)); goto err; } @@ -3717,7 +3717,7 @@ static int do_spice_init(SpiceCoreInterface *core_interface) reds->mouse_mode = SPICE_MOUSE_MODE_SERVER; reds->allow_multiple_clients = getenv(SPICE_DEBUG_ALLOW_MC_ENV) != NULL; if (reds->allow_multiple_clients) { - red_printf("spice: allowing multiple client connections"); + spice_printerr("spice: allowing multiple client connections"); } atexit(reds_exit); return 0; @@ -3730,7 +3730,7 @@ err: SPICE_GNUC_VISIBLE SpiceServer *spice_server_new(void) { /* we can't handle multiple instances (yet) */ - ASSERT(reds == NULL); + spice_assert(reds == NULL); reds = spice_new0(RedsState, 1); return reds; @@ -3740,7 +3740,7 @@ SPICE_GNUC_VISIBLE int spice_server_init(SpiceServer *s, SpiceCoreInterface *cor { int ret; - ASSERT(reds == s); + spice_assert(reds == s); ret = do_spice_init(core); if (default_renderer) { red_dispatcher_add_renderer(default_renderer); @@ -3750,7 +3750,7 @@ SPICE_GNUC_VISIBLE int spice_server_init(SpiceServer *s, SpiceCoreInterface *cor SPICE_GNUC_VISIBLE void spice_server_destroy(SpiceServer *s) { - ASSERT(reds == s); + spice_assert(reds == s); reds_exit(); } @@ -3776,7 +3776,7 @@ SPICE_GNUC_VISIBLE int spice_server_set_compat_version(SpiceServer *s, SPICE_GNUC_VISIBLE int spice_server_set_port(SpiceServer *s, int port) { - ASSERT(reds == s); + spice_assert(reds == s); if (port < 0 || port > 0xffff) { return -1; } @@ -3786,7 +3786,7 @@ SPICE_GNUC_VISIBLE int spice_server_set_port(SpiceServer *s, int port) SPICE_GNUC_VISIBLE void spice_server_set_addr(SpiceServer *s, const char *addr, int flags) { - ASSERT(reds == s); + spice_assert(reds == s); strncpy(spice_addr, addr, sizeof(spice_addr)); if (flags & SPICE_ADDR_FLAG_IPV4_ONLY) { spice_family = PF_INET; @@ -3798,14 +3798,14 @@ SPICE_GNUC_VISIBLE void spice_server_set_addr(SpiceServer *s, const char *addr, SPICE_GNUC_VISIBLE int spice_server_set_listen_socket_fd(SpiceServer *s, int listen_fd) { - ASSERT(reds == s); + spice_assert(reds == s); spice_listen_socket_fd = listen_fd; return 0; } SPICE_GNUC_VISIBLE int spice_server_set_noauth(SpiceServer *s) { - ASSERT(reds == s); + spice_assert(reds == s); memset(taTicket.password, 0, sizeof(taTicket.password)); ticketing_enabled = 0; return 0; @@ -3813,7 +3813,7 @@ SPICE_GNUC_VISIBLE int spice_server_set_noauth(SpiceServer *s) SPICE_GNUC_VISIBLE int spice_server_set_sasl(SpiceServer *s, int enabled) { - ASSERT(reds == s); + spice_assert(reds == s); #if HAVE_SASL sasl_enabled = enabled; return 0; @@ -3824,7 +3824,7 @@ SPICE_GNUC_VISIBLE int spice_server_set_sasl(SpiceServer *s, int enabled) SPICE_GNUC_VISIBLE int spice_server_set_sasl_appname(SpiceServer *s, const char *appname) { - ASSERT(reds == s); + spice_assert(reds == s); #if HAVE_SASL free(sasl_appname); sasl_appname = spice_strdup(appname); @@ -3851,7 +3851,7 @@ SPICE_GNUC_VISIBLE int spice_server_set_ticket(SpiceServer *s, int fail_if_connected, int disconnect_if_connected) { - ASSERT(reds == s); + spice_assert(reds == s); if (reds_main_channel_connected()) { if (fail_if_connected) { @@ -3884,7 +3884,7 @@ SPICE_GNUC_VISIBLE int spice_server_set_tls(SpiceServer *s, int port, const char *private_key_file, const char *key_passwd, const char *dh_key_file, const char *ciphersuite) { - ASSERT(reds == s); + spice_assert(reds == s); if (port == 0 || ca_cert_file == NULL || certs_file == NULL || private_key_file == NULL) { return -1; @@ -3920,22 +3920,22 @@ SPICE_GNUC_VISIBLE int spice_server_set_tls(SpiceServer *s, int port, SPICE_GNUC_VISIBLE int spice_server_set_image_compression(SpiceServer *s, spice_image_compression_t comp) { - ASSERT(reds == s); + spice_assert(reds == s); set_image_compression(comp); return 0; } SPICE_GNUC_VISIBLE spice_image_compression_t spice_server_get_image_compression(SpiceServer *s) { - ASSERT(reds == s); + spice_assert(reds == s); return image_compression; } SPICE_GNUC_VISIBLE int spice_server_set_jpeg_compression(SpiceServer *s, spice_wan_compression_t comp) { - ASSERT(reds == s); + spice_assert(reds == s); if (comp == SPICE_WAN_COMPRESSION_INVALID) { - red_printf("invalid jpeg state"); + spice_printerr("invalid jpeg state"); return -1; } // todo: support dynamically changing the state @@ -3945,9 +3945,9 @@ SPICE_GNUC_VISIBLE int spice_server_set_jpeg_compression(SpiceServer *s, spice_w SPICE_GNUC_VISIBLE int spice_server_set_zlib_glz_compression(SpiceServer *s, spice_wan_compression_t comp) { - ASSERT(reds == s); + spice_assert(reds == s); if (comp == SPICE_WAN_COMPRESSION_INVALID) { - red_printf("invalid zlib_glz state"); + spice_printerr("invalid zlib_glz state"); return -1; } // todo: support dynamically changing the state @@ -3973,7 +3973,7 @@ SPICE_GNUC_VISIBLE int spice_server_set_channel_security(SpiceServer *s, const c }; int i; - ASSERT(reds == s); + spice_assert(reds == s); if (channel == NULL) { default_channel_security = security; @@ -3990,7 +3990,7 @@ SPICE_GNUC_VISIBLE int spice_server_set_channel_security(SpiceServer *s, const c SPICE_GNUC_VISIBLE int spice_server_get_sock_info(SpiceServer *s, struct sockaddr *sa, socklen_t *salen) { - ASSERT(reds == s); + spice_assert(reds == s); if (main_channel_getsockname(reds->main_channel, sa, salen) < 0) { return -1; } @@ -3999,7 +3999,7 @@ SPICE_GNUC_VISIBLE int spice_server_get_sock_info(SpiceServer *s, struct sockadd SPICE_GNUC_VISIBLE int spice_server_get_peer_info(SpiceServer *s, struct sockaddr *sa, socklen_t *salen) { - ASSERT(reds == s); + spice_assert(reds == s); if (main_channel_getpeername(reds->main_channel, sa, salen) < 0) { return -1; } @@ -4008,7 +4008,7 @@ SPICE_GNUC_VISIBLE int spice_server_get_peer_info(SpiceServer *s, struct sockadd SPICE_GNUC_VISIBLE int spice_server_add_renderer(SpiceServer *s, const char *name) { - ASSERT(reds == s); + spice_assert(reds == s); if (!red_dispatcher_add_renderer(name)) { return -1; } @@ -4024,7 +4024,7 @@ SPICE_GNUC_VISIBLE int spice_server_kbd_leds(SpiceKbdInstance *sin, int leds) SPICE_GNUC_VISIBLE int spice_server_set_streaming_video(SpiceServer *s, int value) { - ASSERT(reds == s); + spice_assert(reds == s); if (value != SPICE_STREAM_VIDEO_OFF && value != SPICE_STREAM_VIDEO_ALL && value != SPICE_STREAM_VIDEO_FILTER) @@ -4036,14 +4036,14 @@ SPICE_GNUC_VISIBLE int spice_server_set_streaming_video(SpiceServer *s, int valu SPICE_GNUC_VISIBLE int spice_server_set_playback_compression(SpiceServer *s, int enable) { - ASSERT(reds == s); + spice_assert(reds == s); snd_set_playback_compression(enable); return 0; } SPICE_GNUC_VISIBLE int spice_server_set_agent_mouse(SpiceServer *s, int enable) { - ASSERT(reds == s); + spice_assert(reds == s); agent_mouse = enable; reds_update_mouse_mode(); return 0; @@ -4051,7 +4051,7 @@ SPICE_GNUC_VISIBLE int spice_server_set_agent_mouse(SpiceServer *s, int enable) SPICE_GNUC_VISIBLE int spice_server_set_agent_copypaste(SpiceServer *s, int enable) { - ASSERT(reds == s); + spice_assert(reds == s); agent_copypaste = enable; reds->agent_state.write_filter.copy_paste_enabled = agent_copypaste; reds->agent_state.read_filter.copy_paste_enabled = agent_copypaste; @@ -4090,12 +4090,12 @@ SPICE_GNUC_VISIBLE int spice_server_migrate_connect(SpiceServer *s, const char* { SpiceMigrateInterface *sif; - red_printf(""); - ASSERT(migration_interface); - ASSERT(reds == s); + spice_printerr(""); + spice_assert(migration_interface); + spice_assert(reds == s); if (reds->expect_migrate) { - red_printf("warning: consecutive calls without migration. Canceling previous call"); + spice_printerr("warning: consecutive calls without migration. Canceling previous call"); main_channel_migrate_complete(reds->main_channel, FALSE); } @@ -4114,7 +4114,7 @@ SPICE_GNUC_VISIBLE int spice_server_migrate_connect(SpiceServer *s, const char* } else { if (reds->num_clients == 0) { reds_mig_release(); - red_printf("no client connected"); + spice_printerr("no client connected"); } sif->migrate_connect_complete(migration_interface); } @@ -4126,9 +4126,9 @@ SPICE_GNUC_VISIBLE int spice_server_migrate_info(SpiceServer *s, const char* des int port, int secure_port, const char* cert_subject) { - red_printf(""); - ASSERT(!migration_interface); - ASSERT(reds == s); + spice_printerr(""); + spice_assert(!migration_interface); + spice_assert(reds == s); if (!reds_set_migration_dest_info(dest, port, secure_port, cert_subject)) { return -1; @@ -4138,8 +4138,8 @@ SPICE_GNUC_VISIBLE int spice_server_migrate_info(SpiceServer *s, const char* des SPICE_GNUC_VISIBLE int spice_server_migrate_start(SpiceServer *s) { - ASSERT(reds == s); - red_printf(""); + spice_assert(reds == s); + spice_printerr(""); if (!reds->mig_spice) { return -1; } @@ -4148,7 +4148,7 @@ SPICE_GNUC_VISIBLE int spice_server_migrate_start(SpiceServer *s) SPICE_GNUC_VISIBLE int spice_server_migrate_client_state(SpiceServer *s) { - ASSERT(reds == s); + spice_assert(reds == s); if (!reds_main_channel_connected()) { return SPICE_MIGRATE_CLIENT_NONE; @@ -4165,14 +4165,14 @@ SPICE_GNUC_VISIBLE int spice_server_migrate_end(SpiceServer *s, int completed) SpiceMigrateInterface *sif; int ret = 0; - red_printf(""); + spice_printerr(""); - ASSERT(migration_interface); - ASSERT(reds == s); + spice_assert(migration_interface); + spice_assert(reds == s); sif = SPICE_CONTAINEROF(migration_interface->base.sif, SpiceMigrateInterface, base); if (!reds->expect_migrate && reds->num_clients) { - red_printf("spice_server_migrate_info was not called, disconnecting clients"); + spice_printerr("spice_server_migrate_info was not called, disconnecting clients"); reds_disconnect(); ret = -1; goto complete; @@ -4191,8 +4191,8 @@ complete: /* interface for switch-host migration */ SPICE_GNUC_VISIBLE int spice_server_migrate_switch(SpiceServer *s) { - ASSERT(reds == s); - red_printf(""); + spice_assert(reds == s); + spice_printerr(""); if (!reds->num_clients) { return 0; } @@ -4276,7 +4276,7 @@ void reds_stream_free(RedsStream *s) } reds_stream_remove_watch(s); - red_printf("close socket fd %d", s->socket); + spice_printerr("close socket fd %d", s->socket); close(s->socket); free(s); diff --git a/server/smartcard.c b/server/smartcard.c index d023331..894053e 100644 --- a/server/smartcard.c +++ b/server/smartcard.c @@ -101,7 +101,7 @@ void smartcard_char_device_wakeup(SpiceCharDeviceInstance *sin) if (actual_length > state->buf_size) { state->buf_size = MAX(state->buf_size*2, actual_length + sizeof(VSCMsgHeader)); state->buf = spice_realloc(state->buf, state->buf_size); - ASSERT(state->buf != NULL); + spice_assert(state->buf != NULL); } if (state->buf_used - sizeof(VSCMsgHeader) < actual_length) { continue; @@ -135,7 +135,7 @@ void smartcard_char_device_on_message_from_device( } /* We pass any VSC_Error right now - might need to ignore some? */ if (state->reader_id == VSCARD_UNDEFINED_READER_ID && vheader->type != VSC_Init) { - red_printf("error: reader_id not assigned for message of type %d", vheader->type); + spice_printerr("error: reader_id not assigned for message of type %d", vheader->type); } if (state->rcc) { sent_header = spice_memdup(vheader, sizeof(*vheader) + vheader->length); @@ -176,7 +176,7 @@ static int smartcard_char_device_add_to_readers(SpiceCharDeviceInstance *char_de static SpiceCharDeviceInstance *smartcard_readers_get(uint32_t reader_id) { - ASSERT(reader_id < g_smartcard_readers.num); + spice_assert(reader_id < g_smartcard_readers.num); return g_smartcard_readers.sin[reader_id]; } @@ -284,15 +284,15 @@ static void smartcard_channel_release_msg_rcv_buf(RedChannelClient *rcc, uint32_t size, uint8_t *msg) { - red_printf("freeing %d bytes", size); + spice_printerr("freeing %d bytes", size); free(msg); } static void smartcard_channel_send_data(RedChannelClient *rcc, SpiceMarshaller *m, PipeItem *item, VSCMsgHeader *vheader) { - ASSERT(rcc); - ASSERT(vheader); + spice_assert(rcc); + spice_assert(vheader); red_channel_client_init_send_data(rcc, SPICE_MSG_SMARTCARD_DATA, item); spice_marshaller_add_ref(m, (uint8_t*)vheader, sizeof(VSCMsgHeader)); if (vheader->length > 0) { @@ -428,7 +428,7 @@ static void smartcard_channel_write_to_reader(VSCMsgHeader *vheader) uint32_t n; uint32_t actual_length = vheader->length; - ASSERT(vheader->reader_id >= 0 && + spice_assert(vheader->reader_id >= 0 && vheader->reader_id <= g_smartcard_readers.num); sin = g_smartcard_readers.sin[vheader->reader_id]; sif = SPICE_CONTAINEROF(sin->base.sif, SpiceCharDeviceInterface, base); @@ -439,7 +439,7 @@ static void smartcard_channel_write_to_reader(VSCMsgHeader *vheader) n = sif->write(sin, (uint8_t*)vheader, actual_length + sizeof(VSCMsgHeader)); // TODO - add ring - ASSERT(n == actual_length + sizeof(VSCMsgHeader)); + spice_assert(n == actual_length + sizeof(VSCMsgHeader)); } static int smartcard_channel_handle_message(RedChannelClient *rcc, @@ -454,7 +454,7 @@ static int smartcard_channel_handle_message(RedChannelClient *rcc, return red_channel_client_handle_message(rcc, size, type, msg); } - ASSERT(size == vheader->length + sizeof(VSCMsgHeader)); + spice_assert(size == vheader->length + sizeof(VSCMsgHeader)); switch (vheader->type) { case VSC_ReaderAdd: smartcard_add_reader(rcc, msg + sizeof(VSCMsgHeader)); @@ -479,7 +479,7 @@ static int smartcard_channel_handle_message(RedChannelClient *rcc, } if (vheader->reader_id >= g_smartcard_readers.num) { - red_printf("ERROR: received message for non existent reader: %d, %d, %d", vheader->reader_id, + spice_printerr("ERROR: received message for non existent reader: %d, %d, %d", vheader->reader_id, vheader->type, vheader->length); return FALSE; } @@ -515,7 +515,7 @@ static void smartcard_init(void) ChannelCbs channel_cbs = { NULL, }; ClientCbs client_cbs = { NULL, }; - ASSERT(!g_smartcard_channel); + spice_assert(!g_smartcard_channel); channel_cbs.config_socket = smartcard_channel_client_config_socket; channel_cbs.on_disconnect = smartcard_channel_on_disconnect; @@ -533,7 +533,7 @@ static void smartcard_init(void) &channel_cbs); if (!g_smartcard_channel) { - red_error("failed to allocate Inputs Channel"); + spice_error("failed to allocate Inputs Channel"); } client_cbs.connect = smartcard_connect; diff --git a/server/snd_worker.c b/server/snd_worker.c index be98094..7bdd399 100644 --- a/server/snd_worker.c +++ b/server/snd_worker.c @@ -208,7 +208,7 @@ static SndChannel *snd_channel_put(SndChannel *channel) if (!--channel->refs) { channel->worker->connection = NULL; free(channel); - red_printf("sound channel freed"); + spice_printerr("sound channel freed"); return NULL; } return channel; @@ -295,7 +295,7 @@ static int snd_send_data(SndChannel *channel) snd_disconnect_channel(channel); return FALSE; default: - red_printf("%s", strerror(errno)); + spice_printerr("%s", strerror(errno)); snd_disconnect_channel(channel); return FALSE; } @@ -326,7 +326,7 @@ static int snd_record_handle_write(RecordChannel *record_channel, size_t size, v int celt_err = celt051_decode(record_channel->celt_decoder, packet->data, size, (celt_int16_t *)record_channel->celt_buf); if (celt_err != CELT_OK) { - red_printf("celt decode failed (%d)", celt_err); + spice_printerr("celt decode failed (%d)", celt_err); return FALSE; } data = record_channel->celt_buf; @@ -366,7 +366,7 @@ static int snd_playback_handle_message(SndChannel *channel, size_t size, uint32_ case SPICE_MSGC_DISCONNECTING: break; default: - red_printf("invalid message type %u", type); + spice_printerr("invalid message type %u", type); return FALSE; } return TRUE; @@ -388,7 +388,7 @@ static int snd_record_handle_message(SndChannel *channel, size_t size, uint32_t record_channel->mode_time = mode->time; if (record_channel->mode != SPICE_AUDIO_DATA_MODE_CELT_0_5_1 && record_channel->mode != SPICE_AUDIO_DATA_MODE_RAW) { - red_printf("unsupported mode"); + spice_printerr("unsupported mode"); } break; } @@ -402,7 +402,7 @@ static int snd_record_handle_message(SndChannel *channel, size_t size, uint32_t case SPICE_MSGC_MIGRATE_DATA: { RecordMigrateData* mig_data = (RecordMigrateData *)message; if (mig_data->version != RECORD_MIG_VERSION) { - red_printf("invalid mig version"); + spice_printerr("invalid mig version"); break; } record_channel->mode = mig_data->mode; @@ -411,7 +411,7 @@ static int snd_record_handle_message(SndChannel *channel, size_t size, uint32_t break; } default: - red_printf("invalid message type %u", type); + spice_printerr("invalid message type %u", type); return FALSE; } return TRUE; @@ -431,14 +431,14 @@ static void snd_receive(void* data) for (;;) { ssize_t n; n = channel->recive_data.end - channel->recive_data.now; - ASSERT(n); + spice_assert(n); n = reds_stream_read(channel->stream, channel->recive_data.now, n); if (n <= 0) { if (n == 0) { snd_disconnect_channel(channel); return; } - ASSERT(n == -1); + spice_assert(n == -1); switch (errno) { case EAGAIN: return; @@ -448,7 +448,7 @@ static void snd_receive(void* data) snd_disconnect_channel(channel); return; default: - red_printf("%s", strerror(errno)); + spice_printerr("%s", strerror(errno)); snd_disconnect_channel(channel); return; } @@ -472,7 +472,7 @@ static void snd_receive(void* data) header->get_msg_type(header), SPICE_VERSION_MINOR, &parsed_size, &parsed_free); if (parsed == NULL) { - red_printf("failed to parse message type %d", header->get_msg_type(header)); + spice_printerr("failed to parse message type %d", header->get_msg_type(header)); snd_disconnect_channel(channel); return; } @@ -629,7 +629,7 @@ static int snd_playback_send_start(PlaybackChannel *playback_channel) start.channels = SPICE_INTERFACE_PLAYBACK_CHAN; start.frequency = SPICE_INTERFACE_PLAYBACK_FREQ; - ASSERT(SPICE_INTERFACE_PLAYBACK_FMT == SPICE_INTERFACE_AUDIO_FMT_S16); + spice_assert(SPICE_INTERFACE_PLAYBACK_FMT == SPICE_INTERFACE_AUDIO_FMT_S16); start.format = SPICE_AUDIO_FMT_S16; start.time = reds_get_mm_time(); spice_marshall_msg_playback_start(channel->send_data.marshaller, &start); @@ -670,7 +670,7 @@ static int snd_record_send_start(RecordChannel *record_channel) start.channels = SPICE_INTERFACE_RECORD_CHAN; start.frequency = SPICE_INTERFACE_RECORD_FREQ; - ASSERT(SPICE_INTERFACE_RECORD_FMT == SPICE_INTERFACE_AUDIO_FMT_S16); + spice_assert(SPICE_INTERFACE_RECORD_FMT == SPICE_INTERFACE_AUDIO_FMT_S16); start.format = SPICE_AUDIO_FMT_S16; spice_marshall_msg_record_start(channel->send_data.marshaller, &start); @@ -783,7 +783,7 @@ static int snd_playback_send_write(PlaybackChannel *playback_channel) int n = celt051_encode(playback_channel->celt_encoder, (celt_int16_t *)frame->samples, NULL, playback_channel->send_data.celt_buf, CELT_COMPRESSED_FRAME_BYTES); if (n < 0) { - red_printf("celt encode failed"); + spice_printerr("celt encode failed"); snd_disconnect_channel(channel); return FALSE; } @@ -829,12 +829,12 @@ static void snd_playback_send(void* data) channel->command &= ~SND_PLAYBACK_MODE_MASK; } if (channel->command & SND_PLAYBACK_PCM_MASK) { - ASSERT(!playback_channel->in_progress && playback_channel->pending_frame); + spice_assert(!playback_channel->in_progress && playback_channel->pending_frame); playback_channel->in_progress = playback_channel->pending_frame; playback_channel->pending_frame = NULL; channel->command &= ~SND_PLAYBACK_PCM_MASK; if (!snd_playback_send_write(playback_channel)) { - red_printf("snd_send_playback_write failed"); + spice_printerr("snd_send_playback_write failed"); return; } } @@ -913,7 +913,7 @@ static SndChannel *__new_channel(SndWorker *worker, int size, uint32_t channel_i MainChannelClient *mcc = red_client_get_main(client); if ((flags = fcntl(stream->socket, F_GETFL)) == -1) { - red_printf("accept failed, %s", strerror(errno)); + spice_printerr("accept failed, %s", strerror(errno)); goto error1; } @@ -922,7 +922,7 @@ static SndChannel *__new_channel(SndWorker *worker, int size, uint32_t channel_i if (setsockopt(stream->socket, SOL_SOCKET, SO_PRIORITY, (void*)&priority, sizeof(priority)) == -1) { if (errno != ENOTSUP) { - red_printf("setsockopt failed, %s", strerror(errno)); + spice_printerr("setsockopt failed, %s", strerror(errno)); } } #endif @@ -930,23 +930,23 @@ static SndChannel *__new_channel(SndWorker *worker, int size, uint32_t channel_i tos = IPTOS_LOWDELAY; if (setsockopt(stream->socket, IPPROTO_IP, IP_TOS, (void*)&tos, sizeof(tos)) == -1) { if (errno != ENOTSUP) { - red_printf("setsockopt failed, %s", strerror(errno)); + spice_printerr("setsockopt failed, %s", strerror(errno)); } } delay_val = main_channel_client_is_low_bandwidth(mcc) ? 0 : 1; if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY, &delay_val, sizeof(delay_val)) == -1) { if (errno != ENOTSUP) { - red_printf("setsockopt failed, %s", strerror(errno)); + spice_printerr("setsockopt failed, %s", strerror(errno)); } } if (fcntl(stream->socket, F_SETFL, flags | O_NONBLOCK) == -1) { - red_printf("accept failed, %s", strerror(errno)); + spice_printerr("accept failed, %s", strerror(errno)); goto error1; } - ASSERT(size >= sizeof(*channel)); + spice_assert(size >= sizeof(*channel)); channel = spice_malloc0(size); channel->refs = 1; channel->parser = spice_get_client_channel_parser(channel_id, NULL); @@ -960,7 +960,7 @@ static SndChannel *__new_channel(SndWorker *worker, int size, uint32_t channel_i stream->watch = core->watch_add(stream->socket, SPICE_WATCH_EVENT_READ, snd_event, channel); if (stream->watch == NULL) { - red_printf("watch_add failed, %s", strerror(errno)); + spice_printerr("watch_add failed, %s", strerror(errno)); goto error2; } @@ -989,13 +989,13 @@ static void snd_disconnect_channel_client(RedChannelClient *rcc) { SndWorker *worker; - ASSERT(rcc->channel); - ASSERT(rcc->channel->data); + spice_assert(rcc->channel); + spice_assert(rcc->channel->data); worker = (SndWorker *)rcc->channel->data; - ASSERT(worker->connection->channel_client == rcc); + spice_assert(worker->connection->channel_client == rcc); snd_disconnect_channel(worker->connection); - ASSERT(worker->connection == NULL); + spice_assert(worker->connection == NULL); } static void snd_set_command(SndChannel *channel, uint32_t command) @@ -1046,7 +1046,7 @@ SPICE_GNUC_VISIBLE void spice_server_playback_start(SpicePlaybackInstance *sin) sin->st->worker.active = 1; if (!channel) return; - ASSERT(!playback_channel->base.active); + spice_assert(!playback_channel->base.active); reds_disable_mm_timer(); playback_channel->base.active = TRUE; if (!playback_channel->base.client_active) { @@ -1065,7 +1065,7 @@ SPICE_GNUC_VISIBLE void spice_server_playback_stop(SpicePlaybackInstance *sin) sin->st->worker.active = 0; if (!channel) return; - ASSERT(playback_channel->base.active); + spice_assert(playback_channel->base.active); reds_enable_mm_timer(); playback_channel->base.active = FALSE; if (playback_channel->base.client_active) { @@ -1076,7 +1076,7 @@ SPICE_GNUC_VISIBLE void spice_server_playback_stop(SpicePlaybackInstance *sin) playback_channel->base.command &= ~SND_PLAYBACK_PCM_MASK; if (playback_channel->pending_frame) { - ASSERT(!playback_channel->in_progress); + spice_assert(!playback_channel->in_progress); snd_playback_free_frame(playback_channel, playback_channel->pending_frame); playback_channel->pending_frame = NULL; @@ -1095,7 +1095,7 @@ SPICE_GNUC_VISIBLE void spice_server_playback_get_buffer(SpicePlaybackInstance * *num_samples = 0; return; } - ASSERT(playback_channel->base.active); + spice_assert(playback_channel->base.active); snd_channel_get(channel); *frame = playback_channel->free_frames->samples; @@ -1116,7 +1116,7 @@ SPICE_GNUC_VISIBLE void spice_server_playback_put_samples(SpicePlaybackInstance /* lost last reference, channel has been destroyed previously */ return; } - ASSERT(playback_channel->base.active); + spice_assert(playback_channel->base.active); if (playback_channel->pending_frame) { snd_playback_free_frame(playback_channel, playback_channel->pending_frame); @@ -1134,7 +1134,7 @@ static void on_new_playback_channel(SndWorker *worker) PlaybackChannel *playback_channel = SPICE_CONTAINEROF(worker->connection, PlaybackChannel, base); - ASSERT(playback_channel); + spice_assert(playback_channel); snd_set_command((SndChannel *)playback_channel, SND_PLAYBACK_MODE_MASK); if (!playback_channel->base.migrate && playback_channel->base.active) { @@ -1175,12 +1175,12 @@ static void snd_set_playback_peer(RedChannel *channel, RedClient *client, RedsSt if (!(celt_mode = celt051_mode_create(SPICE_INTERFACE_PLAYBACK_FREQ, SPICE_INTERFACE_PLAYBACK_CHAN, FRAME_SIZE, &celt_error))) { - red_printf("create celt mode failed %d", celt_error); + spice_printerr("create celt mode failed %d", celt_error); return; } if (!(celt_encoder = celt051_encoder_create(celt_mode))) { - red_printf("create celt encoder failed"); + spice_printerr("create celt encoder failed"); goto error_1; } @@ -1228,12 +1228,12 @@ static void snd_record_migrate_channel_client(RedChannelClient *rcc) { SndWorker *worker; - ASSERT(rcc->channel); - ASSERT(rcc->channel->data); + spice_assert(rcc->channel); + spice_assert(rcc->channel->data); worker = (SndWorker *)rcc->channel->data; if (worker->connection) { - ASSERT(worker->connection->channel_client == rcc); + spice_assert(worker->connection->channel_client == rcc); snd_set_command(worker->connection, SND_RECORD_MIGRATE_MASK); snd_record_send(worker->connection); } @@ -1279,7 +1279,7 @@ SPICE_GNUC_VISIBLE void spice_server_record_start(SpiceRecordInstance *sin) sin->st->worker.active = 1; if (!channel) return; - ASSERT(!record_channel->base.active); + spice_assert(!record_channel->base.active); record_channel->base.active = TRUE; record_channel->read_pos = record_channel->write_pos = 0; //todo: improve by //stream generation @@ -1299,7 +1299,7 @@ SPICE_GNUC_VISIBLE void spice_server_record_stop(SpiceRecordInstance *sin) sin->st->worker.active = 0; if (!channel) return; - ASSERT(record_channel->base.active); + spice_assert(record_channel->base.active); record_channel->base.active = FALSE; if (record_channel->base.client_active) { snd_set_command(&record_channel->base, SND_RECORD_CTRL_MASK); @@ -1320,7 +1320,7 @@ SPICE_GNUC_VISIBLE uint32_t spice_server_record_get_samples(SpiceRecordInstance if (!channel) return 0; - ASSERT(record_channel->base.active); + spice_assert(record_channel->base.active); if (record_channel->write_pos < RECORD_SAMPLES_SIZE / 2) { return 0; @@ -1350,7 +1350,7 @@ SPICE_GNUC_VISIBLE uint32_t spice_server_record_get_samples(SpiceRecordInstance static void on_new_record_channel(SndWorker *worker) { RecordChannel *record_channel = (RecordChannel *)worker->connection; - ASSERT(record_channel); + spice_assert(record_channel); snd_set_command((SndChannel *)record_channel, SND_RECORD_VOLUME_MASK); if (!record_channel->base.migrate) { @@ -1384,12 +1384,12 @@ static void snd_set_record_peer(RedChannel *channel, RedClient *client, RedsStre if (!(celt_mode = celt051_mode_create(SPICE_INTERFACE_RECORD_FREQ, SPICE_INTERFACE_RECORD_CHAN, FRAME_SIZE, &celt_error))) { - red_printf("create celt mode failed %d", celt_error); + spice_printerr("create celt mode failed %d", celt_error); return; } if (!(celt_decoder = celt051_decoder_create(celt_mode))) { - red_printf("create celt decoder failed"); + spice_printerr("create celt decoder failed"); goto error_1; } @@ -1431,12 +1431,12 @@ static void snd_playback_migrate_channel_client(RedChannelClient *rcc) { SndWorker *worker; - ASSERT(rcc->channel); - ASSERT(rcc->channel->data); + spice_assert(rcc->channel); + spice_assert(rcc->channel->data); worker = (SndWorker *)rcc->channel->data; if (worker->connection) { - ASSERT(worker->connection->channel_client == rcc); + spice_assert(worker->connection->channel_client == rcc); snd_set_command(worker->connection, SND_PLAYBACK_MIGRATE_MASK); snd_playback_send(worker->connection); } @@ -1458,7 +1458,7 @@ static void remove_worker(SndWorker *worker) } now = &(*now)->next; } - red_printf("not found"); + spice_printerr("not found"); } void snd_attach_playback(SpicePlaybackInstance *sin) @@ -1561,7 +1561,7 @@ void snd_set_playback_compression(int on) PlaybackChannel* playback = (PlaybackChannel*)now->connection; if (!red_channel_client_test_remote_cap(sndchannel->channel_client, SPICE_PLAYBACK_CAP_CELT_0_5_1)) { - ASSERT(playback->mode == SPICE_AUDIO_DATA_MODE_RAW); + spice_assert(playback->mode == SPICE_AUDIO_DATA_MODE_RAW); continue; } if (playback->mode != playback_compression) { diff --git a/server/spicevmc.c b/server/spicevmc.c index 18ae627..27123d4 100644 --- a/server/spicevmc.c +++ b/server/spicevmc.c @@ -93,7 +93,7 @@ static int spicevmc_red_channel_client_config_socket(RedChannelClient *rcc) if (setsockopt(stream->socket, IPPROTO_TCP, TCP_NODELAY, &delay_val, sizeof(delay_val)) != 0) { if (errno != ENOTSUP && errno != ENOPROTOOPT) { - red_printf("setsockopt failed, %s", strerror(errno)); + spice_printerr("setsockopt failed, %s", strerror(errno)); return FALSE; } } @@ -223,8 +223,8 @@ static void spicevmc_connect(RedChannel *channel, RedClient *client, sif = SPICE_CONTAINEROF(sin->base.sif, SpiceCharDeviceInterface, base); if (state->rcc) { - WARN("channel client %d:%d (%p) already connected, refusing second connection\n", - channel->type, channel->id, state->rcc); + spice_printerr("channel client %d:%d (%p) already connected, refusing second connection", + channel->type, channel->id, state->rcc); // TODO: notify client in advance about the in use channel using // SPICE_MSG_MAIN_CHANNEL_IN_USE (for example) reds_stream_free(stream); diff --git a/server/zlib_encoder.c b/server/zlib_encoder.c index c51466b..a3d2aa6 100644 --- a/server/zlib_encoder.c +++ b/server/zlib_encoder.c @@ -50,7 +50,7 @@ ZlibEncoder* zlib_encoder_create(ZlibEncoderUsrContext *usr, int level) z_ret = deflateInit(&enc->strm, level); enc->last_level = level; if (z_ret != Z_OK) { - red_printf("zlib error"); + spice_printerr("zlib error"); free(enc); return NULL; } @@ -76,7 +76,7 @@ int zlib_encode(ZlibEncoder *zlib, int level, int input_size, z_ret = deflateReset(&zlib->strm); if (z_ret != Z_OK) { - red_error("deflateReset failed"); + spice_error("deflateReset failed"); } zlib->strm.next_out = io_ptr; @@ -86,12 +86,12 @@ int zlib_encode(ZlibEncoder *zlib, int level, int input_size, if (zlib->strm.avail_out == 0) { zlib->strm.avail_out = zlib->usr->more_space(zlib->usr, &zlib->strm.next_out); if (zlib->strm.avail_out == 0) { - red_error("not enough space"); + spice_error("not enough space"); } } z_ret = deflateParams(&zlib->strm, level, Z_DEFAULT_STRATEGY); if (z_ret != Z_OK) { - red_error("deflateParams failed"); + spice_error("deflateParams failed"); } zlib->last_level = level; } @@ -100,14 +100,14 @@ int zlib_encode(ZlibEncoder *zlib, int level, int input_size, do { zlib->strm.avail_in = zlib->usr->more_input(zlib->usr, &zlib->strm.next_in); if (zlib->strm.avail_in <= 0) { - red_error("more input failed\n"); + spice_error("more input failed"); } enc_size += zlib->strm.avail_in; flush = (enc_size == input_size) ? Z_FINISH : Z_NO_FLUSH; while (1) { int deflate_size = zlib->strm.avail_out; z_ret = deflate(&zlib->strm, flush); - ASSERT(z_ret != Z_STREAM_ERROR); + spice_assert(z_ret != Z_STREAM_ERROR); out_size += deflate_size - zlib->strm.avail_out; if (zlib->strm.avail_out) { break; @@ -115,11 +115,11 @@ int zlib_encode(ZlibEncoder *zlib, int level, int input_size, zlib->strm.avail_out = zlib->usr->more_space(zlib->usr, &zlib->strm.next_out); if (zlib->strm.avail_out == 0) { - red_error("not enough space"); + spice_error("not enough space"); } } } while (flush != Z_FINISH); - ASSERT(z_ret == Z_STREAM_END); + spice_assert(z_ret == Z_STREAM_END); return out_size; } |