| 177 | } |
| 178 | |
| 179 | dmHttpClient::Result HttpWriteHeaders(dmHttpClient::HResponse response, void* user_data) |
| 180 | { |
| 181 | Worker* worker = (Worker*) user_data; |
| 182 | char* headers = 0; |
| 183 | if (worker->m_Request->m_HeadersLength > 0) { |
| 184 | headers = (char*) malloc(worker->m_Request->m_HeadersLength); |
| 185 | // NOTE: We must copy the buffer as retry might happen |
| 186 | // and dmStrTok is destructive |
| 187 | // We don't know the actual size inadvance, hence the malloc() |
| 188 | memcpy(headers, (char*) worker->m_Request->m_Headers, worker->m_Request->m_HeadersLength); |
| 189 | headers[worker->m_Request->m_HeadersLength-1] = '\0'; |
| 190 | |
| 191 | char* s, *last; |
| 192 | s = dmStrTok(headers, "\n", &last); |
| 193 | while (s) { |
| 194 | char* colon = strchr(s, ':'); |
| 195 | *colon = '\0'; |
| 196 | dmHttpClient::Result r = dmHttpClient::WriteHeader(response, s, colon + 1); |
| 197 | if (r != dmHttpClient::RESULT_OK) { |
| 198 | free(headers); |
| 199 | return r; |
| 200 | } |
| 201 | *colon = ':'; |
| 202 | s = dmStrTok(0, "\n", &last); |
| 203 | } |
| 204 | |
| 205 | } |
| 206 | |
| 207 | free(headers); |
| 208 | return dmHttpClient::RESULT_OK; |
| 209 | } |
| 210 | |
| 211 | static void MessageDestroyCallback(dmMessage::Message* message) |
| 212 | { |
nothing calls this directly
no test coverage detected