mirror of
https://github.com/MercuryWorkshop/epoxy-tls.git
synced 2025-05-13 14:30:02 -04:00
misclelaneous headers
This commit is contained in:
parent
4de4f06f30
commit
a175b666a5
1 changed files with 32 additions and 15 deletions
|
@ -128,11 +128,12 @@ async fn wtf(iop: *mut WsTcpStream) {
|
||||||
let mut t = false;
|
let mut t = false;
|
||||||
unsafe {
|
unsafe {
|
||||||
let io = &mut *iop;
|
let io = &mut *iop;
|
||||||
|
let mut v = vec![];
|
||||||
loop {
|
loop {
|
||||||
let r = io.read_u8().await;
|
let r = io.read_u8().await;
|
||||||
|
|
||||||
if let Ok(u) = r {
|
if let Ok(u) = r {
|
||||||
// log!("{}", u as char);
|
v.push(u);
|
||||||
if t && u as char == '\r' {
|
if t && u as char == '\r' {
|
||||||
let r = io.read_u8().await;
|
let r = io.read_u8().await;
|
||||||
break;
|
break;
|
||||||
|
@ -146,6 +147,7 @@ async fn wtf(iop: *mut WsTcpStream) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
log!("{}", &from_utf8(&v).unwrap().to_string());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,7 +175,7 @@ impl WsWebSocket {
|
||||||
tcp: &mut WsTcp,
|
tcp: &mut WsTcp,
|
||||||
url: String,
|
url: String,
|
||||||
protocols: Vec<String>,
|
protocols: Vec<String>,
|
||||||
host: String,
|
origin: String,
|
||||||
) -> Result<(), JsError> {
|
) -> Result<(), JsError> {
|
||||||
self.onopen.call0(&Object::default());
|
self.onopen.call0(&Object::default());
|
||||||
let uri = url.parse::<uri::Uri>().replace_err("Failed to parse URL")?;
|
let uri = url.parse::<uri::Uri>().replace_err("Failed to parse URL")?;
|
||||||
|
@ -182,13 +184,22 @@ impl WsWebSocket {
|
||||||
let r: [u8; 16] = rand::random();
|
let r: [u8; 16] = rand::random();
|
||||||
let key = STANDARD.encode(&r);
|
let key = STANDARD.encode(&r);
|
||||||
|
|
||||||
io.write(b"GET / HTTP/1.1\r\n").await;
|
let pathstr = if let Some(p) = uri.path_and_query() {
|
||||||
|
p.to_string()
|
||||||
|
} else {
|
||||||
|
uri.path().to_string()
|
||||||
|
};
|
||||||
|
|
||||||
|
io.write(format!("GET {} HTTP/1.1\r\n", pathstr).as_bytes())
|
||||||
|
.await;
|
||||||
io.write(b"Sec-WebSocket-Version: 13\r\n").await;
|
io.write(b"Sec-WebSocket-Version: 13\r\n").await;
|
||||||
io.write(format!("Sec-WebSocket-Key: {}\r\n", key).as_bytes())
|
io.write(format!("Sec-WebSocket-Key: {}\r\n", key).as_bytes())
|
||||||
.await;
|
.await;
|
||||||
io.write(b"Connection: Upgrade\r\n").await;
|
io.write(b"Connection: Upgrade\r\n").await;
|
||||||
io.write(b"Upgrade: websocket\r\n").await;
|
io.write(b"Upgrade: websocket\r\n").await;
|
||||||
io.write(format!("Host: {}\r\n", host).as_bytes()).await;
|
io.write(format!("Origin: {}\r\n", origin).as_bytes()).await;
|
||||||
|
io.write(format!("Host: {}\r\n", uri.host().unwrap()).as_bytes())
|
||||||
|
.await;
|
||||||
io.write(b"\r\n").await;
|
io.write(b"\r\n").await;
|
||||||
|
|
||||||
let iop: *mut WsTcpStream = &mut io;
|
let iop: *mut WsTcpStream = &mut io;
|
||||||
|
@ -221,7 +232,8 @@ impl WsWebSocket {
|
||||||
Payload::Owned(payload.as_bytes().to_vec()),
|
Payload::Owned(payload.as_bytes().to_vec()),
|
||||||
))
|
))
|
||||||
.await
|
.await
|
||||||
.replace_err("Failed to send WsWebSocket payload")?;
|
.unwrap();
|
||||||
|
// .replace_err("Failed to send WsWebSocket payload")?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -235,13 +247,15 @@ impl WsWebSocket {
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
|
|
||||||
if frame.opcode == OpCode::Text {
|
match frame.opcode {
|
||||||
|
OpCode::Text => {
|
||||||
if let Ok(str) = from_utf8(&frame.payload) {
|
if let Ok(str) = from_utf8(&frame.payload) {
|
||||||
self.onmessage
|
self.onmessage
|
||||||
.call1(&JsValue::null(), &jval!(str))
|
.call1(&JsValue::null(), &jval!(str))
|
||||||
.replace_err("missing onmessage handler")?;
|
.replace_err("missing onmessage handler")?;
|
||||||
}
|
}
|
||||||
} else if frame.opcode == OpCode::Binary {
|
}
|
||||||
|
OpCode::Binary => {
|
||||||
self.onmessage
|
self.onmessage
|
||||||
.call1(
|
.call1(
|
||||||
&JsValue::null(),
|
&JsValue::null(),
|
||||||
|
@ -249,6 +263,9 @@ impl WsWebSocket {
|
||||||
)
|
)
|
||||||
.replace_err("missing onmessage handler")?;
|
.replace_err("missing onmessage handler")?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_ => panic!("unknown opcode {:?}", frame.opcode),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
self.onclose
|
self.onclose
|
||||||
.call0(&JsValue::null())
|
.call0(&JsValue::null())
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue