Bug fix
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>org.openautonomousconnection</groupId>
|
||||
<artifactId>Protocol</artifactId>
|
||||
<version>1.0.1-BETA.0.5</version>
|
||||
<version>1.0.1-BETA.0.6</version>
|
||||
<organization>
|
||||
<name>Open Autonomous Connection</name>
|
||||
<url>https://open-autonomous-connection.org/</url>
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
package org.openautonomousconnection.protocol;
|
||||
|
||||
import dev.unlegitdqrk.unlegitlibrary.addon.AddonLoader;
|
||||
import dev.unlegitdqrk.unlegitlibrary.file.FileUtils;
|
||||
import dev.unlegitdqrk.unlegitlibrary.network.system.utils.ClientAuthMode;
|
||||
import dev.unlegitdqrk.unlegitlibrary.utils.Logger;
|
||||
import lombok.Getter;
|
||||
import org.openautonomousconnection.protocol.annotations.ProtocolInfo;
|
||||
import org.openautonomousconnection.protocol.listeners.ClientListener;
|
||||
@@ -28,7 +26,6 @@ import org.openautonomousconnection.protocol.packets.v1_0_1.beta.web.impl.stream
|
||||
import org.openautonomousconnection.protocol.packets.v1_0_1.beta.web.impl.stream.WebStreamEndPacket_v1_0_1_B;
|
||||
import org.openautonomousconnection.protocol.packets.v1_0_1.beta.web.impl.stream.WebStreamStartPacket_v1_0_1_B;
|
||||
import org.openautonomousconnection.protocol.side.client.ProtocolClient;
|
||||
import org.openautonomousconnection.protocol.side.client.ProtocolWebClient;
|
||||
import org.openautonomousconnection.protocol.side.ins.ProtocolINSServer;
|
||||
import org.openautonomousconnection.protocol.side.server.ProtocolCustomServer;
|
||||
import org.openautonomousconnection.protocol.side.web.ProtocolWebServer;
|
||||
@@ -40,7 +37,6 @@ import org.openautonomousconnection.protocol.versions.v1_0_0.beta.ProtocolWebSer
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ResourceBundle;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
/**
|
||||
|
||||
@@ -5,7 +5,6 @@ import net.bytebuddy.agent.ByteBuddyAgent;
|
||||
import net.bytebuddy.agent.builder.AgentBuilder;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.instrument.Instrumentation;
|
||||
import java.lang.reflect.Method;
|
||||
@@ -73,6 +72,6 @@ public class CallTracker<A extends Annotation> extends GenericReflectClass<A> {
|
||||
/**
|
||||
* Code executed on any method call
|
||||
*/
|
||||
public abstract void onCall(Method method, @Nullable StackTraceElement callerMethod);
|
||||
public abstract void onCall(Method method, StackTraceElement callerMethod);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ import org.openautonomousconnection.protocol.annotations.ProtocolInfo;
|
||||
import org.openautonomousconnection.protocol.exceptions.IncompatibleProtocolSideException;
|
||||
import org.openautonomousconnection.protocol.versions.ProtocolVersion;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
@@ -36,7 +35,7 @@ public class ProtocolInfoProcessing extends AnnotationProcessor<ProtocolInfo> {
|
||||
|
||||
this.tracker = new CallTracker<>(new CallTracker.CallInterceptor() {
|
||||
@Override
|
||||
public void onCall(Method method, @Nullable StackTraceElement callerMethod) {
|
||||
public void onCall(Method method, StackTraceElement callerMethod) {
|
||||
ProtocolVersion.ProtocolSide side, callerSide;
|
||||
Object o;
|
||||
|
||||
|
||||
@@ -90,7 +90,13 @@ public final class WebResourceRequestPacket extends WebPacket {
|
||||
boolean hasBct = in.readBoolean();
|
||||
this.bodyContentType = hasBct ? in.readUTF() : null;
|
||||
|
||||
this.initiatorType = WebInitiatorType.valueOf(in.readUTF());
|
||||
try {
|
||||
this.initiatorType = WebInitiatorType.valueOf(in.readUTF());
|
||||
} catch (IllegalArgumentException e) {
|
||||
getProtocolBridge().getProtocolValues().logger.exception("Invalid initiator type: " + initiatorType, e);
|
||||
this.initiatorType = WebInitiatorType.OTHER;
|
||||
}
|
||||
|
||||
this.cacheMode = WebCacheMode.valueOf(in.readUTF());
|
||||
|
||||
int len = in.readInt();
|
||||
@@ -100,6 +106,7 @@ public final class WebResourceRequestPacket extends WebPacket {
|
||||
if (protocolBridge.isRunningAsWebServer()) {
|
||||
ProtocolWebServer server = (ProtocolWebServer) protocolBridge.getProtocolServer();
|
||||
CustomConnectedClient client = server.getClientByID(clientID);
|
||||
if (client == null) return;
|
||||
client.getConnection().sendPacket(server.handleResource(client, this), TransportProtocol.TCP);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import dev.unlegitdqrk.unlegitlibrary.event.EventListener;
|
||||
import dev.unlegitdqrk.unlegitlibrary.event.EventPriority;
|
||||
import dev.unlegitdqrk.unlegitlibrary.event.Listener;
|
||||
import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.packets.C_PacketReadEvent;
|
||||
import dev.unlegitdqrk.unlegitlibrary.network.system.client.events.state.ClientDisconnectedEvent;
|
||||
import org.openautonomousconnection.protocol.ProtocolBridge;
|
||||
import org.openautonomousconnection.protocol.packets.v1_0_0.beta.INSResponsePacket;
|
||||
import org.openautonomousconnection.protocol.side.client.ProtocolClient;
|
||||
@@ -40,6 +41,7 @@ public final class InsResolutionCoordinator_v1_0_1_B extends EventListener {
|
||||
|
||||
private volatile ProtocolClient insClient; // from ConnectedToProtocolINSServerEvent
|
||||
private volatile boolean insConnected;
|
||||
private volatile Object activeServerConnection;
|
||||
|
||||
private volatile String activeInfoName;
|
||||
private volatile String pendingInfoName;
|
||||
@@ -197,9 +199,37 @@ public final class InsResolutionCoordinator_v1_0_1_B extends EventListener {
|
||||
@Listener(priority = EventPriority.HIGHEST)
|
||||
public void onConnectedToServer(ConnectedToProtocolServerEvent event) {
|
||||
Objects.requireNonNull(event, "event");
|
||||
ProtocolClient client = event.getClient();
|
||||
if (client != null) {
|
||||
this.activeServerConnection = client.getClientServerConnection();
|
||||
}
|
||||
OacWebRequestBroker.get().notifyServerConnected();
|
||||
}
|
||||
|
||||
@Listener(priority = EventPriority.HIGHEST)
|
||||
public void onDisconnected(ClientDisconnectedEvent event) {
|
||||
Objects.requireNonNull(event, "event");
|
||||
|
||||
Object disconnected = event.getClient();
|
||||
if (disconnected == null) return;
|
||||
|
||||
ProtocolBridge b = this.bridge;
|
||||
ProtocolClient client = (b == null) ? null : b.getProtocolClient();
|
||||
|
||||
if (disconnected == activeServerConnection) {
|
||||
activeServerConnection = null;
|
||||
activeInfoName = null;
|
||||
OacWebRequestBroker.get().notifyServerConnectionFailed(
|
||||
new IllegalStateException("Server connection was lost")
|
||||
);
|
||||
}
|
||||
|
||||
if (client != null && disconnected == client.getClientINSConnection()) {
|
||||
this.insConnected = false;
|
||||
this.pendingInfoName = null;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean canReuseCurrentServerConnection(String infoName) {
|
||||
ProtocolBridge b = this.bridge;
|
||||
if (b == null) return false;
|
||||
@@ -226,7 +256,6 @@ public final class InsResolutionCoordinator_v1_0_1_B extends EventListener {
|
||||
InsParts parts = InsParts.parse(infoName);
|
||||
|
||||
try {
|
||||
// IMPORTANT: direct INS query, no impl.sendIns()
|
||||
c.sendINSQuery(parts.tln(), parts.name(), parts.sub(), INSRecordType.A);
|
||||
} catch (Exception e) {
|
||||
OacWebRequestBroker.get().notifyServerConnectionFailed(e);
|
||||
@@ -254,9 +283,13 @@ public final class InsResolutionCoordinator_v1_0_1_B extends EventListener {
|
||||
);
|
||||
|
||||
client.getClientServerConnection().connect(hostname, port);
|
||||
this.activeServerConnection = client.getClientServerConnection();
|
||||
this.activeInfoName = infoName;
|
||||
// Broker gate is opened by ConnectedToProtocolServerEvent.
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
this.activeServerConnection = null;
|
||||
this.activeInfoName = null;
|
||||
OacWebRequestBroker.get().notifyServerConnectionFailed(e);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -216,7 +216,6 @@ public final class OacWebRequestBroker {
|
||||
|
||||
Map<String, String> safeHeaders = (headers == null) ? Map.of() : new LinkedHashMap<>(headers);
|
||||
byte[] safeBody = (body == null) ? new byte[0] : body;
|
||||
|
||||
WebResourceRequestPacket packet = new WebResourceRequestPacket(
|
||||
header,
|
||||
url.toString(),
|
||||
@@ -612,4 +611,4 @@ public final class OacWebRequestBroker {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user