diff --git a/rocs/HTTPServ.rb b/rocs/HTTPServ.rb old mode 100644 new mode 100755 index 0cd69a9..4e68471 --- a/rocs/HTTPServ.rb +++ b/rocs/HTTPServ.rb @@ -1,3 +1,4 @@ +#!/usr/local/bin/ruby require 'open3' require 'json' require './tcpserver' diff --git a/rocs/HttpRequest/HttpRequest.rb b/rocs/HttpRequest/HttpRequest.rb index 78fbf7f..cbedc99 100644 --- a/rocs/HttpRequest/HttpRequest.rb +++ b/rocs/HttpRequest/HttpRequest.rb @@ -20,6 +20,9 @@ def initialize(request_str) # spoof a socket read on the request string request = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP) socket_spoof = StringIO.open(request_str) + #puts "request_str" + #puts request_str + #puts "end" request.parse(socket_spoof) # grab HTTP request parameters @type = request.request_method diff --git a/rocs/tcpserver.rb b/rocs/tcpserver.rb index a8063b2..7e7246e 100644 --- a/rocs/tcpserver.rb +++ b/rocs/tcpserver.rb @@ -66,22 +66,31 @@ def start @status = :Running while @status == :Running begin - puts "listening" - puts "have client" - client_sock = @sock.accept - if client_sock - puts "#{client_sock}" - puts "some client is coming" - - request = client_sock.gets - puts "#{request}" - response = request - response = @http.process(request) - @logger.info(response.to_s) - write_data(client_sock, response) - - client_sock.close - end + puts "listening" + puts "have client" + client_sock = @sock.accept + if client_sock + puts "#{client_sock}" + puts "some client is coming" + all_data = [] + while partial_data = client_sock.gets and partial_data !~ /^\s*$/m + #puts partial_data + all_data << partial_data + end + print "done" + #socket.close + request = all_data.join() + request =~/^Content-Length:\s*(\d*)/ + length = $1 + length = length.to_i + #puts "length is #{length}\n\n\n" + request = request + "\n" + client_sock.read(length) + response = @http.process(request) + @logger.info(response.to_s) + write_data(client_sock, response) + + client_sock.close + end rescue Errno::EBADF, IOError => ex # if the listening socket was closed in TcpServer#shutdown,