Lines Matching refs:pss

122 start_sending_dir(struct pss_deaddrop *pss)
124 if (pss->vhd->lwsac_head)
125 lwsac_reference(pss->vhd->lwsac_head);
126 pss->lwsac_head = pss->vhd->lwsac_head;
127 pss->dire = pss->vhd->dire_head;
128 pss->filelist_version = pss->vhd->filelist_version;
129 pss->first = 1;
267 struct pss_deaddrop *pss = (struct pss_deaddrop *)data;
278 if (pss->user[0]) {
279 lws_filename_purify_inplace(pss->user);
280 lws_snprintf(pss->filename, sizeof(pss->filename),
281 "%s/%s", pss->vhd->upload_dir, pss->user);
282 if (mkdir(pss->filename
288 lws_snprintf(pss->filename, sizeof(pss->filename),
289 "%s/%s/%s~", pss->vhd->upload_dir,
290 pss->user, filename2);
292 lws_snprintf(pss->filename, sizeof(pss->filename),
293 "%s/%s~", pss->vhd->upload_dir, filename2);
294 lwsl_notice("%s: filename '%s'\n", __func__, pss->filename);
296 pss->fd = (lws_filefd_type)(long long)lws_open(pss->filename,
298 if (pss->fd == LWS_INVALID_FILE) {
299 pss->response_code = HTTP_STATUS_INTERNAL_SERVER_ERROR;
301 pss->filename, errno);
309 pss->file_length += (unsigned int)len;
312 if (pss->file_length > pss->vhd->max_size) {
313 pss->response_code =
315 close((int)(lws_intptr_t)pss->fd);
316 pss->fd = LWS_INVALID_FILE;
317 unlink(pss->filename);
322 if (pss->fd != LWS_INVALID_FILE) {
323 n = (int)write((int)(lws_intptr_t)pss->fd, buf, (unsigned int)len);
326 lws_set_timeout(pss->wsi, PENDING_TIMEOUT_HTTP_CONTENT, 30);
332 if (pss->fd != LWS_INVALID_FILE)
333 close((int)(lws_intptr_t)pss->fd);
336 lws_strncpy(filename2, pss->filename, sizeof(filename2));
338 if (rename(pss->filename, filename2) < 0)
341 pss->fd = LWS_INVALID_FILE;
342 pss->response_code = HTTP_STATUS_OK;
343 scan_upload_dir(pss->vhd);
358 format_result(struct pss_deaddrop *pss)
362 p = (unsigned char *)pss->result + LWS_PRE;
364 end = p + sizeof(pss->result) - LWS_PRE - 1;
383 struct pss_deaddrop *pss = (struct pss_deaddrop *)user;
431 pss->vhd = vhd;
432 pss->wsi = wsi;
433 /* add ourselves to the list of live pss held in the vhd */
434 pss->pss_list = vhd->pss_head;
435 vhd->pss_head = pss;
437 m = lws_hdr_copy(wsi, pss->user, sizeof(pss->user),
441 __func__, pss->user);
443 pss->user[0] = '\0';
445 start_sending_dir(pss);
450 if (pss->lwsac_head)
451 lwsac_unreference(&pss->lwsac_head);
452 /* remove our closing pss from the list of live pss */
455 if (*ppss == pss) {
456 *ppss = pss->pss_list;
464 if (!pss || len < 10)
474 if ((int)strlen(pss->user) != n ||
475 memcmp(pss->user, ((const char *)in) + 8, (unsigned int)n)) {
478 __func__, pss->user,
503 if (pss->lwsac_head && !pss->dire)
507 if (pss->first) {
515 while (m-- && pss->dire) {
521 pss->first ? ' ' : ',',
522 (const char *)&pss->dire[1],
523 pss->dire->size,
524 (unsigned long long)pss->dire->mtime,
525 !strcmp(pss->user, pss->dire->user) &&
526 pss->user[0]);
527 pss->first = 0;
528 pss->dire = lp_to_dir_entry(pss->dire->next, next);
531 if (!pss->dire) {
534 if (pss->lwsac_head) {
535 lwsac_unreference(&pss->lwsac_head);
536 pss->lwsac_head = NULL;
542 !pss->dire));
547 if (pss->dire) {
555 if (pss->filelist_version != pss->vhd->filelist_version) {
558 start_sending_dir(pss);
569 if (!pss->spa) {
570 pss->vhd = vhd;
571 pss->wsi = wsi;
572 pss->spa = lws_spa_create(wsi, param_names,
574 1024, file_upload_cb, pss);
575 if (!pss->spa)
578 pss->filename[0] = '\0';
579 pss->file_length = 0;
581 pss->response_code = HTTP_STATUS_SERVICE_UNAVAILABLE;
583 m = lws_hdr_copy(wsi, pss->user, sizeof(pss->user),
586 lwsl_info("basic auth user: %s\n", pss->user);
588 pss->user[0] = '\0';
592 if (lws_spa_process(pss->spa, in, (int)len)) {
595 lws_spa_finalize(pss->spa);
597 pss->completed = 1;
604 lws_spa_finalize(pss->spa);
606 pss->completed = 1;
611 if (!pss->completed)
614 p = (unsigned char *)pss->result + LWS_PRE;
616 end = p + sizeof(pss->result) - LWS_PRE - 1;
618 if (!pss->sent_headers) {
619 n = format_result(pss);
622 (unsigned int)pss->response_code,
643 pss->sent_headers = 1;
648 if (!pss->sent_body) {
649 n = format_result(pss);
653 pss->sent_body = 1;
664 if (pss->spa) {
665 lws_spa_destroy(pss->spa);
666 pss->spa = NULL;