/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/smart/medium.py

  • Committer: Robert Collins
  • Date: 2008-02-13 03:30:01 UTC
  • mfrom: (3221 +trunk)
  • mto: This revision was merged to the branch mainline in revision 3224.
  • Revision ID: robertc@robertcollins.net-20080213033001-rw70ul0zb02ph856
Merge to fix conflicts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
 
31
31
from bzrlib import (
32
32
    errors,
 
33
    osutils,
33
34
    symbol_versioning,
34
35
    )
35
36
from bzrlib.smart.protocol import (
37
38
    SmartServerRequestProtocolOne,
38
39
    SmartServerRequestProtocolTwo,
39
40
    )
40
 
 
41
 
try:
42
 
    from bzrlib.transport import ssh
43
 
except errors.ParamikoNotPresent:
44
 
    # no paramiko.  SmartSSHClientMedium will break.
45
 
    pass
 
41
from bzrlib.transport import ssh
46
42
 
47
43
 
48
44
class SmartServerStreamMedium(object):
182
178
        self.finished = True
183
179
 
184
180
    def _write_out(self, bytes):
185
 
        self.socket.sendall(bytes)
 
181
        osutils.send_all(self.socket, bytes)
186
182
 
187
183
 
188
184
class SmartServerPipeStreamMedium(SmartServerStreamMedium):
362
358
            new_char = self.read_bytes(1)
363
359
            line += new_char
364
360
            if new_char == '':
365
 
                raise errors.SmartProtocolError(
366
 
                    'unexpected end of file reading from server')
 
361
                # end of file encountered reading from server
 
362
                raise errors.ConnectionReset(
 
363
                    "please check connectivity and permissions",
 
364
                    "(and try -Dhpss if further diagnosis is required)")
367
365
        return line
368
366
 
369
367
 
388
386
 
389
387
    def __init__(self):
390
388
        self._current_request = None
 
389
        # Be optimistic: we assume the remote end can accept new remote
 
390
        # requests until we get an error saying otherwise.  (1.2 adds some
 
391
        # requests that send bodies, which confuses older servers.)
 
392
        self._remote_is_at_least_1_2 = True
391
393
 
392
394
    def accept_bytes(self, bytes):
393
395
        self._accept_bytes(bytes)
510
512
        return self._read_from.read(count)
511
513
 
512
514
 
 
515
# Port 4155 is the default port for bzr://, registered with IANA.
 
516
BZR_DEFAULT_INTERFACE = '0.0.0.0'
 
517
BZR_DEFAULT_PORT = 4155
 
518
 
 
519
 
513
520
class SmartTCPClientMedium(SmartClientStreamMedium):
514
521
    """A client medium using TCP."""
515
522
    
524
531
    def _accept_bytes(self, bytes):
525
532
        """See SmartClientMedium.accept_bytes."""
526
533
        self._ensure_connection()
527
 
        self._socket.sendall(bytes)
 
534
        osutils.send_all(self._socket, bytes)
528
535
 
529
536
    def disconnect(self):
530
537
        """See SmartClientMedium.disconnect()."""
540
547
            return
541
548
        self._socket = socket.socket()
542
549
        self._socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
543
 
        result = self._socket.connect_ex((self._host, int(self._port)))
544
 
        if result:
 
550
        if self._port is None:
 
551
            port = BZR_DEFAULT_PORT
 
552
        else:
 
553
            port = int(self._port)
 
554
        try:
 
555
            self._socket.connect((self._host, port))
 
556
        except socket.error, err:
 
557
            # socket errors either have a (string) or (errno, string) as their
 
558
            # args.
 
559
            if type(err.args) is str:
 
560
                err_msg = err.args
 
561
            else:
 
562
                err_msg = err.args[1]
545
563
            raise errors.ConnectionError("failed to connect to %s:%d: %s" %
546
 
                    (self._host, self._port, os.strerror(result)))
 
564
                    (self._host, port, err_msg))
547
565
        self._connected = True
548
566
 
549
567
    def _flush(self):