Skip to content

Commit fed3fb3

Browse files
committed
FIX: improving previous commit (38df5c9) so urls with not standard ports are handled too.
1 parent 38df5c9 commit fed3fb3

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/mezz/prot-http.r

+10-7
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,6 @@ http-awake: func [event /local port http-port state awake res] [
118118

119119
;@@net-log ["[HTTP http-awake]" event/type]
120120

121-
;?? awake
122-
123121
switch/default event/type [
124122
read [
125123
awake make event! [type: 'read port: http-port]
@@ -323,7 +321,7 @@ check-response: func [port /local conn res headers d1 d2 line info state awake s
323321
unless open? port [
324322
;NOTE some servers(e.g. yahoo.com) don't supply content-data in the redirect header so the state/state can be left in 'reading-data after check-data call
325323
;I think it is better to check if port has been closed here and set the state so redirect sequence can happen. --Richard
326-
state/state: 'redirect ;ready
324+
state/state: 'ready
327325
]
328326
]
329327
;?? res
@@ -409,15 +407,18 @@ do-redirect: func [port [port!] new-uri [url! string! file!] /local spec state]
409407
new-uri: to url! ajoin [spec/scheme "://" spec/host new-uri]
410408
]
411409
new-uri: decode-url new-uri
410+
412411
unless select new-uri 'port-id [
413412
switch new-uri/scheme [
414413
'https [append new-uri [port-id: 443]]
415414
'http [append new-uri [port-id: 80]]
416415
]
417416
]
418417
new-uri: construct/with new-uri port/scheme/spec
419-
new-uri/ref: to url! ajoin [new-uri/scheme "://" new-uri/host new-uri/path]
420418
new-uri/method: spec/method
419+
new-uri/ref: to url! ajoin either find [#[none] 80 443] new-uri/port-id [
420+
[new-uri/scheme "://" new-uri/host new-uri/path]
421+
][ [new-uri/scheme "://" new-uri/host #":" new-uri/port-id new-uri/path]]
421422

422423
;@@net-log ["[HTTP do-redirect] new-uri:" mold new-uri]
423424
;?? port
@@ -580,7 +581,7 @@ sys/make-scheme [
580581
scheme: (to lit-word! either port/spec/scheme = 'http ['tcp]['tls])
581582
host: port/spec/host
582583
port-id: port/spec/port-id
583-
ref: rejoin [to url! scheme "://" host #":" port-id]
584+
ref: to url! ajoin [scheme "://" host #":" port-id]
584585
]
585586
;?? conn
586587
conn/awake: :http-awake
@@ -628,8 +629,10 @@ sys/make-scheme [
628629
close port
629630
]
630631
;?? state
631-
if none? state [return none]
632-
either find [ok redirect] state/info/response-parsed [
632+
either all [
633+
state
634+
find [ok redirect] state/info/response-parsed
635+
][
633636
state/info
634637
][ none ]
635638
]

0 commit comments

Comments
 (0)