Lines Matching refs:pp
51 struct pingpong *pp, bool disconnecting)
56 data->set.server_response_timeout: pp->response_time;
59 remaining time, or use pp->response because SERVER_RESPONSE_TIMEOUT is
66 Curl_timediff(Curl_now(), pp->response); /* spent time */
84 struct pingpong *pp, bool block,
91 timediff_t timeout_ms = Curl_pp_state_timeout(data, pp, disconnecting);
109 else if(pp->overflow)
112 else if(!pp->sendleft && Curl_conn_data_pending(data, FIRSTSOCKET))
116 rc = Curl_socket_check(pp->sendleft?CURL_SOCKET_BAD:sock, /* reading */
118 pp->sendleft?sock:CURL_SOCKET_BAD, /* writing */
137 result = pp->statemachine(data, data->conn);
143 void Curl_pp_init(struct pingpong *pp)
145 pp->nread_resp = 0;
146 pp->response = Curl_now(); /* start response time-out now! */
147 pp->pending_resp = TRUE;
148 Curl_dyn_init(&pp->sendbuf, DYN_PINGPPONG_CMD);
149 Curl_dyn_init(&pp->recvbuf, DYN_PINGPPONG_CMD);
163 struct pingpong *pp,
177 DEBUGASSERT(pp->sendleft == 0);
178 DEBUGASSERT(pp->sendsize == 0);
179 DEBUGASSERT(pp->sendthis == NULL);
185 Curl_dyn_reset(&pp->sendbuf);
186 result = Curl_dyn_vaddf(&pp->sendbuf, fmt, args);
191 result = Curl_dyn_addn(&pp->sendbuf, "\r\n", 2);
195 pp->pending_resp = TRUE;
196 write_len = Curl_dyn_len(&pp->sendbuf);
197 s = Curl_dyn_ptr(&pp->sendbuf);
215 pp->sendthis = s;
216 pp->sendsize = write_len;
217 pp->sendleft = write_len - bytes_written;
220 pp->sendthis = NULL;
221 pp->sendleft = pp->sendsize = 0;
222 pp->response = Curl_now();
239 CURLcode Curl_pp_sendf(struct Curl_easy *data, struct pingpong *pp,
246 result = Curl_pp_vsendf(data, pp, fmt, ap);
279 struct pingpong *pp,
289 if(pp->nfinal) {
292 size_t full = Curl_dyn_len(&pp->recvbuf);
295 Curl_dyn_tail(&pp->recvbuf, full - pp->nfinal);
297 pp->nfinal = 0; /* now gone */
299 if(!pp->overflow) {
315 result = Curl_dyn_addn(&pp->recvbuf, buffer, gotbytes);
321 pp->nread_resp += gotbytes;
325 char *line = Curl_dyn_ptr(&pp->recvbuf);
326 char *nl = memchr(line, '\n', Curl_dyn_len(&pp->recvbuf));
328 /* a newline is CRLF in pp-talk, so the CR is ignored as
346 if(pp->endofresp(data, conn, line, length, code)) {
351 pp->nfinal = length;
352 if(Curl_dyn_len(&pp->recvbuf) > length)
353 pp->overflow = Curl_dyn_len(&pp->recvbuf) - length;
355 pp->overflow = 0;
356 *size = pp->nread_resp; /* size of the response */
357 pp->nread_resp = 0; /* restart */
360 if(Curl_dyn_len(&pp->recvbuf) > length)
362 Curl_dyn_tail((&pp->recvbuf), Curl_dyn_len(&pp->recvbuf) - length);
364 Curl_dyn_reset(&pp->recvbuf);
368 pp->overflow = 0;
374 pp->pending_resp = FALSE;
380 struct pingpong *pp, curl_socket_t *socks)
385 if(pp->sendleft) {
395 struct pingpong *pp)
400 pp->sendthis + pp->sendsize - pp->sendleft,
401 pp->sendleft, &written);
405 if(written != (ssize_t)pp->sendleft) {
407 pp->sendleft -= written;
410 pp->sendthis = NULL;
411 pp->sendleft = pp->sendsize = 0;
412 pp->response = Curl_now();
417 CURLcode Curl_pp_disconnect(struct pingpong *pp)
419 Curl_dyn_free(&pp->sendbuf);
420 Curl_dyn_free(&pp->recvbuf);
424 bool Curl_pp_moredata(struct pingpong *pp)
426 return (!pp->sendleft && Curl_dyn_len(&pp->recvbuf));