extra::url::to_str doesn't include the port, leading to an incorrect string representation of the URL.
If the port is not None, it should be tacked on after the host name with a colon before it. I don't think intelligence in omitting it for the default port of a scheme (e.g. if it's Some(~"80") with the scheme ~"http") is desirable.
(... hang on: why is port a ~str rather than a u16? Out of scope for this issue.)
See also chris-morgan/rust-http#16.