mirror of
https://github.com/Corewala/Buran
synced 2025-03-11 06:33:20 +00:00
Fixed redirect drop bug
This commit is contained in:
parent
0fdffee966
commit
73afc7c684
1 changed files with 20 additions and 17 deletions
|
@ -133,7 +133,7 @@ class GeminiDatasource(private val context: Context, val history: BuranHistory):
|
||||||
val bufferedReader = BufferedReader(headerInputReader)
|
val bufferedReader = BufferedReader(headerInputReader)
|
||||||
val headerLine = bufferedReader.readLine()
|
val headerLine = bufferedReader.readLine()
|
||||||
|
|
||||||
println("Buran: response header: $headerLine")
|
println("Buran response header: $headerLine")
|
||||||
|
|
||||||
if(headerLine == null){
|
if(headerLine == null){
|
||||||
if(currentRequestAddress == uri.toString()){
|
if(currentRequestAddress == uri.toString()){
|
||||||
|
@ -144,23 +144,27 @@ class GeminiDatasource(private val context: Context, val history: BuranHistory):
|
||||||
|
|
||||||
val header = GeminiResponse.parseHeader(headerLine)
|
val header = GeminiResponse.parseHeader(headerLine)
|
||||||
|
|
||||||
when {
|
if(currentRequestAddress == uri.toString()){
|
||||||
currentRequestAddress != uri.toString() -> {}
|
currentRequestAddress = null
|
||||||
header.code == GeminiResponse.INPUT -> onUpdate(GemState.ResponseInput(uri, header))
|
when {
|
||||||
header.code == GeminiResponse.REDIRECT -> onUpdate(GemState.Redirect(header.meta))
|
header.code == GeminiResponse.INPUT -> onUpdate(GemState.ResponseInput(uri, header))
|
||||||
header.code == GeminiResponse.CLIENT_CERTIFICATE_REQUIRED -> onUpdate(GemState.ClientCertRequired(uri, header))
|
header.code == GeminiResponse.REDIRECT -> onUpdate(GemState.Redirect(header.meta))
|
||||||
header.code != GeminiResponse.SUCCESS -> onUpdate(GemState.ResponseError(header))
|
header.code == GeminiResponse.CLIENT_CERTIFICATE_REQUIRED -> onUpdate(GemState.ClientCertRequired(uri, header))
|
||||||
header.meta.startsWith("text/gemini") -> getGemtext(bufferedReader, requestEntity.trim().toURI(), header, onUpdate)
|
header.code != GeminiResponse.SUCCESS -> onUpdate(GemState.ResponseError(header))
|
||||||
header.meta.startsWith("text/") -> getString(socket, uri, header, onUpdate)
|
header.meta.startsWith("text/gemini") -> getGemtext(bufferedReader, requestEntity.trim().toURI(), header, onUpdate)
|
||||||
header.meta.startsWith("image/") -> getBinary(socket, uri, header, onUpdate)
|
header.meta.startsWith("text/") -> getString(socket, uri, header, onUpdate)
|
||||||
else -> {
|
header.meta.startsWith("image/") -> getBinary(socket, uri, header, onUpdate)
|
||||||
//File served over Gemini but not handled in-app, eg .pdf
|
else -> {
|
||||||
if(forceDownload){
|
//File served over Gemini but not handled in-app, eg .pdf
|
||||||
getBinary(socket, uri, header, onUpdate)
|
if(forceDownload){
|
||||||
}else{
|
getBinary(socket, uri, header, onUpdate)
|
||||||
onUpdate(GemState.ResponseUnknownMime(uri, header))
|
}else{
|
||||||
|
onUpdate(GemState.ResponseUnknownMime(uri, header))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
println("Buran dropped response from $uri: request cancelled or superseded")
|
||||||
}
|
}
|
||||||
|
|
||||||
//Close input
|
//Close input
|
||||||
|
@ -172,7 +176,6 @@ class GeminiDatasource(private val context: Context, val history: BuranHistory):
|
||||||
bufferedWriter.close()
|
bufferedWriter.close()
|
||||||
outWriter.close()
|
outWriter.close()
|
||||||
|
|
||||||
currentRequestAddress = null
|
|
||||||
socket.close()
|
socket.close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue