Merge "In serial, skip over port as well if numbers found after colon."

This commit is contained in:
Mike Lockwood 2011-03-16 09:59:03 -07:00 committed by Android (Google) Code Review
commit b51326351a

View file

@ -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;