112 lines
2.8 KiB
Java
112 lines
2.8 KiB
Java
package com.runjva.sourceforge.jsocks.protocol;
|
|
|
|
/**
|
|
* Exception thrown by various socks classes to indicate errors with protocol or
|
|
* unsuccessfull server responses.
|
|
*/
|
|
public class SocksException extends java.io.IOException {
|
|
/**
|
|
*
|
|
*/
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
/**
|
|
* Construct a SocksException with given errorcode.
|
|
* <p>
|
|
* Tries to look up message which corresponds to this error code.
|
|
*
|
|
* @param errCode
|
|
* Error code for this exception.
|
|
*/
|
|
public SocksException(int errCode) {
|
|
this.errCode = errCode;
|
|
lookupErrorString(errCode);
|
|
}
|
|
|
|
private void lookupErrorString(int errCode) {
|
|
if ((errCode >> 16) == 0) {
|
|
if (errCode <= serverReplyMessage.length) {
|
|
errString = serverReplyMessage[errCode];
|
|
} else {
|
|
errString = UNASSIGNED_ERROR_MESSAGE;
|
|
}
|
|
} else {
|
|
// Local error
|
|
errCode = (errCode >> 16) - 1;
|
|
if (errCode <= localErrorMessage.length) {
|
|
errString = localErrorMessage[errCode];
|
|
} else {
|
|
errString = UNASSIGNED_ERROR_MESSAGE;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Construct a SocksException with given error code, and a Throwable cause
|
|
*
|
|
* @param errCode
|
|
* @param t
|
|
* Nested exception for debugging purposes.
|
|
*/
|
|
public SocksException(int errCode, Throwable t) {
|
|
super(t); // Java 1.6+
|
|
this.errCode = errCode;
|
|
lookupErrorString(errCode);
|
|
}
|
|
|
|
/**
|
|
* Constructs a SocksException with given error code and message.
|
|
*
|
|
* @param errCode
|
|
* Error code.
|
|
* @param errString
|
|
* Error Message.
|
|
*/
|
|
public SocksException(int errCode, String errString) {
|
|
this.errCode = errCode;
|
|
this.errString = errString;
|
|
}
|
|
|
|
public SocksException(int errCode, String string, Throwable t) {
|
|
super(string, t); // Java 1.6+
|
|
this.errCode = errCode;
|
|
this.errString = string;
|
|
}
|
|
|
|
/**
|
|
* Get the error code associated with this exception.
|
|
*
|
|
* @return Error code associated with this exception.
|
|
*/
|
|
public int getErrorCode() {
|
|
return errCode;
|
|
}
|
|
|
|
/**
|
|
* Get human readable representation of this exception.
|
|
*
|
|
* @return String represntation of this exception.
|
|
*/
|
|
public String toString() {
|
|
return errString;
|
|
}
|
|
|
|
static final String UNASSIGNED_ERROR_MESSAGE = "Unknown error message";
|
|
|
|
static final String serverReplyMessage[] = { "Succeeded",
|
|
"General SOCKS server failure",
|
|
"Connection not allowed by ruleset", "Network unreachable",
|
|
"Host unreachable", "Connection refused", "TTL expired",
|
|
"Command not supported", "Address type not supported" };
|
|
|
|
static final String localErrorMessage[] = { "SOCKS server not specified",
|
|
"Unable to contact SOCKS server", "IO error",
|
|
"None of Authentication methods are supported",
|
|
"Authentication failed", "General SOCKS fault" };
|
|
|
|
String errString;
|
|
int errCode;
|
|
|
|
}// End of SocksException class
|
|
|