|
@@ -581,14 +581,16 @@ public final class Server extends WritableFrameContainer implements
|
581
|
581
|
*/
|
582
|
582
|
public void disconnect(final String reason) {
|
583
|
583
|
switch (myState) {
|
584
|
|
- case CLOSING:
|
585
|
|
- case DISCONNECTED:
|
586
|
|
- case TRANSIENTLY_DISCONNECTED:
|
587
|
|
- return;
|
588
|
|
- case RECONNECT_WAIT:
|
589
|
|
- reconnectTimer.cancel();
|
|
584
|
+ case CLOSING:
|
|
585
|
+ case DISCONNECTED:
|
|
586
|
+ case TRANSIENTLY_DISCONNECTED:
|
|
587
|
+ return;
|
|
588
|
+ case RECONNECT_WAIT:
|
|
589
|
+ reconnectTimer.cancel();
|
590
|
590
|
}
|
591
|
591
|
|
|
592
|
+ myState = STATE.DISCONNECTED;
|
|
593
|
+
|
592
|
594
|
if (parser != null && parser.isReady()) {
|
593
|
595
|
parser.disconnect(reason);
|
594
|
596
|
|
|
@@ -1013,23 +1015,23 @@ public final class Server extends WritableFrameContainer implements
|
1013
|
1015
|
|
1014
|
1016
|
/** {@inheritDoc} */
|
1015
|
1017
|
public void onSocketClosed(final IRCParser tParser) {
|
|
1018
|
+ handleNotification("socketClosed", this.server);
|
|
1019
|
+
|
1016
|
1020
|
if (myState == STATE.CLOSING || myState == STATE.DISCONNECTED) {
|
1017
|
|
- // This has been triggered via .discconect()
|
|
1021
|
+ // This has been triggered via .disconect()
|
1018
|
1022
|
return;
|
1019
|
1023
|
}
|
1020
|
1024
|
|
1021
|
1025
|
myState = STATE.TRANSIENTLY_DISCONNECTED;
|
1022
|
1026
|
|
1023
|
|
- handleNotification("socketClosed", this.server);
|
1024
|
|
-
|
1025
|
1027
|
if (configManager.getOptionBool("general", "closechannelsondisconnect")) {
|
1026
|
1028
|
closeChannels();
|
1027
|
1029
|
}
|
1028
|
1030
|
|
1029
|
1031
|
if (configManager.getOptionBool("general", "closequeriesondisconnect")) {
|
1030
|
1032
|
closeQueries();
|
1031
|
|
- }
|
1032
|
|
-
|
|
1033
|
+ }
|
|
1034
|
+
|
1033
|
1035
|
if (Config.getOptionBool("general", "reconnectondisconnect")) {
|
1034
|
1036
|
myState = STATE.RECONNECT_WAIT;
|
1035
|
1037
|
|
|
@@ -1040,8 +1042,10 @@ public final class Server extends WritableFrameContainer implements
|
1040
|
1042
|
reconnectTimer = new Timer("Server Reconnect Timer");
|
1041
|
1043
|
reconnectTimer.schedule(new TimerTask() {
|
1042
|
1044
|
public void run() {
|
1043
|
|
- myState = STATE.TRANSIENTLY_DISCONNECTED;
|
1044
|
|
- reconnect();
|
|
1045
|
+ if (myState == STATE.RECONNECT_WAIT) {
|
|
1046
|
+ myState = STATE.TRANSIENTLY_DISCONNECTED;
|
|
1047
|
+ reconnect();
|
|
1048
|
+ }
|
1045
|
1049
|
}
|
1046
|
1050
|
}, delay * 1000);
|
1047
|
1051
|
}
|
|
@@ -1082,8 +1086,10 @@ public final class Server extends WritableFrameContainer implements
|
1082
|
1086
|
reconnectTimer = new Timer("Server connect error timer");
|
1083
|
1087
|
reconnectTimer.schedule(new TimerTask() {
|
1084
|
1088
|
public void run() {
|
1085
|
|
- myState = STATE.TRANSIENTLY_DISCONNECTED;
|
1086
|
|
- reconnect();
|
|
1089
|
+ if (myState == STATE.RECONNECT_WAIT) {
|
|
1090
|
+ myState = STATE.TRANSIENTLY_DISCONNECTED;
|
|
1091
|
+ reconnect();
|
|
1092
|
+ }
|
1087
|
1093
|
}
|
1088
|
1094
|
}, delay * 1000);
|
1089
|
1095
|
}
|