Skip to content
This repository has been archived by the owner on Jan 28, 2021. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
(Tango 9.3.1rc potential crash when an event is pushed at the same time as an
event (re)subscription occurs)
  • Loading branch information
bourtemb committed Sep 10, 2018
1 parent 003074e commit 9d95cbf
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 18 deletions.
1 change: 1 addition & 0 deletions RELEASE_NOTES
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
4. Fix some event compatibility issues with device server <= Tango 8 (#456)
5. Fix event field in EventData structure passed to user's callback (broken in Tango 9.3.0 and 9.3.1)
6. Fix attribute name in EventData structure passed to user's callback for Attribute Config events
7. Fix a bug occurring when an event is pushed at the same time as an event (re)subscription occurs (#484)

9.3.1
=====
Expand Down
30 changes: 12 additions & 18 deletions cppapi/server/zmqeventsupplier.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1046,9 +1046,8 @@ void ZmqEventSupplier::push_event(DeviceImpl *device_impl,string event_type,
string loc_obj_name(obj_name);
transform(loc_obj_name.begin(), loc_obj_name.end(), loc_obj_name.begin(), ::tolower);

create_full_event_name(device_impl, event_type, loc_obj_name, intr_change);

ctr_event_name = ctr_event_name + local_event_type;
event_name = create_full_event_name(device_impl, event_type, loc_obj_name, intr_change);
ctr_event_name = create_full_event_name(device_impl, local_event_type, loc_obj_name, intr_change);

//
// Create zmq messages
Expand Down Expand Up @@ -1568,32 +1567,27 @@ ZmqEventSupplier::create_full_event_name(DeviceImpl *device_impl,
const string &obj_name_lower,
bool intr_change)
{
event_name = fqdn_prefix;
string full_event_name = fqdn_prefix;

int size = event_name.size();
if (event_name[size - 1] == '#')
int size = full_event_name.size();
if (full_event_name[size - 1] == '#')
{
event_name.erase(size - 1);
full_event_name.erase(size - 1);
}

event_name = event_name + device_impl->get_name_lower();
full_event_name = full_event_name + device_impl->get_name_lower();
if (intr_change == false)
{
event_name = event_name + '/' + obj_name_lower;
full_event_name = full_event_name + '/' + obj_name_lower;
}
if (Util::_FileDb == true || Util::_UseDb == false)
{
event_name = event_name + MODIFIER_DBASE_NO;
full_event_name = full_event_name + MODIFIER_DBASE_NO;
}
event_name = event_name + '.';

//this field is in push_event
//TODO remove this field and replace with full_event_name
ctr_event_name = event_name;

event_name = event_name + event_type;
full_event_name = full_event_name + '.';
full_event_name = full_event_name + event_type;

return event_name;
return full_event_name;
}

//+------------------------------------------------------------------------------------------------------------------
Expand Down

0 comments on commit 9d95cbf

Please sign in to comment.