final public void run_request(WebConnection wc) throws IOException
{
 String firstline=null;
 boolean retry=false;

 try
 {
     raw_send_request(wc);
     wc.socket.setSoTimeout (request_timeout);
     firstline=wc.webis.readLine();
 }
 catch (IOException e)
 {
     retry=true;
 }
 if(firstline==null) retry=true;
 if(retry)
 {
     //  retry
     if(ConnectionHandler.trace_keepalive && wc.releasedAt>0)
     {
       int tmout=(int)(System.currentTimeMillis()-wc.releasedAt);
       System.out.println("[TRACE "+Thread.currentThread().getName()+"] * Remote end CLOSED alive connection to "+wc+", time="+(tmout/1000)+" s.");
     } else
	 if(mgr.loglevel>3) System.out.println(Thread.currentThread().getName()+" No response from server "+getURL()+", will retry.");
     /* try to reconnect and resend */
     wc.reconnect();
     raw_send_request(wc);
     wc.socket.setSoTimeout (request_timeout);
     firstline=wc.webis.readLine();
 }

 read_headers(firstline,wc);
}