- Add session limit, add new status code for refused
   - Ramdomize session ID, prevent dups
   - Make session IDs immutable
This commit is contained in:
zzz
2014-02-14 17:05:32 +00:00
parent c79ff0dc09
commit a9fceae181
7 changed files with 138 additions and 41 deletions

View File

@ -43,14 +43,25 @@ public class SessionId extends DataStructureImpl {
return _sessionId;
}
/** @param id 0-65535 */
/**
* @param id 0-65535
* @throws IllegalArgumentException
* @throws IllegalStateException if already set
*/
public void setSessionId(int id) {
if (id < 0 || id > 65535)
throw new IllegalArgumentException();
if (_sessionId >= 0)
throw new IllegalStateException();
_sessionId = id;
}
/**
* @throws IllegalStateException if already set
*/
public void readBytes(InputStream in) throws DataFormatException, IOException {
if (_sessionId >= 0)
throw new IllegalStateException();
_sessionId = (int) DataHelper.readLong(in, 2);
}
@ -62,12 +73,12 @@ public class SessionId extends DataStructureImpl {
@Override
public boolean equals(Object obj) {
if ((obj == null) || !(obj instanceof SessionId)) return false;
return _sessionId == ((SessionId) obj).getSessionId();
return _sessionId == ((SessionId) obj)._sessionId;
}
@Override
public int hashCode() {
return _sessionId;
return 777 * _sessionId;
}
@Override

View File

@ -31,6 +31,8 @@ public class SessionStatusMessage extends I2CPMessageImpl {
public final static int STATUS_CREATED = 1;
public final static int STATUS_UPDATED = 2;
public final static int STATUS_INVALID = 3;
/** @since 0.9.12 */
public final static int STATUS_REFUSED = 4;
public SessionStatusMessage() {
setStatus(STATUS_INVALID);