using namespace std;
-#include <iostream>
-
namespace Msp {
namespace Http {
Client::Client():
sock(0),
event_disp(0),
+ user_agent("libmsphttp/0.1"),
request(0),
response(0)
{ }
if(request)
throw InvalidState("Already processing a request");
- RefPtr<Net::SockAddr> addr=Net::resolve(r.get_header("host")+":"+r.get_header("x-port"));
+ string host=r.get_header("Host");
+ if(host.find(':')==string::npos)
+ host+=":80";
+ RefPtr<Net::SockAddr> addr=Net::resolve(host);
delete sock;
sock=new Net::StreamSocket(addr->get_family());
sock->connect(*addr);
request=new Request(r);
+ if(!user_agent.empty())
+ request->set_header("User-Agent", user_agent);
delete response;
response=0;
while(IO::PollEvent ev=IO::poll(*sock, sock->get_events(), Time::zero))
sock->event(ev);
- if(response && response->get_complete())
+ if(response && response->is_complete())
{
signal_response_complete.emit(*response);
void Client::wait_response()
{
- while(!response || !response->get_complete())
+ while(request && (!response || !response->is_complete()))
tick();
}
in_buf.erase(0, len);
}
- if(response && response->get_complete())
+ if(response && response->is_complete())
{
signal_response_complete.emit(*response);