소스 검색

* HttpConnection.cc:
* common.h: defined the user agent name as macro

Tatsuhiro Tsujikawa 19 년 전
부모
커밋
44e1dafe7b
4개의 변경된 파일29개의 추가작업 그리고 7개의 파일을 삭제
  1. 1 1
      src/FtpConnection.cc
  2. 2 2
      src/HttpConnection.cc
  3. 24 4
      src/HttpConnection.h
  4. 2 0
      src/common.h

+ 1 - 1
src/FtpConnection.cc

@@ -127,7 +127,7 @@ bool FtpConnection::isEndOfResponse(int status, string response) const {
   if(response.size() <= 4) {
     return false;
   }
-  // if forth character of buf is '-', then multi line response is expected.
+  // if 4th character of buf is '-', then multi line response is expected.
   if(response.at(3) == '-') {
     // multi line response
     string::size_type p;

+ 2 - 2
src/HttpConnection.cc

@@ -39,7 +39,7 @@ void HttpConnection::sendProxyRequest() const {
   string request =
     string("CONNECT ")+req->getHost()+":"+Util::llitos(req->getPort())+
     string(" HTTP/1.1\r\n")+
-    "User-Agent: aria2\r\n"+
+    "User-Agent: "+USER_AGENT+"\r\n"+
     "Proxy-Connection: close\r\n"+
     "Host: "+getHost(req->getHost(), req->getPort())+"\r\n";
   if(useProxyAuth()) {
@@ -66,7 +66,7 @@ string HttpConnection::createRequest(const Segment& segment) const {
      req->getCurrentUrl() :
      ((req->getDir() == "/" ? "/" : req->getDir()+"/")+req->getFile()))+
     string(" HTTP/1.1\r\n")+
-    "User-Agent: aria2\r\n"+
+    "User-Agent: "+USER_AGENT+"\r\n"+
     "Connection: close\r\n"+
     "Accept: */*\r\n"+        /* */
     "Host: "+getHost(req->getHost(), req->getPort())+"\r\n"+

+ 24 - 4
src/HttpConnection.h

@@ -22,20 +22,17 @@
 #ifndef _D_HTTP_CONNECTION_H_
 #define _D_HTTP_CONNECTION_H_
 
-#include "SegmentMan.h"
+#include "Segment.h"
 #include "Socket.h"
 #include "Request.h"
 #include "Option.h"
 #include "Logger.h"
 #include "HttpHeader.h"
 #include "common.h"
-#include <map>
 #include <string>
 
 using namespace std;
 
-//typedef multimap<string, string> HttpHeader;
-
 class HttpConnection {
 private:
   string getHost(const string& host, int port) const;
@@ -53,8 +50,31 @@ private:
 public:
   HttpConnection(int cuid, const Socket* socket, const Request* req, const Option* op, const Logger* logger);
 
+  /**
+   * Sends Http request.
+   * If segment.sp+segment.ds > 0 then Range header is added.
+   * This method is used in HTTP/HTTP downloading and FTP downloading via
+   * HTTP proxy(GET method).
+   * @param segment indicates starting postion of the file for downloading
+   */
   void sendRequest(const Segment& segment) const;
+
+  /**
+   * Sends Http proxy request using CONNECT method.
+   */
   void sendProxyRequest() const;
+
+  /**
+   * Receives HTTP response from the server and store the response header
+   * into the variable headers.
+   * If response header is not fully received, received header is buffured
+   * in this object and headers is undefined and this method returns 0. 
+   * You should continue to call this method until whole response header is
+   * received and this method returns non-zero value.
+   * 
+   * @param headers holder to store HTTP response header
+   * @return HTTP status or 0 if whole response header is not received
+   */
   int receiveResponse(HttpHeader& headers);
 };
 

+ 2 - 0
src/common.h

@@ -31,4 +31,6 @@
 # define LONG_LONG_MIN      (-LONG_LONG_MAX - 1LL)
 #endif // LONG_LONG_MAX
 
+#define USER_AGENT "aria2"
+
 using namespace std;