summaryrefslogtreecommitdiffstats
path: root/adb/transport.c
Commit message (Collapse)AuthorAgeFilesLines
* adb: fix windows build after "forward --list" fix.JP Abgrall2014-03-061-1/+1
| | | | | | | | | | EWOULDBLOCK is not there on windows. It gets translated by the adb_write() wrapper into EGAIN. But the Linux one does not translate EWOULDBLOCK into EGAIN. Without EWOULDBLOCK, it works just fine. Change-Id: Ic293be392aa4364637428ea94ef87890ffa09b9b Signed-off-by: JP Abgrall <jpa@google.com>
* Fix adb forward --list when forwarding a lotSnild Dolkow2014-02-211-0/+4
| | | | | | | | | | | | | | | | | | | The list action had some problems with large numbers of forwards: * adb_query() limited replies to 1024 B (and the print was useless) * the reply header's length could overflow (also in other commands) * ...and the client had no way of detecting it * writex() didn't retry on EAGAIN ("Resource temporarily unavailable") This patch makes all "OKAY%04x" replies use a common function which checks the length and limits it to 0xffff. This means that the client can easily check for truncated replies. Before: forward --list starts failing at 15-30 forwards (depending on device serial and forward spec lengths). After: no problems with forward --list. Change-Id: Ie1e82c4d622f5c56e51abb26533ba17d40459914
* system/core 64-bit cleanup.Elliott Hughes2014-01-161-3/+3
| | | | | | | | | This cleans up most of the size-related problems in system/core. There are still a few changes needed for a clean 64-bit build, but they look like they might require changes to things like the fastboot protocol. Change-Id: I1560425a289fa158e13e2e3173cc3e71976f92c0
* adb: Handle adb connect in a threadBenoit Goby2013-04-251-7/+46
| | | | | | | | | adb connect calls connect() in the event loop. If you pass a wrong ip address or the server is slow to respond, this will block the event loop and you can't even kill the adb server with adb kill-server. Handle connect requests in a service thread instead. Change-Id: I2ee732869a3dc22a6d3b87cf8ac80acaa7790037
* adb: Add "unauthorized" connection stateBenoit Goby2013-01-151-0/+7
| | | | | | | Add a new connection state, so that devices, that require confirmation to allow adb, appear as "unauthorized" in the adb devices lists. Change-Id: Ib4264bc5736dedecf05bcf8e31896f4d7a91fad8
* am 2ca3e6b3: adb: Generalizing -s to take qualifiers.Scott Anderson2012-06-051-18/+104
|\ | | | | | | | | * commit '2ca3e6b35f79136418ebc32fef57580698dbd045': adb: Generalizing -s to take qualifiers.
| * adb: Generalizing -s to take qualifiers.Scott Anderson2012-06-051-18/+104
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to this change, -s could take either a serial number or a device path (e.g. "-s 01498B1F02015015" or "-s usb:1-4.2"). This change extends -s to also allow product, model or device names (e.g. "-s product:mysid"). These new qualifiers will only be available on devices that are running an adb daemon that provides properties in the connect message per Change-Id: I09200decde4facb8fc9b4056fdae910155f2bcb9 The product, model and device are derived from the ro.product.name, ro.product.model and ro.product.device properties respectively. They are prefixed with "product:", "model:" or "device:" as appropriate. In addition, any non-alphanumerics in the model are changed to underscores. If the -s parameter matches multiple devices, the result will be the same as when multiple devices are connected but no -d, -e or -s option is specified. In general, this means the user will get "error: more than one device". However for get-state, get-devpath and get-serialno, they will get "unknown". The format of "devices -l" was changed to list all of the qualifiers that are available. The following example output (with the last digits of the serial numbers replaced with X's) is with a Galaxy Prime with an older adb daemon and another Galaxy Prime and Galaxy S both with the enhanced adb daemons: List of devices attached 016B75D60A0060XX device usb:2-5 product:mysid model:Galaxy_Nexus device:toro 3731B535FAC200XX device usb:1-4.2 product:soju model:Nexus_S device:crespo 01498B1F020150XX device usb:1-4.1 Note that the serial number and state are now column oriented instead of tab delimited. After the serial number and state, all qualifiers are listed with each preceded by a space. The output of the original devices command (without -l) is unchanged. Change-Id: Iceeb2789874effc25a630d514a375d6f1889dc56 Signed-off-by: Scott Anderson <saa@android.com>
* | am e82c2db0: adb: Transmit key properties in banner of connect messageScott Anderson2012-06-051-0/+4
|\ \ | |/ | | | | | | * commit 'e82c2db05cae70a0490a1f84b7211ef42c329671': adb: Transmit key properties in banner of connect message
| * adb: Transmit key properties in banner of connect messageScott Anderson2012-06-051-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | protocol.txt says that the connect message should have three fields: <systemtype>:<serialno>:<banner> In reality, what is transmitted is simply: <systemtype>:: The serialno is obtained via other means so doesn't really need to be a part of the connect message. This change puts the ro.product.name, ro.product.model and ro.product.device properties in the <banner> for devices. Each property is terminated by a semicolon (;) with the key and value separated by an equals sign (=). Example message: device::ro.product.name=<prd>;ro.product.model=<mdl>;ro.product.device=<dev>; Making this change will enable the device list to provide more information to the user and to give the potential for being able to select which device to talk to with the -s option. Change-Id: I09200decde4facb8fc9b4056fdae910155f2bcb9 Signed-off-by: Scott Anderson <saa@android.com>
* | am 3608d832: adb: Fix two problems with device path implementation.Scott Anderson2012-06-011-3/+0
|\ \ | |/ | | | | | | * commit '3608d832425ca3a6d00c4040f3bb979c5aa49899': adb: Fix two problems with device path implementation.
| * adb: Fix two problems with device path implementation.Scott Anderson2012-05-311-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The commands that use "host-serial:<serial-number>:<request>" service did not handle "-s usb:<path>". The -s parameter is passed as the serial number in the protocol and then matched against either the serial number or device path. However, skip_host_serial() in sockets.c did not know about the usb: syntax, the serial number was parsed incorrectly. Before this change: $ adb -s usb:1-4.1 get-state error: unknown host service After: $ adb -s usb:1-4.1 get-state device Code was added in find_transport() in transport.c to match device paths, but find_transport() is only used for socket connections so matching device paths is not needed. Change-Id: I922cec963659dafadd0fbc8fa36dee3b55fe366c Signed-off-by: Scott Anderson <saa@android.com>
* | am 9526a788: Merge "adb: Add ability to specify device path" into ics-aahScott Anderson2012-05-011-4/+22
|\ \ | |/ | | | | | | * commit '9526a788a6bd528e14622404e8750bdcc147d15a': adb: Add ability to specify device path
| * adb: Add ability to specify device pathScott Anderson2012-04-201-4/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For manufacturing and testing, there is a need to talk to whatever device is connected to a given port on the host. This change modifies adb's "-s" option to take either a serial number or a device path. The device paths of the connected devices can be listed using "adb devices -l" whose output will resemble: List of devices attached 016B75D60A00600D usb:2-5 device 3031D0B2E71D00EC usb:1-4.3 device The second column lists the device paths. If the -l option is not given, the output from "adb devices" will be the same as it used to be (i.e. the paths will not be printed). The device path can also be obtained with the get-devpath command: $adb -s 3031D0B2E71D00EC get-devpath usb:1-4.3 Note that the format of the device paths are platform dependent. The example above is from Linux. On OS-X, the paths will be "usb:" followed by hex digits. For other platforms, the device paths will be printed as "????????????" and the -s option will not be able to select a device until someone implements the underlying functionality. Change-Id: I057d5d9f8c5bb72eddf5b8088aae110763f809d7 Signed-off-by: Scott Anderson <saa@android.com>
* | add "adb sideload" and sideload connection stateDoug Zongker2012-01-101-0/+1
|/ | | | | | | | | | Recovery will soon support a minimal implementation of adbd which will do nothing but accept downloads from the "adb sideload" command and install them. This is the client side command (mostly resurrected out of the old circa-2007 "adb recover" command) and the new connection state. Change-Id: I4f67b63f1b3b38d28c285d1278d46782679762a2
* adb: fix subprocess exit handling, oom adjust fixes, extra debugging.JP Abgrall2011-03-281-9/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | * Add support for correctly handling subprocess termination in shell service (b/3400254 b/3482112 b/2249397) - have a waitpid() track the subprocess, then notify the fdevent via a socket - force an eof on the pty master in fdevent's new subproc handler. - modify fdevent to force-read the pty after an exit. * Migrate the "shell:blabla" handling to "#if !ADB_HOST" sections, where it belongs. * Fix the race around OOM adjusting. - Do it in the child before exec() instead of the in the parent as the child could already have started or not (no /proc/pid/... yet). * Allow for multi-threaded D() invocations to not clobber each other. - Allow locks across object files. - Add lock within D() - Make sure sysdesp init (mutex init also) is called early. * Add some missing close(fd) calls - Match similar existing practices near dup2() * Add extra D() invocations related to FD handling. * Warn about using debugging as stderr/stdout is used for protocol. * Fix some errno handling and make D() correctly handle it. * Add new adb trace_mask: services. * Make fdevent_loop's handle BADFDs more gracefully (could occur some subproc closed its pts explicitely). * Remove obsolete commandline args reported in help. (b/3509092) Change-Id: I928287fdf4f1a86777e22ce105f9581685f46e35
* Revert "Fix adb hang when subprocess dies early."JP Abgrall2011-02-231-15/+9
| | | | | | | | This is for http://b/3482112 "adb interactions with device causing test harness failures". This reverts commit 69c5c4c45bd4f1575ae8bdba13795297be7deb8c. Change-Id: I630bf2e04d2ecf0223bd2af4e87136754ff880d3
* Fix adb hang when subprocess dies early.JP Abgrall2011-02-181-9/+15
| | | | | | | | | | | | | | | | | | | | | | | | * Handling of the subprocess and its FD. This fixes http://b/3400254 "Many bugreports getting hung at the end in monkey" - Start up a service thread that waits on the subprocess to terminate, then closes the FD associated with it. - Have the event handler select() with a timeout so that it can detect the closed FD. Select() with no timeout does not return when an FD is closed. - Have the event handler force a read on the closed FD to trigger the close sequence. - Migrate the "shell:blabla" handling to "#if !ADB_HOST" sections. * Fix the race around OOM adjusting. - Do it in the child before exec() instead of the in the parent as the child could already have started or not (no /proc/pid/... yet). * Allow for multi-threaded D() invocations to not clobber each other. - Allow locks across object files. - Add lock within D() * Add some missing close(fd) calls - Match similar existing practices near dup2() * Add extra D() invocations related to FD handling. * Warn about using debugging as stderr/stdout is used for protocol. Change-Id: Ie5c4a5e6bfbe3f22201adf5f9a205d32e069bf9d Signed-off-by: JP Abgrall <jpa@google.com>
* adb: improve debug traces readability.David 'Digit' Turner2011-01-061-92/+122
| | | | | | | This patch makes the traces easier to read. For example transports are displayed by name/serial instead of their hex address. Change-Id: I7e8df44ddbec19754d63d989bd56485998b4627b
* adb connect and disconnect improvements:Mike Lockwood2010-06-021-11/+39
| | | | | | | | Port number is now optional. Will use default port 5555 if not specified. "adb disconnect" with no additional arguments will disconnect all TCP devices. Change-Id: I7fc26528ed85e66a73b8f6254cea7bf83d98109f Signed-off-by: Mike Lockwood <lockwood@android.com>
* adb: Add "adb disconnect" command for disconnecting TCP/IP devices.Mike Lockwood2009-10-111-0/+32
| | | | | | | Also check that device is not already connected in "adb connect" Change-Id: I5f84b56b63d8c6932f23791cac319fd6bc39d36c Signed-off-by: Mike Lockwood <lockwood@android.com>
* adb: Improved support for running adb over TCP/IPMike Lockwood2009-08-241-2/+2
| | | | | | | | | | Added new commands: adb connect <host>:<port> (to connect to a device via TCP/IP) adb tcpip <port> (to restart adbd on the device to listen on TCP/IP) adb usb (to restart adbd on the device to listen USB) Signed-off-by: Mike Lockwood <lockwood@android.com>
* adb: print better error message when there are insufficient permissions for ↵Mike Lockwood2009-08-081-7/+5
| | | | | | | | | a device. Now, a command like "adb shell" will print "insufficient permissions for device" instead of "device not found" if adb does not have permissions to communicate with the device. Signed-off-by: Mike Lockwood <lockwood@android.com>
* adb: On Linux, detect USB devices for which adb does not have permissions to ↵Mike Lockwood2009-08-081-28/+54
| | | | | | | | | | | communicate with. adb devices will now list devices without adequate file system permissions in /dev/bus/usb as: List of devices attached ???????????? no permissions Signed-off-by: Mike Lockwood <lockwood@android.com>
* auto import from //depot/cupcake/@135843The Android Open Source Project2009-03-031-0/+958
|
* auto import from //depot/cupcake/@135843The Android Open Source Project2009-03-031-958/+0
|
* Initial ContributionThe Android Open Source Project2008-10-211-0/+958