Skip to content

Commit bc99c93

Browse files
committed
pass uri directly
1 parent 899ee77 commit bc99c93

File tree

3 files changed

+31
-11
lines changed

3 files changed

+31
-11
lines changed

lightbug_http/header.mojo

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ struct RequestHeader:
239239
if proto != strHttp11:
240240
proto_str = proto
241241

242-
var request_uri = rest_of_request_line[:n]
242+
var request_uri = rest_of_request_line[:n + 1]
243243

244244
_ = self.set_method(method)
245245
_ = self.set_protocol(proto_str)

lightbug_http/sys/server.mojo

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ from lightbug_http.io.bytes import Bytes
1010
from lightbug_http.error import ErrorHandler
1111
from lightbug_http.strings import next_line, NetworkType
1212

13-
13+
@value
1414
struct SysServer:
1515
"""
1616
A Mojo-based server that accept incoming requests and delivers HTTP services.
@@ -19,6 +19,7 @@ struct SysServer:
1919
var error_handler: ErrorHandler
2020

2121
var name: String
22+
var __address: String
2223
var max_concurrent_connections: Int
2324
var max_requests_per_connection: Int
2425

@@ -30,6 +31,17 @@ struct SysServer:
3031
fn __init__(inout self) raises:
3132
self.error_handler = ErrorHandler()
3233
self.name = "lightbug_http"
34+
self.__address = "127.0.0.1"
35+
self.max_concurrent_connections = 1000
36+
self.max_requests_per_connection = 0
37+
self.max_request_body_size = 0
38+
self.tcp_keep_alive = False
39+
self.ln = SysListener()
40+
41+
fn __init__(inout self, own_address: String) raises:
42+
self.error_handler = ErrorHandler()
43+
self.name = "lightbug_http"
44+
self.__address = own_address
3345
self.max_concurrent_connections = 1000
3446
self.max_requests_per_connection = 0
3547
self.max_request_body_size = 0
@@ -39,11 +51,19 @@ struct SysServer:
3951
fn __init__(inout self, error_handler: ErrorHandler) raises:
4052
self.error_handler = error_handler
4153
self.name = "lightbug_http"
54+
self.__address = "127.0.0.1"
4255
self.max_concurrent_connections = 1000
4356
self.max_requests_per_connection = 0
4457
self.max_request_body_size = 0
4558
self.tcp_keep_alive = False
4659
self.ln = SysListener()
60+
61+
fn address(self) -> String:
62+
return self.__address
63+
64+
fn set_address(inout self, own_address: String) -> Self:
65+
self.__address = own_address
66+
return self
4767

4868
fn get_concurrency(self) -> Int:
4969
"""
@@ -70,6 +90,7 @@ struct SysServer:
7090
"""
7191
var __net = SysNet()
7292
var listener = __net.listen(NetworkType.tcp4.value, address)
93+
_ = self.set_address(address)
7394
self.serve(listener, handler)
7495

7596
fn serve[T: HTTPService](inout self, ln: SysListener, handler: T) raises -> None:
@@ -98,20 +119,20 @@ struct SysServer:
98119
var headers_and_body = next_line(request.rest, "\n\n")
99120
var request_headers = headers_and_body.first_line
100121
var request_body = headers_and_body.rest
101-
var uri = URI(request.first_line)
102-
try:
103-
uri.parse()
104-
except e:
105-
conn.close()
106-
raise Error("Failed to parse request line:" + e.__str__())
107-
108122
var header = RequestHeader(request_headers._buffer)
109123
try:
110124
header.parse(request.first_line)
111125
except e:
112126
conn.close()
113127
raise Error("Failed to parse request header: " + e.__str__())
114128

129+
var uri = URI(self.address() + String(header.request_uri()))
130+
try:
131+
uri.parse()
132+
except e:
133+
conn.close()
134+
raise Error("Failed to parse request line:" + e.__str__())
135+
115136
if header.content_length() != 0 and header.content_length() != (len(request_body) + 1):
116137
var remaining_body = Bytes()
117138
var remaining_len = header.content_length() - len(request_body + 1)

lightbug_http/uri.mojo

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,7 @@ struct URI:
197197
is_https = True
198198
remainder_uri = raw_uri[proto_end + 3:]
199199
else:
200-
raise Error("Invalid URI: Missing protocol")
201-
200+
remainder_uri = raw_uri
202201
# Parse the host and optional port
203202
var path_start = remainder_uri.find("/")
204203
var host_and_port: String

0 commit comments

Comments
 (0)