mirror of
https://github.com/gnh1201/caterpillar.git
synced 2025-09-07 18:31:10 +00:00
fix
This commit is contained in:
parent
ecf1628ee6
commit
2b5c8e6daf
|
@ -88,13 +88,16 @@ public class Worker {
|
||||||
|
|
||||||
private static readFromRemoteServer(String remoteAddress, int remotePort, String scheme, byte[] requestData, object _out, int bufferSize, String id) {
|
private static readFromRemoteServer(String remoteAddress, int remotePort, String scheme, byte[] requestData, object _out, int bufferSize, String id) {
|
||||||
try {
|
try {
|
||||||
|
// connect to the remote server
|
||||||
Socket sock = new Socket();
|
Socket sock = new Socket();
|
||||||
sock.connect(new InetSocketAddress(remoteAddress, remotePort));
|
sock.connect(new InetSocketAddress(remoteAddress, remotePort));
|
||||||
DataOutputStream outToServer = new DataOutputStream(sock.getOutputStream());
|
DataOutputStream outToServer = new DataOutputStream(sock.getOutputStream());
|
||||||
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(sock.getInputStream()));
|
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(sock.getInputStream()));
|
||||||
|
|
||||||
outToServer.write(requestData, 0, sendData.length);
|
// send data to the remote server
|
||||||
|
outToServer.write(requestData, 0, requestData.length);
|
||||||
|
|
||||||
|
// receive a response
|
||||||
char[] buffer = new char[bufferSize];
|
char[] buffer = new char[bufferSize];
|
||||||
int bytesRead;
|
int bytesRead;
|
||||||
StringBuilder response = new StringBuilder();
|
StringBuilder response = new StringBuilder();
|
||||||
|
@ -102,6 +105,7 @@ public class Worker {
|
||||||
response.append(buffer, 0, bytesRead);
|
response.append(buffer, 0, bytesRead);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// send output to the client
|
||||||
if (out instanceof JspWriter) {
|
if (out instanceof JspWriter) {
|
||||||
JspWriter out = (JspWriter) _out;
|
JspWriter out = (JspWriter) _out;
|
||||||
out.println(response.toString());
|
out.println(response.toString());
|
||||||
|
@ -110,11 +114,14 @@ public class Worker {
|
||||||
conn.getOutputStream().write(response.toString().getBytes());
|
conn.getOutputStream().write(response.toString().getBytes());
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
// build a description of the error
|
||||||
Map<String, Object> error = new HashMap<>();
|
Map<String, Object> error = new HashMap<>();
|
||||||
error.put("status", 502);
|
error.put("status", 502);
|
||||||
error.put("code", e.getMessage());
|
error.put("code", e.getMessage());
|
||||||
error.put("message", e.getMessage());
|
error.put("message", e.getMessage());
|
||||||
String response = new JsonRpc2.Error(error, id);
|
String response = new JsonRpc2.Error(error, id);
|
||||||
|
|
||||||
|
// send output to the client
|
||||||
if (out instanceof JspWriter) {
|
if (out instanceof JspWriter) {
|
||||||
JspWriter out = (JspWriter) _out;
|
JspWriter out = (JspWriter) _out;
|
||||||
out.println(response.toString());
|
out.println(response.toString());
|
||||||
|
@ -126,7 +133,7 @@ public class Worker {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stateless (Servlet only)
|
// Stateless (Servlet only)
|
||||||
public static void relayRequest(Map<String, Object> params, String id, JspWriter out) throws Exception {
|
public static void relayRequest(Map<String, Object> params, String id, JspWriter out) {
|
||||||
int bufferSize = Integer.parseInt((String) params.get("buffer_size"));
|
int bufferSize = Integer.parseInt((String) params.get("buffer_size"));
|
||||||
byte[] requestData = java.util.Base64.getDecoder().decode((String) params.get("request_data"));
|
byte[] requestData = java.util.Base64.getDecoder().decode((String) params.get("request_data"));
|
||||||
Map<String, String> requestHeader = parseHeaders(new String(requestData));
|
Map<String, String> requestHeader = parseHeaders(new String(requestData));
|
||||||
|
@ -147,6 +154,7 @@ public class Worker {
|
||||||
error.put("message", "Method Not Allowed");
|
error.put("message", "Method Not Allowed");
|
||||||
out.println(JsonRpc2.errorEncode(error, id));
|
out.println(JsonRpc2.errorEncode(error, id));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
readFromRemoteServer(remoteAddress, remotePort, scheme, requestData, out, bufferSize, id);
|
readFromRemoteServer(remoteAddress, remotePort, scheme, requestData, out, bufferSize, id);
|
||||||
}
|
}
|
||||||
|
@ -154,12 +162,12 @@ public class Worker {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stateful (Servlet only)
|
// Stateful (Servlet only)
|
||||||
public static void relayConenct(Map<String, Object> params, String id, JspWriter out) throws Exception {
|
public static void relayConenct(Map<String, Object> params, String id, JspWriter out) {
|
||||||
// todo
|
// todo
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stateful (Socket only)
|
// Stateful (Socket only)
|
||||||
public static void relayConenct(Map<String, Object> params, String id, Socket connection) throws Exception {
|
public static void relayConenct(Map<String, Object> params, String id, Socket connection) {
|
||||||
// todo
|
// todo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user