improvement: look at SRV record when sending requests
This commit is contained in:
		
							parent
							
								
									267c721616
								
							
						
					
					
						commit
						e08dfd982b
					
				
					 4 changed files with 253 additions and 41 deletions
				
			
		
							
								
								
									
										239
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										239
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							|  | @ -1,5 +1,20 @@ | |||
| # This file is automatically @generated by Cargo. | ||||
| # It is not intended for manual editing. | ||||
| [[package]] | ||||
| name = "addr2line" | ||||
| version = "0.13.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "1b6a2d3371669ab3ca9797670853d61402b03d0b4b9ebf33d677dfa720203072" | ||||
| dependencies = [ | ||||
|  "gimli", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "adler" | ||||
| version = "0.2.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "adler32" | ||||
| version = "1.2.0" | ||||
|  | @ -73,6 +88,20 @@ version = "1.0.1" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "backtrace" | ||||
| version = "0.3.50" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "46254cf2fdcdf1badb5934448c1bcbe046a56537b3987d96c51a7afc5d03f293" | ||||
| dependencies = [ | ||||
|  "addr2line", | ||||
|  "cfg-if", | ||||
|  "libc", | ||||
|  "miniz_oxide 0.4.2", | ||||
|  "object", | ||||
|  "rustc-demangle", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "base-x" | ||||
| version = "0.2.6" | ||||
|  | @ -192,6 +221,7 @@ dependencies = [ | |||
|  "state-res", | ||||
|  "thiserror", | ||||
|  "tokio", | ||||
|  "trust-dns-resolver", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
|  | @ -213,7 +243,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| checksum = "1373a16a4937bc34efec7b391f9c1500c30b8478a701a4f44c9165cc0475a6e0" | ||||
| dependencies = [ | ||||
|  "percent-encoding", | ||||
|  "time 0.2.20", | ||||
|  "time 0.2.21", | ||||
|  "version_check", | ||||
| ] | ||||
| 
 | ||||
|  | @ -355,6 +385,18 @@ dependencies = [ | |||
|  "cfg-if", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "enum-as-inner" | ||||
| version = "0.3.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595" | ||||
| dependencies = [ | ||||
|  "heck", | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
|  "syn", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "fnv" | ||||
| version = "1.0.7" | ||||
|  | @ -537,6 +579,12 @@ dependencies = [ | |||
|  "lzw", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "gimli" | ||||
| version = "0.22.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "glob" | ||||
| version = "0.3.0" | ||||
|  | @ -586,6 +634,17 @@ dependencies = [ | |||
|  "libc", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "hostname" | ||||
| version = "0.3.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" | ||||
| dependencies = [ | ||||
|  "libc", | ||||
|  "match_cfg", | ||||
|  "winapi 0.3.9", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "http" | ||||
| version = "0.2.1" | ||||
|  | @ -614,10 +673,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | |||
| checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "hyper" | ||||
| version = "0.13.7" | ||||
| name = "httpdate" | ||||
| version = "0.3.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "3e68a8dd9716185d9e64ea473ea6ef63529252e3e27623295a0378a19665d5eb" | ||||
| checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "hyper" | ||||
| version = "0.13.8" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "2f3afcfae8af5ad0576a31e768415edb627824129e8e5a29b8bfccb2f234e835" | ||||
| dependencies = [ | ||||
|  "bytes", | ||||
|  "futures-channel", | ||||
|  | @ -627,10 +692,10 @@ dependencies = [ | |||
|  "http", | ||||
|  "http-body", | ||||
|  "httparse", | ||||
|  "httpdate", | ||||
|  "itoa", | ||||
|  "pin-project", | ||||
|  "socket2", | ||||
|  "time 0.1.44", | ||||
|  "tokio", | ||||
|  "tower-service", | ||||
|  "tracing", | ||||
|  | @ -695,9 +760,12 @@ checksum = "cb6ee2a7da03bfc3b66ca47c92c2e392fcc053ea040a85561749b026f7aad09a" | |||
| 
 | ||||
| [[package]] | ||||
| name = "instant" | ||||
| version = "0.1.6" | ||||
| version = "0.1.7" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "5b141fdc7836c525d4d594027d318c84161ca17aaf8113ab1f81ab93ae897485" | ||||
| checksum = "63312a18f7ea8760cdd0a7c5aac1a619752a246b833545e3e36d1f81f7cd9e66" | ||||
| dependencies = [ | ||||
|  "cfg-if", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "iovec" | ||||
|  | @ -708,6 +776,18 @@ dependencies = [ | |||
|  "libc", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "ipconfig" | ||||
| version = "0.2.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" | ||||
| dependencies = [ | ||||
|  "socket2", | ||||
|  "widestring", | ||||
|  "winapi 0.3.9", | ||||
|  "winreg 0.6.2", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "ipnet" | ||||
| version = "2.3.0" | ||||
|  | @ -778,6 +858,12 @@ version = "0.2.77" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "f2f96b10ec2560088a8e76961b00d47107b3a625fecb76dedb29ee7ccbf98235" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "linked-hash-map" | ||||
| version = "0.5.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "lock_api" | ||||
| version = "0.4.1" | ||||
|  | @ -796,6 +882,15 @@ dependencies = [ | |||
|  "cfg-if", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "lru-cache" | ||||
| version = "0.1.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" | ||||
| dependencies = [ | ||||
|  "linked-hash-map", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "lzw" | ||||
| version = "0.10.0" | ||||
|  | @ -808,6 +903,12 @@ version = "1.0.2" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "match_cfg" | ||||
| version = "0.1.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "matchers" | ||||
| version = "0.0.1" | ||||
|  | @ -837,9 +938,9 @@ checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" | |||
| 
 | ||||
| [[package]] | ||||
| name = "memoffset" | ||||
| version = "0.5.5" | ||||
| version = "0.5.6" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "c198b026e1bbf08a937e94c6c60f9ec4a2267f5b0d2eec9c1b21b061ce2be55f" | ||||
| checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" | ||||
| dependencies = [ | ||||
|  "autocfg", | ||||
| ] | ||||
|  | @ -869,6 +970,16 @@ dependencies = [ | |||
|  "adler32", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "miniz_oxide" | ||||
| version = "0.4.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "c60c0dfe32c10b43a144bad8fc83538c52f58302c92300ea7ec7bf7b38d5a7b9" | ||||
| dependencies = [ | ||||
|  "adler", | ||||
|  "autocfg", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "mio" | ||||
| version = "0.6.22" | ||||
|  | @ -991,6 +1102,12 @@ dependencies = [ | |||
|  "libc", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "object" | ||||
| version = "0.20.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "1ab52be62400ca80aa00285d25253d7f7c437b7375c4de678f5405d3afe82ca5" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "once_cell" | ||||
| version = "1.4.1" | ||||
|  | @ -1130,7 +1247,7 @@ dependencies = [ | |||
|  "bitflags", | ||||
|  "crc32fast", | ||||
|  "deflate", | ||||
|  "miniz_oxide", | ||||
|  "miniz_oxide 0.3.7", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
|  | @ -1181,6 +1298,12 @@ dependencies = [ | |||
|  "yansi", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "quick-error" | ||||
| version = "1.2.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "quote" | ||||
| version = "1.0.7" | ||||
|  | @ -1334,7 +1457,17 @@ dependencies = [ | |||
|  "wasm-bindgen", | ||||
|  "wasm-bindgen-futures", | ||||
|  "web-sys", | ||||
|  "winreg", | ||||
|  "winreg 0.7.0", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "resolv-conf" | ||||
| version = "0.6.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "11834e137f3b14e309437a8276714eed3a80d1ef894869e510f2c0c0b98b9f4a" | ||||
| dependencies = [ | ||||
|  "hostname", | ||||
|  "quick-error", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
|  | @ -1370,7 +1503,7 @@ dependencies = [ | |||
|  "rocket_codegen", | ||||
|  "rocket_http", | ||||
|  "state", | ||||
|  "time 0.2.20", | ||||
|  "time 0.2.21", | ||||
|  "tokio", | ||||
|  "toml", | ||||
|  "version_check", | ||||
|  | @ -1405,7 +1538,7 @@ dependencies = [ | |||
|  "ref-cast", | ||||
|  "smallvec", | ||||
|  "state", | ||||
|  "time 0.2.20", | ||||
|  "time 0.2.21", | ||||
|  "tokio", | ||||
|  "tokio-rustls", | ||||
|  "unicode-xid", | ||||
|  | @ -1414,7 +1547,6 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma" | ||||
| version = "0.0.1" | ||||
| source = "git+https://github.com/timokoesters/ruma?branch=timo-fed-fixes#425d34d4cfb5aefe5bab6957d71bc9389384c1e5" | ||||
| dependencies = [ | ||||
|  "ruma-api", | ||||
|  "ruma-appservice-api", | ||||
|  | @ -1430,7 +1562,6 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-api" | ||||
| version = "0.17.0-alpha.1" | ||||
| source = "git+https://github.com/timokoesters/ruma?branch=timo-fed-fixes#425d34d4cfb5aefe5bab6957d71bc9389384c1e5" | ||||
| dependencies = [ | ||||
|  "http", | ||||
|  "percent-encoding", | ||||
|  | @ -1445,7 +1576,6 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-api-macros" | ||||
| version = "0.17.0-alpha.1" | ||||
| source = "git+https://github.com/timokoesters/ruma?branch=timo-fed-fixes#425d34d4cfb5aefe5bab6957d71bc9389384c1e5" | ||||
| dependencies = [ | ||||
|  "proc-macro-crate", | ||||
|  "proc-macro2", | ||||
|  | @ -1456,7 +1586,6 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-appservice-api" | ||||
| version = "0.2.0-alpha.1" | ||||
| source = "git+https://github.com/timokoesters/ruma?branch=timo-fed-fixes#425d34d4cfb5aefe5bab6957d71bc9389384c1e5" | ||||
| dependencies = [ | ||||
|  "ruma-api", | ||||
|  "ruma-common", | ||||
|  | @ -1469,7 +1598,6 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-client-api" | ||||
| version = "0.10.0-alpha.1" | ||||
| source = "git+https://github.com/timokoesters/ruma?branch=timo-fed-fixes#425d34d4cfb5aefe5bab6957d71bc9389384c1e5" | ||||
| dependencies = [ | ||||
|  "assign", | ||||
|  "http", | ||||
|  | @ -1488,7 +1616,6 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-common" | ||||
| version = "0.2.0" | ||||
| source = "git+https://github.com/timokoesters/ruma?branch=timo-fed-fixes#425d34d4cfb5aefe5bab6957d71bc9389384c1e5" | ||||
| dependencies = [ | ||||
|  "js_int", | ||||
|  "ruma-api", | ||||
|  | @ -1502,7 +1629,6 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-events" | ||||
| version = "0.22.0-alpha.1" | ||||
| source = "git+https://github.com/timokoesters/ruma?branch=timo-fed-fixes#425d34d4cfb5aefe5bab6957d71bc9389384c1e5" | ||||
| dependencies = [ | ||||
|  "js_int", | ||||
|  "ruma-common", | ||||
|  | @ -1517,7 +1643,6 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-events-macros" | ||||
| version = "0.22.0-alpha.1" | ||||
| source = "git+https://github.com/timokoesters/ruma?branch=timo-fed-fixes#425d34d4cfb5aefe5bab6957d71bc9389384c1e5" | ||||
| dependencies = [ | ||||
|  "proc-macro-crate", | ||||
|  "proc-macro2", | ||||
|  | @ -1528,7 +1653,6 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-federation-api" | ||||
| version = "0.0.3" | ||||
| source = "git+https://github.com/timokoesters/ruma?branch=timo-fed-fixes#425d34d4cfb5aefe5bab6957d71bc9389384c1e5" | ||||
| dependencies = [ | ||||
|  "js_int", | ||||
|  "ruma-api", | ||||
|  | @ -1543,7 +1667,6 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-identifiers" | ||||
| version = "0.17.4" | ||||
| source = "git+https://github.com/timokoesters/ruma?branch=timo-fed-fixes#425d34d4cfb5aefe5bab6957d71bc9389384c1e5" | ||||
| dependencies = [ | ||||
|  "rand", | ||||
|  "ruma-identifiers-macros", | ||||
|  | @ -1555,7 +1678,6 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-identifiers-macros" | ||||
| version = "0.17.4" | ||||
| source = "git+https://github.com/timokoesters/ruma?branch=timo-fed-fixes#425d34d4cfb5aefe5bab6957d71bc9389384c1e5" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
|  | @ -1566,7 +1688,6 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-identifiers-validation" | ||||
| version = "0.1.1" | ||||
| source = "git+https://github.com/timokoesters/ruma?branch=timo-fed-fixes#425d34d4cfb5aefe5bab6957d71bc9389384c1e5" | ||||
| dependencies = [ | ||||
|  "serde", | ||||
|  "strum", | ||||
|  | @ -1575,7 +1696,6 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-serde" | ||||
| version = "0.2.3" | ||||
| source = "git+https://github.com/timokoesters/ruma?branch=timo-fed-fixes#425d34d4cfb5aefe5bab6957d71bc9389384c1e5" | ||||
| dependencies = [ | ||||
|  "form_urlencoded", | ||||
|  "itoa", | ||||
|  | @ -1587,7 +1707,6 @@ dependencies = [ | |||
| [[package]] | ||||
| name = "ruma-signatures" | ||||
| version = "0.6.0-dev.1" | ||||
| source = "git+https://github.com/timokoesters/ruma?branch=timo-fed-fixes#425d34d4cfb5aefe5bab6957d71bc9389384c1e5" | ||||
| dependencies = [ | ||||
|  "base64", | ||||
|  "ring", | ||||
|  | @ -1607,6 +1726,12 @@ dependencies = [ | |||
|  "crossbeam-utils", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "rustc-demangle" | ||||
| version = "0.1.16" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "rustc_version" | ||||
| version = "0.2.3" | ||||
|  | @ -1831,7 +1956,6 @@ checksum = "7345c971d1ef21ffdbd103a75990a15eb03604fc8b8852ca8cb418ee1a099028" | |||
| [[package]] | ||||
| name = "state-res" | ||||
| version = "0.1.0" | ||||
| source = "git+https://github.com/timokoesters/state-res?branch=spec-comp#d11a3feb5307715ab5d86af8f25d4bccfee6264b" | ||||
| dependencies = [ | ||||
|  "itertools", | ||||
|  "js_int", | ||||
|  | @ -1981,9 +2105,9 @@ dependencies = [ | |||
| 
 | ||||
| [[package]] | ||||
| name = "time" | ||||
| version = "0.2.20" | ||||
| version = "0.2.21" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "0d4953c513c9bf1b97e9cdd83f11d60c4b0a83462880a360d80d96953a953fee" | ||||
| checksum = "2c2e31fb28e2a9f01f5ed6901b066c1ba2333c04b64dc61254142bafcb3feb2c" | ||||
| dependencies = [ | ||||
|  "const_fn", | ||||
|  "libc", | ||||
|  | @ -2182,6 +2306,46 @@ dependencies = [ | |||
|  "tracing-serde", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "trust-dns-proto" | ||||
| version = "0.19.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "cdd7061ba6f4d4d9721afedffbfd403f20f39a4301fee1b70d6fcd09cca69f28" | ||||
| dependencies = [ | ||||
|  "async-trait", | ||||
|  "backtrace", | ||||
|  "enum-as-inner", | ||||
|  "futures", | ||||
|  "idna", | ||||
|  "lazy_static", | ||||
|  "log", | ||||
|  "rand", | ||||
|  "smallvec", | ||||
|  "thiserror", | ||||
|  "tokio", | ||||
|  "url", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "trust-dns-resolver" | ||||
| version = "0.19.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "0f23cdfdc3d8300b3c50c9e84302d3bd6d860fb9529af84ace6cf9665f181b77" | ||||
| dependencies = [ | ||||
|  "backtrace", | ||||
|  "cfg-if", | ||||
|  "futures", | ||||
|  "ipconfig", | ||||
|  "lazy_static", | ||||
|  "log", | ||||
|  "lru-cache", | ||||
|  "resolv-conf", | ||||
|  "smallvec", | ||||
|  "thiserror", | ||||
|  "tokio", | ||||
|  "trust-dns-proto", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "try-lock" | ||||
| version = "0.2.3" | ||||
|  | @ -2366,6 +2530,12 @@ dependencies = [ | |||
|  "untrusted", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "widestring" | ||||
| version = "0.4.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "a763e303c0e0f23b0da40888724762e802a8ffefbc22de4127ef42493c2ea68c" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "winapi" | ||||
| version = "0.2.8" | ||||
|  | @ -2400,6 +2570,15 @@ version = "0.4.0" | |||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" | ||||
| 
 | ||||
| [[package]] | ||||
| name = "winreg" | ||||
| version = "0.6.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" | ||||
| dependencies = [ | ||||
|  "winapi 0.3.9", | ||||
| ] | ||||
| 
 | ||||
| [[package]] | ||||
| name = "winreg" | ||||
| version = "0.7.0" | ||||
|  |  | |||
|  | @ -56,6 +56,8 @@ image = { version = "0.23.9", default-features = false, features = ["jpeg", "png | |||
| base64 = "0.12.3" | ||||
| # Used when hashing the state | ||||
| ring = "0.16.15" | ||||
| # Used when querying the SRV record of other servers | ||||
| trust-dns-resolver = "0.19.5" | ||||
| 
 | ||||
| [features] | ||||
| default = ["conduit_bin"] | ||||
|  |  | |||
|  | @ -605,7 +605,9 @@ pub async fn sync_events_route( | |||
|             changed: device_list_updates.into_iter().collect(), | ||||
|             left: device_list_left.into_iter().collect(), | ||||
|         }, | ||||
|         device_one_time_keys_count: if db.users.last_one_time_keys_update(sender_id)? > since || since == 0 { | ||||
|         device_one_time_keys_count: if db.users.last_one_time_keys_update(sender_id)? > since | ||||
|             || since == 0 | ||||
|         { | ||||
|             db.users.count_one_time_keys(sender_id, device_id)? | ||||
|         } else { | ||||
|             BTreeMap::new() | ||||
|  |  | |||
|  | @ -1,5 +1,5 @@ | |||
| use crate::{client_server, ConduitResult, Database, Error, PduEvent, Result, Ruma}; | ||||
| use http::header::{HeaderValue, AUTHORIZATION}; | ||||
| use http::header::{HeaderValue, AUTHORIZATION, HOST}; | ||||
| use log::warn; | ||||
| use rocket::{get, post, put, response::content::Json, State}; | ||||
| use ruma::{ | ||||
|  | @ -23,6 +23,7 @@ use std::{ | |||
|     fmt::Debug, | ||||
|     time::{Duration, SystemTime}, | ||||
| }; | ||||
| use trust_dns_resolver::AsyncResolver; | ||||
| 
 | ||||
| pub async fn request_well_known( | ||||
|     globals: &crate::database::globals::Globals, | ||||
|  | @ -54,16 +55,36 @@ pub async fn send_request<T: OutgoingRequest>( | |||
| where | ||||
|     T: Debug, | ||||
| { | ||||
|     let resolver = AsyncResolver::tokio_from_system_conf() | ||||
|         .await | ||||
|         .map_err(|_| Error::BadConfig("Failed to set up trust dns resolver with system config."))?; | ||||
| 
 | ||||
|     let mut host = None; | ||||
| 
 | ||||
|     let actual_destination = "https://".to_owned() | ||||
|         + &request_well_known(globals, &destination.as_str()) | ||||
|             .await | ||||
|             .unwrap_or_else(|| { | ||||
|                 let mut destination = destination.as_str().to_owned(); | ||||
|                 if destination.find(':').is_none() { | ||||
|                     destination += ":8448"; | ||||
|         + &if let Some(mut delegated_hostname) = | ||||
|             request_well_known(globals, &destination.as_str()).await | ||||
|         { | ||||
|             if let Ok(Some(srv)) = resolver | ||||
|                 .srv_lookup(format!("_matrix._tcp.{}", delegated_hostname)) | ||||
|                 .await | ||||
|                 .map(|srv| srv.iter().next().map(|result| result.target().to_string())) | ||||
|             { | ||||
|                 host = Some(delegated_hostname); | ||||
|                 srv.trim_end_matches('.').to_owned() | ||||
|             } else { | ||||
|                 if delegated_hostname.find(':').is_none() { | ||||
|                     delegated_hostname += ":8448"; | ||||
|                 } | ||||
|                 destination | ||||
|             }); | ||||
|                 delegated_hostname | ||||
|             } | ||||
|         } else { | ||||
|             let mut destination = destination.as_str().to_owned(); | ||||
|             if destination.find(':').is_none() { | ||||
|                 destination += ":8448"; | ||||
|             } | ||||
|             destination | ||||
|         }; | ||||
| 
 | ||||
|     let mut http_request = request | ||||
|         .try_into_http_request(&actual_destination, Some("")) | ||||
|  | @ -129,9 +150,17 @@ where | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     let reqwest_request = reqwest::Request::try_from(http_request) | ||||
|     if let Some(host) = host { | ||||
|         http_request | ||||
|             .headers_mut() | ||||
|             .insert(HOST, HeaderValue::from_str(&host).unwrap()); | ||||
|     } | ||||
| 
 | ||||
|     let mut reqwest_request = reqwest::Request::try_from(http_request) | ||||
|         .expect("all http requests are valid reqwest requests"); | ||||
| 
 | ||||
|     *reqwest_request.timeout_mut() = Some(Duration::from_secs(30)); | ||||
| 
 | ||||
|     let reqwest_response = globals.reqwest_client().execute(reqwest_request).await; | ||||
| 
 | ||||
|     // Because reqwest::Response -> http::Response is complicated:
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue