Philipp Hörist pushed to branch master at gajim / gajim

Commits:

1 changed file:

Changes:

  • gajim/common/modules/httpupload.py
    ... ... @@ -24,6 +24,7 @@
    24 24
     import io
    
    25 25
     from urllib.parse import urlparse
    
    26 26
     import mimetypes
    
    27
    +from collections import defaultdict
    
    27 28
     
    
    28 29
     from nbxmpp.errors import StanzaError
    
    29 30
     from nbxmpp.errors import MalformedStanzaError
    
    ... ... @@ -69,7 +70,7 @@ def __init__(self, con: types.Client) -> None:
    69 70
             self._session.props.user_agent = f'Gajim {app.version}'
    
    70 71
     
    
    71 72
             self._running_transfers: dict[
    
    72
    -            tuple[str, str], set[HTTPFileTransfer]] = {}
    
    73
    +            tuple[str, JID], set[HTTPFileTransfer]] = defaultdict(set)
    
    73 74
     
    
    74 75
         def _set_proxy_if_available(self) -> None:
    
    75 76
             proxy = get_account_proxy(self._account)
    
    ... ... @@ -102,7 +103,7 @@ def get_running_transfers(self,
    102 103
                                   contact: types.ChatContactT
    
    103 104
                                   ) -> Optional[set[HTTPFileTransfer]]:
    
    104 105
     
    
    105
    -        return self._running_transfers.get((contact.account, str(contact.jid)))
    
    106
    +        return self._running_transfers.get((contact.account, contact.jid))
    
    106 107
     
    
    107 108
         def make_transfer(self,
    
    108 109
                           path: str,
    
    ... ... @@ -148,22 +149,16 @@ def make_transfer(self,
    148 149
                                         encryption,
    
    149 150
                                         groupchat)
    
    150 151
     
    
    151
    -        running_transfers = self._running_transfers.get(
    
    152
    -            (contact.account, str(contact.jid)))
    
    153
    -        if running_transfers is None:
    
    154
    -            self._running_transfers[
    
    155
    -                (contact.account, str(contact.jid))] = {transfer}
    
    156
    -        else:
    
    157
    -            running_transfers.add(transfer)
    
    152
    +        key = (contact.account, contact.jid)
    
    153
    +        self._running_transfers[key].add(transfer)
    
    158 154
     
    
    159 155
             return transfer
    
    160 156
     
    
    161 157
         def cancel_transfer(self, transfer: HTTPFileTransfer) -> None:
    
    162 158
             transfer.set_cancelled()
    
    163
    -        transfer_set = self._running_transfers.get(
    
    164
    -            (transfer.account, str(transfer.contact.jid)))
    
    165
    -        if transfer_set is not None:
    
    166
    -            transfer_set.discard(transfer)
    
    159
    +
    
    160
    +        key = (transfer.account, transfer.contact.jid)
    
    161
    +        self._running_transfers[key].discard(transfer)
    
    167 162
     
    
    168 163
             message = self._queued_messages.get(id(transfer))
    
    169 164
             if message is None:
    
    ... ... @@ -285,12 +280,11 @@ def _on_finish(self,
    285 280
                        message: Soup.Message,
    
    286 281
                        transfer: HTTPFileTransfer
    
    287 282
                        ) -> None:
    
    283
    +
    
    288 284
             self._queued_messages.pop(id(transfer), None)
    
    289 285
     
    
    290
    -        transfer_set = self._running_transfers.get(
    
    291
    -            (transfer.account, str(transfer.contact.jid)))
    
    292
    -        if transfer_set is not None:
    
    293
    -            transfer_set.discard(transfer)
    
    286
    +        key = (transfer.account, transfer.contact.jid)
    
    287
    +        self._running_transfers[key].discard(transfer)
    
    294 288
     
    
    295 289
             if message.props.status_code == Soup.Status.CANCELLED:
    
    296 290
                 self._log.info('Upload cancelled')