After the code block I quoted, there is this line: event->rvnt_id = stuff->p_event_rid;
Which makes a already reused event to be reassigned another id. Later, engine calls the callback and remote respond both events with the same id. Adriano Em 09/04/2017 16:33, Adriano dos Santos Fernandes escreveu: > Vlad, > > I think have found the problem in server. > > Look at this: > > -------- > ISC_STATUS rem_port::que_events(P_EVENT * stuff, PACKET* sendL) > { > ... > > Rvnt* event; > for (event = rdb->rdb_events; event; event = event->rvnt_next) > { > if (!event->rvnt_iface) > { > event->rvnt_destroyed = 0; > break; > } > } > > if (!event) > { > event = FB_NEW Rvnt; > #ifdef DEBUG_REMOTE_MEMORY > printf("que_events(server) allocate event %x\n", > event); > #endif > event->rvnt_next = rdb->rdb_events; > rdb->rdb_events = event; > event->rvnt_callback = FB_NEW Callback(rdb, event); > } > -------- > > This code runs concurrently and find the same empty slot for > simultaneous events being registered. > > > Adriano > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > Firebird-Devel mailing list, web interface at > https://lists.sourceforge.net/lists/listinfo/firebird-devel > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel