diff options
| author | Mike Lockwood <lockwood%android.com@gtempaccount.com> | 2011-04-06 07:25:31 -0700 |
|---|---|---|
| committer | Android Code Review <code-review@android.com> | 2011-04-06 07:25:31 -0700 |
| commit | d37e0840d75ef133083181f9f95dff9aa46a1b16 (patch) | |
| tree | cb01ae3746f135bef7de3f47cd26f4549aedb55d | |
| parent | 7c556549079dbcc3f6f7ef4376978cd8c598aa62 (diff) | |
| parent | e994f18c53673cac42ed45ccb3d427bd40000948 (diff) | |
| download | system_core-d37e0840d75ef133083181f9f95dff9aa46a1b16.zip system_core-d37e0840d75ef133083181f9f95dff9aa46a1b16.tar.gz system_core-d37e0840d75ef133083181f9f95dff9aa46a1b16.tar.bz2 | |
Merge "In serial, skip over port as well if numbers found after colon."
| -rw-r--r-- | adb/sockets.c | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/adb/sockets.c b/adb/sockets.c index 43925e4..aa4d5fc 100644 --- a/adb/sockets.c +++ b/adb/sockets.c @@ -569,6 +569,32 @@ unsigned unhex(unsigned char *s, int len) return n; } +/* skip_host_serial return the position in a string + skipping over the 'serial' parameter in the ADB protocol, + where parameter string may be a host:port string containing + the protocol delimiter (colon). */ +char *skip_host_serial(char *service) { + char *first_colon, *serial_end; + + first_colon = strchr(service, ':'); + if (!first_colon) { + /* No colon in service string. */ + return NULL; + } + serial_end = first_colon; + if (isdigit(serial_end[1])) { + serial_end++; + while ((*serial_end) && isdigit(*serial_end)) { + serial_end++; + } + if ((*serial_end) != ':') { + // Something other than numbers was found, reset the end. + serial_end = first_colon; + } + } + return serial_end; +} + static int smart_socket_enqueue(asocket *s, apacket *p) { unsigned len; @@ -624,8 +650,8 @@ static int smart_socket_enqueue(asocket *s, apacket *p) char* serial_end; service += strlen("host-serial:"); - // serial number should follow "host:" - serial_end = strchr(service, ':'); + // serial number should follow "host:" and could be a host:port string. + serial_end = skip_host_serial(service); if (serial_end) { *serial_end = 0; // terminate string serial = service; |
