141c141
<     def abort(self):
---
>     def abort(self, sharenums=None):
147c147,153
<         for writer in self.buckets.itervalues(): writer.abort()
---
>         if not sharenums:
>             sharenums = self.buckets.keys()
> 
>         for sharenum in sharenums:
>             if sharenum in self.buckets:
>                 self.buckets[sharenum].abort()
>                 del self.buckets[sharenum]
361a368,369
>                         for writer in self.use_peers:
>                             writer.abort(self.homeless_shares)
370,371c378,379
<                     raise UploadUnhappinessError("%s (%s)" % (msg,
<                                                  self._get_progress_message()))
---
>                     log.msg("server selection unsuccessful for %s: %s: %s: %s" % (self, msg, self._get_progress_message(), pretty_print_shnum_to_servers(merged)))
>                     return self._failed("%s (%s)" % (msg, self._get_progress_message()))
