+ if (!msg)
+ goto out_msg;
+ r = sgp_group_add_friend(group, friend);
+ if (r)
+ goto out_add;
+ r = sgp_share(group, msg);
+ sgp_msg_destroy(msg);
+ sgp_group_destroy(group);
+ /* we must only destroy the friend after all group references
+ * are gone */
+ sgp_friend_destroy(friend);
+ return r;
+out_add:
+ sgp_msg_destroy(msg);
+out_msg:
+ sgp_group_destroy(group);
+out_group:
+ sgp_friend_destroy(friend);
+ return 1;