fix file transfer,
add log messages for zeroconf, refresh name changes of roster items (on resolve)
This commit is contained in:
parent
341e88864c
commit
f787d2c1ad
|
@ -53,7 +53,7 @@ class ZeroconfListener(IdleObject):
|
||||||
self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||||
self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
|
self._serv.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
|
||||||
self._serv.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
|
self._serv.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
|
||||||
# will fail when port as busy, or we don't have rights to bind
|
# will fail when port is busy, or we don't have rights to bind
|
||||||
try:
|
try:
|
||||||
self._serv.bind(('0.0.0.0', self.port))
|
self._serv.bind(('0.0.0.0', self.port))
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
|
@ -500,7 +500,6 @@ class ClientZeroconf:
|
||||||
BindPortError(port)
|
BindPortError(port)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def getRoster(self):
|
def getRoster(self):
|
||||||
return self.roster.getRoster()
|
return self.roster.getRoster()
|
||||||
|
|
||||||
|
|
|
@ -149,7 +149,7 @@ class ConnectionBytestream:
|
||||||
except socket.gaierror:
|
except socket.gaierror:
|
||||||
self.dispatch('ERROR', (_('Wrong host'), _('The host you configured as the ft_override_host_to_send advanced option is not valid, so ignored.')))
|
self.dispatch('ERROR', (_('Wrong host'), _('The host you configured as the ft_override_host_to_send advanced option is not valid, so ignored.')))
|
||||||
ft_override_host_to_send = self.peerhost[0]
|
ft_override_host_to_send = self.peerhost[0]
|
||||||
listener = gajim.socks5queue.start_listener(self.peerhost[0], port,
|
listener = gajim.socks5queue.start_listener(port,
|
||||||
sha_str, self._result_socks5_sid, file_props['sid'])
|
sha_str, self._result_socks5_sid, file_props['sid'])
|
||||||
if listener == None:
|
if listener == None:
|
||||||
file_props['error'] = -5
|
file_props['error'] = -5
|
||||||
|
|
|
@ -188,11 +188,10 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf):
|
||||||
self.zeroconf.resolve_all()
|
self.zeroconf.resolve_all()
|
||||||
diffs = self.roster.getDiffs()
|
diffs = self.roster.getDiffs()
|
||||||
for key in diffs:
|
for key in diffs:
|
||||||
print key
|
|
||||||
print self.roster.getStatus(key)
|
|
||||||
print self.roster.getMessage(key),
|
|
||||||
self.roster.setItem(key)
|
self.roster.setItem(key)
|
||||||
|
self.dispatch('ROSTER_INFO', (key, self.roster.getName(key), 'both', 'no', self.roster.getGroups(key)))
|
||||||
self.dispatch('NOTIFY', (key, self.roster.getStatus(key), self.roster.getMessage(key), 'local', 0, None, 0))
|
self.dispatch('NOTIFY', (key, self.roster.getStatus(key), self.roster.getMessage(key), 'local', 0, None, 0))
|
||||||
|
#XXX open chat windows don't get refreshed (full name), add that
|
||||||
return self.call_resolve_timeout
|
return self.call_resolve_timeout
|
||||||
|
|
||||||
# callbacks called from zeroconf
|
# callbacks called from zeroconf
|
||||||
|
@ -243,9 +242,9 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf):
|
||||||
|
|
||||||
self.connected = STATUS_LIST.index(show)
|
self.connected = STATUS_LIST.index(show)
|
||||||
|
|
||||||
# refresh all contacts data every second
|
# refresh all contacts data every five seconds
|
||||||
self.call_resolve_timeout = True
|
self.call_resolve_timeout = True
|
||||||
gobject.timeout_add(10000, self._on_resolve_timeout)
|
gobject.timeout_add(5000, self._on_resolve_timeout)
|
||||||
else:
|
else:
|
||||||
self.dispatch('STATUS', 'offline')
|
self.dispatch('STATUS', 'offline')
|
||||||
self.status = 'offline'
|
self.status = 'offline'
|
||||||
|
@ -326,8 +325,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf):
|
||||||
(_('Could not change status of account "%s"') % self.name,
|
(_('Could not change status of account "%s"') % self.name,
|
||||||
_('Please check if avahi-daemon is running.')))
|
_('Please check if avahi-daemon is running.')))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def get_status(self):
|
def get_status(self):
|
||||||
return STATUS_LIST[self.connected]
|
return STATUS_LIST[self.connected]
|
||||||
|
|
||||||
|
@ -399,7 +396,6 @@ class ConnectionZeroconf(ConnectionHandlersZeroconf):
|
||||||
else:
|
else:
|
||||||
kind = 'single_msg_sent'
|
kind = 'single_msg_sent'
|
||||||
gajim.logger.write(kind, jid, log_msg)
|
gajim.logger.write(kind, jid, log_msg)
|
||||||
#~ self.zeroconf.send_message(jid, msgtxt, type)
|
|
||||||
|
|
||||||
self.dispatch('MSGSENT', (jid, msg, keyID))
|
self.dispatch('MSGSENT', (jid, msg, keyID))
|
||||||
|
|
||||||
|
|
|
@ -115,13 +115,13 @@ class Roster:
|
||||||
|
|
||||||
def getGroups(self, jid):
|
def getGroups(self, jid):
|
||||||
return self._data[jid]['groups']
|
return self._data[jid]['groups']
|
||||||
|
|
||||||
def getName(self, jid):
|
def getName(self, jid):
|
||||||
if self._data.has_key(jid):
|
if self._data.has_key(jid):
|
||||||
return self._data[jid]['name']
|
return self._data[jid]['name']
|
||||||
|
|
||||||
def getStatus(self, jid):
|
def getStatus(self, jid):
|
||||||
if self._data.has_key(jid):
|
if self._data.has_key(jid):
|
||||||
print 'roster: getStatus: %s' % self._data[jid]['status']
|
|
||||||
return self._data[jid]['status']
|
return self._data[jid]['status']
|
||||||
|
|
||||||
def getMessage(self, jid):
|
def getMessage(self, jid):
|
||||||
|
|
|
@ -21,7 +21,7 @@ from common import xmpp
|
||||||
try:
|
try:
|
||||||
import avahi, gobject, dbus
|
import avahi, gobject, dbus
|
||||||
except ImportError:
|
except ImportError:
|
||||||
gajim.log.debug("Error: python-avahi and python-dbus need to be installed. No zeroconf support.")
|
gajim.log.debug('Error: python-avahi and python-dbus need to be installed. No zeroconf support.')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import dbus.glib
|
import dbus.glib
|
||||||
|
@ -71,7 +71,7 @@ class Zeroconf:
|
||||||
self.disconnected_CB()
|
self.disconnected_CB()
|
||||||
|
|
||||||
def new_service_callback(self, interface, protocol, name, stype, domain, flags):
|
def new_service_callback(self, interface, protocol, name, stype, domain, flags):
|
||||||
print "Found service '%s' in domain '%s' on %i.%i." % (name, domain, interface, protocol)
|
gajim.log.debug('Found service %s in domain %s on %i.%i.' % (name, domain, interface, protocol))
|
||||||
if not self.connected:
|
if not self.connected:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ class Zeroconf:
|
||||||
reply_handler=self.service_resolved_callback, error_handler=self.error_callback)
|
reply_handler=self.service_resolved_callback, error_handler=self.error_callback)
|
||||||
|
|
||||||
def remove_service_callback(self, interface, protocol, name, stype, domain, flags):
|
def remove_service_callback(self, interface, protocol, name, stype, domain, flags):
|
||||||
print "Service '%s' in domain '%s' on %i.%i disappeared." % (name, domain, interface, protocol)
|
gajim.log.debug('Service %s in domain %s on %i.%i disappeared.' % (name, domain, interface, protocol))
|
||||||
#if not self.connected:
|
#if not self.connected:
|
||||||
# return
|
# return
|
||||||
if name != self.name:
|
if name != self.name:
|
||||||
|
@ -121,8 +121,8 @@ class Zeroconf:
|
||||||
return items
|
return items
|
||||||
|
|
||||||
def service_resolved_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags):
|
def service_resolved_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags):
|
||||||
print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol)
|
gajim.log.debug('Service data for service %s in domain %s on %i.%i:' % (name, domain, interface, protocol))
|
||||||
# print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, avahi.txt_array_to_string_array(txt))
|
gajim.log.debug('Host %s (%s), port %i, TXT data: %s' % (host, address, port, avahi.txt_array_to_string_array(txt)))
|
||||||
if not self.connected:
|
if not self.connected:
|
||||||
return
|
return
|
||||||
bare_name = name
|
bare_name = name
|
||||||
|
@ -144,8 +144,6 @@ class Zeroconf:
|
||||||
|
|
||||||
# different handler when resolving all contacts
|
# different handler when resolving all contacts
|
||||||
def service_resolved_all_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags):
|
def service_resolved_all_callback(self, interface, protocol, name, stype, domain, host, aprotocol, address, port, txt, flags):
|
||||||
# print "Service data for service '%s' in domain '%s' on %i.%i:" % (name, domain, interface, protocol)
|
|
||||||
# print "\tHost %s (%s), port %i, TXT data: %s" % (host, address, port, str(avahi.txt_array_to_string_array(txt)))
|
|
||||||
if not self.connected:
|
if not self.connected:
|
||||||
return
|
return
|
||||||
bare_name = name
|
bare_name = name
|
||||||
|
@ -154,16 +152,13 @@ class Zeroconf:
|
||||||
self.contacts[name] = (name, domain, interface, protocol, host, address, port, bare_name, txt)
|
self.contacts[name] = (name, domain, interface, protocol, host, address, port, bare_name, txt)
|
||||||
|
|
||||||
def service_added_callback(self):
|
def service_added_callback(self):
|
||||||
print 'Service successfully added'
|
gajim.log.debug('Service successfully added')
|
||||||
pass
|
|
||||||
|
|
||||||
def service_committed_callback(self):
|
def service_committed_callback(self):
|
||||||
print 'Service successfully committed'
|
gajim.log.debug('Service successfully committed')
|
||||||
pass
|
|
||||||
|
|
||||||
def service_updated_callback(self):
|
def service_updated_callback(self):
|
||||||
print 'Service successfully updated'
|
gajim.log.debug('Service successfully updated')
|
||||||
pass
|
|
||||||
|
|
||||||
def service_add_fail_callback(self, err):
|
def service_add_fail_callback(self, err):
|
||||||
gajim.log.debug('Error while adding service. %s' % str(err))
|
gajim.log.debug('Error while adding service. %s' % str(err))
|
||||||
|
@ -222,7 +217,7 @@ class Zeroconf:
|
||||||
|
|
||||||
self.txt = txt
|
self.txt = txt
|
||||||
|
|
||||||
# print "Publishing service '%s' of type %s" % (self.name, self.stype)
|
gajim.log.debug('Publishing service %s of type %s' % (self.name, self.stype))
|
||||||
self.entrygroup.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype, '', '', self.port, avahi.dict_to_txt_array(self.txt), reply_handler=self.service_added_callback, error_handler=self.service_add_fail_callback)
|
self.entrygroup.AddService(avahi.IF_UNSPEC, avahi.PROTO_UNSPEC, dbus.UInt32(0), self.name, self.stype, '', '', self.port, avahi.dict_to_txt_array(self.txt), reply_handler=self.service_added_callback, error_handler=self.service_add_fail_callback)
|
||||||
self.entrygroup.Commit(reply_handler=self.service_committed_callback,
|
self.entrygroup.Commit(reply_handler=self.service_committed_callback,
|
||||||
error_handler=self.entrygroup_commit_error_CB)
|
error_handler=self.entrygroup_commit_error_CB)
|
||||||
|
@ -256,7 +251,7 @@ class Zeroconf:
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
except dbus.dbus_bindings.DBusException, e:
|
except dbus.dbus_bindings.DBusException, e:
|
||||||
print "zeroconf.py: Can't remove service, avahi daemon not running?"
|
gajim.log.debug("Can't remove service. That should not happen")
|
||||||
|
|
||||||
def browse_domain(self, interface, protocol, domain):
|
def browse_domain(self, interface, protocol, domain):
|
||||||
self.new_service_type(interface, protocol, self.stype, domain, '')
|
self.new_service_type(interface, protocol, self.stype, domain, '')
|
||||||
|
|
Loading…
Reference in New Issue