[mod_cgi] skip local-redir handling if to self (fixes #2779, #2108)
[lighttpd.git] / src / joblist.c
blob85905b7552d7c2661df64f2284e012b25be0adad
1 #include "first.h"
3 #include "base.h"
4 #include "joblist.h"
5 #include "log.h"
7 #include <stdlib.h>
8 #include <string.h>
10 int joblist_append(server *srv, connection *con) {
11 if (con->in_joblist) return 0;
13 if (srv->joblist->size == 0) {
14 srv->joblist->size = 16;
15 srv->joblist->ptr = malloc(sizeof(*srv->joblist->ptr) * srv->joblist->size);
16 force_assert(NULL != srv->joblist->ptr);
17 } else if (srv->joblist->used == srv->joblist->size) {
18 srv->joblist->size += 16;
19 srv->joblist->ptr = realloc(srv->joblist->ptr, sizeof(*srv->joblist->ptr) * srv->joblist->size);
20 force_assert(NULL != srv->joblist->ptr);
23 srv->joblist->ptr[srv->joblist->used++] = con;
25 return 0;
28 void joblist_free(server *srv, connections *joblist) {
29 UNUSED(srv);
31 free(joblist->ptr);
32 free(joblist);
35 connection *fdwaitqueue_unshift(server *srv, connections *fdwaitqueue) {
36 connection *con;
37 UNUSED(srv);
40 if (fdwaitqueue->used == 0) return NULL;
42 con = fdwaitqueue->ptr[0];
44 memmove(fdwaitqueue->ptr, &(fdwaitqueue->ptr[1]), --fdwaitqueue->used * sizeof(*(fdwaitqueue->ptr)));
46 return con;
49 int fdwaitqueue_append(server *srv, connection *con) {
50 if (srv->fdwaitqueue->size == 0) {
51 srv->fdwaitqueue->size = 16;
52 srv->fdwaitqueue->ptr = malloc(sizeof(*(srv->fdwaitqueue->ptr)) * srv->fdwaitqueue->size);
53 force_assert(NULL != srv->fdwaitqueue->ptr);
54 } else if (srv->fdwaitqueue->used == srv->fdwaitqueue->size) {
55 srv->fdwaitqueue->size += 16;
56 srv->fdwaitqueue->ptr = realloc(srv->fdwaitqueue->ptr, sizeof(*(srv->fdwaitqueue->ptr)) * srv->fdwaitqueue->size);
57 force_assert(NULL != srv->fdwaitqueue->ptr);
60 srv->fdwaitqueue->ptr[srv->fdwaitqueue->used++] = con;
62 return 0;
65 void fdwaitqueue_free(server *srv, connections *fdwaitqueue) {
66 UNUSED(srv);
67 free(fdwaitqueue->ptr);
68 free(fdwaitqueue);