extern int slave_rpc_async_request(struct slave_node *slave, const char *pkgname, struct packet *packet, void (*ret_cb)(struct slave_node *slave, const struct packet *packet, void *data), void *data, int urgent);
extern int slave_rpc_request_only(struct slave_node *slave, const char *pkgname, struct packet *packet, int urgent);
-extern int slave_rpc_update_handle(struct slave_node *slave, int handle, int delete_pending_packet);
+extern int slave_rpc_update_handle(struct slave_node *slave, int handle, int delete_pended_created_packet);
extern int slave_rpc_ping(struct slave_node *slave);
extern void slave_rpc_request_update(const char *pkgname, const char *id, const char *cluster, const char *category, const char *content, int force);
extern int slave_rpc_handle(struct slave_node *slave);
return WIDGET_ERROR_NONE;
}
-HAPI int slave_rpc_update_handle(struct slave_node *slave, int handle, int delete_pending_packet)
+HAPI int slave_rpc_update_handle(struct slave_node *slave, int handle, int delete_pended_create_packet)
{
struct slave_rpc *rpc;
struct command *command;
slave_activated(slave);
EINA_LIST_FREE(rpc->pending_list, command) {
- if (delete_pending_packet) {
- destroy_command(command);
+ if (delete_pended_create_packet) {
+ const char *cmd;
+
+ cmd = packet_command(command->packet);
+ if (cmd[0] == PACKET_CMD_INT_TAG) {
+ int cmd_idx;
+
+ cmd_idx = *((int *)cmd);
+ if (cmd_idx == CMD_CREATED) {
+ destroy_command(command);
+ } else {
+ push_command(command);
+ }
+ } else if (!strcmp(cmd, CMD_STR_CREATED)) {
+ destroy_command(command);
+ } else {
+ push_command(command);
+ }
} else {
push_command(command);
}