| Index: net/socket/socks_client_socket.cc
|
| ===================================================================
|
| --- net/socket/socks_client_socket.cc (revision 38060)
|
| +++ net/socket/socks_client_socket.cc (working copy)
|
| @@ -355,8 +355,10 @@
|
| if (result == 0)
|
| return ERR_CONNECTION_CLOSED;
|
|
|
| - if (bytes_received_ + result > kReadHeaderSize)
|
| - return ERR_INVALID_RESPONSE;
|
| + if (bytes_received_ + result > kReadHeaderSize) {
|
| + // TODO(eroman): Describe failure in LoadLog.
|
| + return ERR_SOCKS_CONNECTION_FAILED;
|
| + }
|
|
|
| buffer_.append(handshake_buf_->data(), result);
|
| bytes_received_ += result;
|
| @@ -370,28 +372,27 @@
|
|
|
| if (response->reserved_null != 0x00) {
|
| LOG(ERROR) << "Unknown response from SOCKS server.";
|
| - return ERR_INVALID_RESPONSE;
|
| + return ERR_SOCKS_CONNECTION_FAILED;
|
| }
|
|
|
| - // TODO(arindam): Add SOCKS specific failure codes in net_error_list.h
|
| switch (response->code) {
|
| case kServerResponseOk:
|
| completed_handshake_ = true;
|
| return OK;
|
| case kServerResponseRejected:
|
| LOG(ERROR) << "SOCKS request rejected or failed";
|
| - return ERR_FAILED;
|
| + return ERR_SOCKS_CONNECTION_FAILED;
|
| case kServerResponseNotReachable:
|
| LOG(ERROR) << "SOCKS request failed because client is not running "
|
| << "identd (or not reachable from the server)";
|
| - return ERR_NAME_NOT_RESOLVED;
|
| + return ERR_SOCKS_CONNECTION_HOST_UNREACHABLE;
|
| case kServerResponseMismatchedUserId:
|
| LOG(ERROR) << "SOCKS request failed because client's identd could "
|
| << "not confirm the user ID string in the request";
|
| - return ERR_FAILED;
|
| + return ERR_SOCKS_CONNECTION_FAILED;
|
| default:
|
| LOG(ERROR) << "SOCKS server sent unknown response";
|
| - return ERR_INVALID_RESPONSE;
|
| + return ERR_SOCKS_CONNECTION_FAILED;
|
| }
|
|
|
| // Note: we ignore the last 6 bytes as specified by the SOCKS protocol
|
|
|