@@ -114,25 +114,26 @@ class HttpRequest {
114114
115115 // First, read all headers
116116 std::string headerData;
117- size_t headerEnd;
118- bool headerDone = false ;
119117 std::string extraReadPastHeader;
120- while (!headerDone ) {
118+ for (;; ) {
121119 bytesRead = recv (serverSocket, buffer, sizeof (buffer) - 1 , 0 );
122120 if (bytesRead <= 0 ) {
123121 throw std::runtime_error (" Error while reading headers from socket" );
124122 }
125123 buffer[bytesRead] = ' \0 ' ;
126124 headerData.append (buffer);
127125
128- // Check for end of headers (http header says "\r\n\r\n")
129- headerEnd = headerData.find (" \r\n\r\n " );
130- if (headerEnd != std::string::npos) {
131- headerDone = true ;
132- if (headerEnd < headerData.size ()-4 ) {
133- // We read something past the header
134- extraReadPastHeader = headerData.substr (headerEnd+4 );
135- }
126+ const size_t endRnRn = headerData.find (" \r\n\r\n " );
127+ if (endRnRn != std::string::npos) {
128+ if (endRnRn < headerData.size () - 4 )
129+ extraReadPastHeader = headerData.substr (endRnRn + 4 );
130+ break ;
131+ }
132+ const size_t endNN = headerData.find (" \n\n " );
133+ if (endNN != std::string::npos) {
134+ if (endNN < headerData.size () - 2 )
135+ extraReadPastHeader = headerData.substr (endNN + 2 );
136+ break ;
136137 }
137138 }
138139
@@ -142,7 +143,7 @@ class HttpRequest {
142143 std::istringstream headerStream (headerData);
143144 std::string line;
144145 ssize_t contentLength = 0 ;
145- while (std::getline (headerStream, line) && line != " \r " ) {
146+ while (std::getline (headerStream, line) && line != " \r " && line != " \n " ) {
146147 size_t pos = line.find (' :' );
147148 if (pos != std::string::npos) {
148149 std::string key = line.substr (0 , pos);
@@ -280,6 +281,7 @@ void writeChatCompletionChunk(HttpRequest &request, const std::string &delta, co
280281 choice.finish_reason = " stop" ;
281282 } else {
282283 choice.delta = ChatMessageDelta (" assistant" , delta);
284+ choice.has_delta = true ;
283285 }
284286 ChatCompletionChunk chunk = ChatCompletionChunk (choice);
285287
0 commit comments