diff --git a/contrib/library/network/server/nino/library/configuration/http_server_configuration.e b/contrib/library/network/server/nino/library/configuration/http_server_configuration.e index 5b552e35..f227a37c 100644 --- a/contrib/library/network/server/nino/library/configuration/http_server_configuration.e +++ b/contrib/library/network/server/nino/library/configuration/http_server_configuration.e @@ -26,6 +26,7 @@ feature -- Access Server_details : STRING = "Server : NINO Eiffel Server" document_root: STRING assign set_document_root + http_server_name: detachable STRING assign set_http_server_name http_server_port: INTEGER assign set_http_server_port max_tcp_clients: INTEGER assign set_max_tcp_clients socket_accept_timeout: INTEGER assign set_socket_accept_timeout @@ -37,6 +38,11 @@ feature -- Access feature -- Element change + set_http_server_name (v: like http_server_name) + do + http_server_name := v + end + set_http_server_port (v: like http_server_port) do http_server_port := v diff --git a/contrib/library/network/server/nino/library/http_handler.e b/contrib/library/network/server/nino/library/http_handler.e index 20602184..d075350f 100644 --- a/contrib/library/network/server/nino/library/http_handler.e +++ b/contrib/library/network/server/nino/library/http_handler.e @@ -43,12 +43,22 @@ feature -- Inherited Features local l_listening_socket: detachable TCP_STREAM_SOCKET l_http_port: INTEGER + l_factory: INET_ADDRESS_FACTORY do launched := False port := 0 is_stop_requested := False l_http_port := http_server_port - create l_listening_socket.make_server_by_port (l_http_port) + + if + attached http_server_name as l_servername and then + attached (create {INET_ADDRESS_FACTORY}).create_from_name (l_servername) as l_addr + then + create l_listening_socket.make_server_by_address_and_port (l_addr, l_http_port) + else + create l_listening_socket.make_server_by_port (l_http_port) + end + if not l_listening_socket.is_bound then if is_verbose then log ("Socket could not be bound on port " + l_http_port.out) @@ -164,6 +174,11 @@ feature -- Access: configuration Result := server_configuration.force_single_threaded end + http_server_name: detachable STRING + do + Result := server_configuration.http_server_name + end + http_server_port: INTEGER do Result := server_configuration.http_server_port @@ -215,6 +230,6 @@ invariant server_attached: server /= Void note - copyright: "2011-2011, Javier Velilla and others" + copyright: "2011-2012, Javier Velilla and others" license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)" end diff --git a/contrib/library/network/server/nino/library/tcp_stream_socket.e b/contrib/library/network/server/nino/library/tcp_stream_socket.e index 308dfebe..f51873cd 100644 --- a/contrib/library/network/server/nino/library/tcp_stream_socket.e +++ b/contrib/library/network/server/nino/library/tcp_stream_socket.e @@ -10,11 +10,24 @@ inherit NETWORK_STREAM_SOCKET create + make_server_by_address_and_port, make_server_by_port create {NETWORK_STREAM_SOCKET} make_from_descriptor_and_address +feature {NONE} -- Initialization + + make_server_by_address_and_port (an_address: INET_ADDRESS; a_port: INTEGER) + -- Create server socket on `an_address' and `a_port'. + require + valid_port: a_port >= 0 + do + make + create address.make_from_address_and_port (an_address, a_port) + bind + end + feature -- Basic operation send_message (a_msg: STRING)