Changeset 45 in cheroxy for trunk/src/main.cpp
- Timestamp:
- 11/22/12 18:38:07 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/main.cpp
r44 r45 68 68 } 69 69 70 THREAD_FUNCTION_RETURN71 THREAD_FUNCTION_CALLING_CONVENTION72 CRXProxyMTWrapper (void * aThreadArg)73 {74 int aResult = 0;75 76 CRXSocket * aProxySocket = (CRXSocket *)aThreadArg;77 CRXProxy * aProxy = NULL;78 79 char aFilterFileExtension[] = "exe|gif|jpg|png|css|js|ico|swf|";80 char * aHttpMessage = NULL;81 int aHttpMessageLength = 0;82 83 /*----------------------------------------------------------------*/84 for (;;)85 {86 aResult = aProxySocket->Accept ();87 if (aResult < 0)88 {89 cerr << "Failed to accept." << endl;90 break;91 }92 93 if ((aProxy = new(std::nothrow) CRXProxy ()) == NULL)94 {95 cerr << "Failed to get proxy." << endl;96 aResult = -1;97 break;98 }99 100 aProxy->SetClientSocket (aResult);101 aProxy->SetServerTimeout (2);102 aProxy->SetRequestFilter (CRX_FILTER_REQUEST_FILE_EXTENSION,103 CRX_FILTER_MATCHED,104 aFilterFileExtension);105 106 aResult = aProxy->Forward ();107 if (aResult < 0)108 {109 cout << aProxy->GetErrorMessage () << endl;110 }111 112 if (!aProxy->CheckRequestFilter (CRX_FILTER_REQUEST_FILE_EXTENSION))113 {114 aHttpMessageLength = aProxy->GetHttpRequestLength ();115 aHttpMessage = (char *) calloc (aHttpMessageLength + 1, 1);116 aProxy->GetHttpRequest (aHttpMessage, aHttpMessageLength);117 CRX_DEBUG_TRACE ("== Request: \n%s\n", aHttpMessage);118 free (aHttpMessage);119 120 aHttpMessageLength = aProxy->GetHttpResponseHeaderLength ();121 aHttpMessage = (char *) calloc (aHttpMessageLength + 1, 1);122 aProxy->GetHttpResponseHeader (aHttpMessage, aHttpMessageLength);123 CRX_DEBUG_TRACE ("== Response: \n%s\n", aHttpMessage);124 free (aHttpMessage);125 126 aHttpMessageLength = aProxy->GetHttpResponseBodyLength ();127 aHttpMessage = (char *) calloc (aHttpMessageLength + 1, 1);128 aProxy->GetHttpResponseBody (aHttpMessage, aHttpMessageLength);129 CRX_DEBUG_TRACE_BIN (aHttpMessage, aHttpMessageLength, "== Content-Body: \n");130 free (aHttpMessage);131 }132 133 delete aProxy;134 }135 136 cout << " thread exit." << endl;137 /*----------------------------------------------------------------*/138 139 return (THREAD_FUNCTION_RETURN)0;140 }141 142 70 int ThreadPool (CRXSocket * aProxySocket, 143 71 const int aThreadPoolCount) … … 171 99 return aResult; 172 100 } 101 102 THREAD_FUNCTION_RETURN 103 THREAD_FUNCTION_CALLING_CONVENTION 104 CRXProxyMTWrapper (void * aThreadArg) 105 { 106 int aResult = 0; 107 108 CRXSocket & aProxySocket = *((CRXSocket *)aThreadArg); 109 CRXProxy * aProxy = NULL; 110 111 char aFilterFileExtension[] = "exe|gif|jpg|png|css|js|ico|swf|"; 112 113 /*----------------------------------------------------------------*/ 114 for (;;) 115 { 116 aResult = aProxySocket.Accept (); 117 if (aResult < 0) 118 { 119 cerr << aProxySocket.GetErrorMessage () << endl; 120 aResult = -1; 121 break; 122 } 123 124 aProxy = new(std::nothrow) CRXProxy (aResult); 125 if (aProxy == NULL) 126 { 127 cerr << "Failed to get proxy." << endl; 128 aResult = -1; 129 break; 130 } 131 aProxy->SetServerTimeout (2); 132 133 CRXFilter & aFilter = aProxy->GetFilter (); 134 CRXHttpRequest & aRequest = aProxy->GetHttpRequest (); 135 CRXHttpResponse & aResponse = aProxy->GetHttpResponse (); 136 137 aFilter.SetRequestFilter (CRX_FILTER_REQUEST_FILE_EXTENSION, 138 CRX_FILTER_MATCHED, 139 aFilterFileExtension); 140 141 aResult = aProxy->Forward (); 142 if (aResult < 0) 143 { 144 cerr << aProxy->GetErrorMessage () << endl; 145 } 146 147 if (!aFilter.CheckRequestFilter (CRX_FILTER_REQUEST_FILE_EXTENSION, aRequest)) 148 { 149 CRX_DEBUG_TRACE ("== Request: \n%s\n", aRequest.GetHeader ().c_str ()); 150 CRX_DEBUG_TRACE ("== Response: \n%s\n", aResponse.GetHeader ().c_str ()); 151 CRX_DEBUG_TRACE_BIN (aResponse.GetContentBody (), 152 aResponse.GetContentLength (), 153 "== Content-Body: \n"); 154 } 155 156 delete aProxy; 157 } 158 159 cout << " thread exit." << endl; 160 /*----------------------------------------------------------------*/ 161 162 return (THREAD_FUNCTION_RETURN)0; 163 }
Note:
See TracChangeset
for help on using the changeset viewer.