old_contents: import logging
  
  from sugar.chat.GroupChat import GroupChat
  
  class ActivityChat(GroupChat):
  	SERVICE_TYPE = "_olpc_activity_chat._udp"
  
  	def __init__(self, activity):
  		GroupChat.__init__(self)
  		self._chat_service = None
  
  		self._activity = activity
  		self._pservice.connect('service-appeared', self._service_appeared_cb)
  		self._pservice.track_service_type(ActivityChat.SERVICE_TYPE)
  
  		# Find an existing activity chat to latch onto
  		service = self._pservice.get_activity_service(activity, ActivityChat.SERVICE_TYPE)
  		if service is not None:
  			self._service_appeared_cb(self._pservice, None, service)
  
  	def _service_appeared_cb(self, pservice, buddy, service):
  		if service.get_activity_id() != self._activity.get_id():
  			return
  		if service.get_type() != ActivityChat.SERVICE_TYPE:
  			return
  		if buddy and buddy.is_owner():
  			return
  		if self._chat_service:
  			return
  
  		logging.debug('Activity chat service appeared, setup the stream.')
  		# Ok, there's an existing chat service that we copy
  		# parameters and such from
  		addr = service.get_address()
  		port = service.get_port()
  		self._chat_service = self._pservice.share_activity(self._activity,
  				stype=ActivityChat.SERVICE_TYPE, properties=None,
  				address=addr, port=port)
  		self._setup_stream(self._chat_service)
  
  	def publish(self):
  		"""Only called when we publish the activity this chat is tied to."""
  		self._chat_service = self._pservice.share_activity(self._activity,
  				stype=ActivityChat.SERVICE_TYPE)
  
new_contents: import logging
  
  from sugar.chat.GroupChat import GroupChat
  
  class ActivityChat(GroupChat):
  	SERVICE_TYPE = "_olpc_activity_chat._udp"
  
  	def __init__(self, activity):
  		GroupChat.__init__(self)
  		self._chat_service = None
  
  		self._activity = activity
  		self._pservice.connect('service-appeared', self._service_appeared_cb)
  		self._pservice.track_service_type(ActivityChat.SERVICE_TYPE)
  
  		# Find an existing activity chat to latch onto
  		service = self._pservice.get_activity_service(activity, ActivityChat.SERVICE_TYPE)
  		if service is not None:
  			self._service_appeared_cb(self._pservice, None, service)
  
  	def _service_appeared_cb(self, pservice, buddy, service):
  		if service.get_activity_id() != self._activity.get_id():
  			return
  		if service.get_type() != ActivityChat.SERVICE_TYPE:
  			return
  		if self._chat_service:
  			return
  
  		logging.debug('Activity chat service appeared, setup the stream.')
  		# Ok, there's an existing chat service that we copy
  		# parameters and such from
  		addr = service.get_address()
  		port = service.get_port()
  		self._chat_service = self._pservice.share_activity(self._activity,
  				stype=ActivityChat.SERVICE_TYPE, properties=None,
  				address=addr, port=port)
  		self._setup_stream(self._chat_service)
  
  	def publish(self):
  		"""Only called when we publish the activity this chat is tied to."""
  		self._chat_service = self._pservice.share_activity(self._activity,
  				stype=ActivityChat.SERVICE_TYPE)
  		self._setup_stream(self._chat_service)
  
subject: Initialize the stream also when publishing