Changeset f710673 for lib/proxy.c


Ignore:
Timestamp:
2015-10-26T03:42:12Z (9 years ago)
Author:
dequis <dx@…>
Branches:
master
Children:
4e365ce
Parents:
5756890
git-author:
dequis <dx@…> (24-10-15 21:41:38)
git-committer:
dequis <dx@…> (26-10-15 03:42:12)
Message:

proxy: Turn phb_close() into phb_free(), use it for all g_free(phb)

More cleanup.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lib/proxy.c

    r5756890 rf710673  
    6565static int proxy_connect_none(const char *host, unsigned short port_, struct PHB *phb);
    6666
    67 static gboolean phb_close(struct PHB *phb)
    68 {
    69         close(phb->fd);
    70         phb->func(phb->data, -1, B_EV_IO_READ);
     67static gboolean phb_free(struct PHB *phb, gboolean success)
     68{
     69        if (!success) {
     70                if (phb->fd > 0) {
     71                        closesocket(phb->fd);
     72                }
     73                if (phb->func) {
     74                        phb->func(phb->data, -1, B_EV_IO_READ);
     75                }
     76        }
     77        if (phb->gai) {
     78                freeaddrinfo(phb->gai);
     79        }
    7180        g_free(phb->host);
    7281        g_free(phb);
     
    103112
    104113        freeaddrinfo(phb->gai);
     114        phb->gai = NULL;
     115
    105116        b_event_remove(phb->inpa);
    106117        phb->inpa = 0;
     118
    107119        if (phb->proxy_func) {
    108120                phb->proxy_func(phb->proxy_data, source, B_EV_IO_READ);
    109121        } else {
    110122                phb->func(phb->data, source, B_EV_IO_READ);
    111                 g_free(phb);
     123                phb_free(phb, TRUE);
    112124        }
    113125
     
    173185
    174186        if (fd < 0 && host) {
    175                 g_free(phb);
     187                phb_free(phb, TRUE);
    176188        }
    177189
     
    206218            (memcmp(HTTP_GOODSTRING2, inputline, strlen(HTTP_GOODSTRING2)) == 0)) {
    207219                phb->func(phb->data, source, B_EV_IO_READ);
    208                 g_free(phb->host);
    209                 g_free(phb);
    210                 return FALSE;
    211         }
    212 
    213         return phb_close(phb);
     220                return phb_free(phb, TRUE);
     221        }
     222
     223        return phb_free(phb, FALSE);
    214224}
    215225
     
    226236        len = sizeof(error);
    227237        if (getsockopt(source, SOL_SOCKET, SO_ERROR, &error, &len) < 0) {
    228                 return phb_close(phb);
     238                return phb_free(phb, FALSE);
    229239        }
    230240        sock_make_blocking(source);
     
    233243                   phb->host, phb->port);
    234244        if (send(source, cmd, strlen(cmd), 0) < 0) {
    235                 return phb_close(phb);
     245                return phb_free(phb, FALSE);
    236246        }
    237247
     
    244254                g_free(t2);
    245255                if (send(source, cmd, strlen(cmd), 0) < 0) {
    246                         return phb_close(phb);
     256                        return phb_free(phb, FALSE);
    247257                }
    248258        }
     
    250260        g_snprintf(cmd, sizeof(cmd), "\r\n");
    251261        if (send(source, cmd, strlen(cmd), 0) < 0) {
    252                 return phb_close(phb);
     262                return phb_free(phb, FALSE);
    253263        }
    254264
     
    281291        if (read(source, packet, 9) >= 4 && packet[1] == 90) {
    282292                phb->func(phb->data, source, B_EV_IO_READ);
    283                 g_free(phb->host);
    284                 g_free(phb);
    285                 return FALSE;
    286         }
    287 
    288         return phb_close(phb);
     293                return phb_free(phb, TRUE);
     294        }
     295
     296        return phb_free(phb, FALSE);
    289297}
    290298
     
    303311        len = sizeof(error);
    304312        if (getsockopt(source, SOL_SOCKET, SO_ERROR, &error, &len) < 0) {
    305                 return phb_close(phb);
     313                return phb_free(phb, FALSE);
    306314        }
    307315        sock_make_blocking(source);
    308316
    309317        if (!is_socks4a && !(hp = gethostbyname(phb->host))) {
    310                 return phb_close(phb);
     318                return phb_free(phb, FALSE);
    311319        }
    312320
     
    328336        packet[8] = 0;
    329337        if (write(source, packet, 9) != 9) {
    330                 return phb_close(phb);
     338                return phb_free(phb, FALSE);
    331339        }
    332340
     
    335343
    336344                if (write(source, phb->host, host_len) != host_len) {
    337                         return phb_close(phb);
     345                        return phb_free(phb, FALSE);
    338346                }
    339347        }
     
    365373
    366374        if (read(source, buf, 10) < 10) {
    367                 return phb_close(phb);
     375                return phb_free(phb, FALSE);
    368376        }
    369377        if ((buf[0] != 0x05) || (buf[1] != 0x00)) {
    370                 return phb_close(phb);
     378                return phb_free(phb, FALSE);
    371379        }
    372380
    373381        phb->func(phb->data, source, B_EV_IO_READ);
    374         g_free(phb->host);
    375         g_free(phb);
    376 
    377         return FALSE;
     382        return phb_free(phb, TRUE);
    378383}
    379384
     
    394399
    395400        if (write(source, buf, (5 + strlen(phb->host) + 2)) < (5 + strlen(phb->host) + 2)) {
    396                 phb_close(phb);
     401                phb_free(phb, FALSE);
    397402                return;
    398403        }
     
    409414
    410415        if (read(source, buf, 2) < 2) {
    411                 return phb_close(phb);
     416                return phb_free(phb, FALSE);
    412417        }
    413418
    414419        if ((buf[0] != 0x01) || (buf[1] != 0x00)) {
    415                 return phb_close(phb);
     420                return phb_free(phb, FALSE);
    416421        }
    417422
     
    429434
    430435        if (read(source, buf, 2) < 2) {
    431                 return phb_close(phb);
     436                return phb_free(phb, FALSE);
    432437        }
    433438
    434439        if ((buf[0] != 0x05) || (buf[1] == 0xff)) {
    435                 return phb_close(phb);
     440                return phb_free(phb, FALSE);
    436441        }
    437442
     
    444449                memcpy(buf + 2 + i + 1, proxypass, j);
    445450                if (write(source, buf, 3 + i + j) < 3 + i + j) {
    446                         return phb_close(phb);
     451                        return phb_free(phb, FALSE);
    447452                }
    448453
     
    468473        len = sizeof(error);
    469474        if (getsockopt(source, SOL_SOCKET, SO_ERROR, &error, &len) < 0) {
    470                 return phb_close(phb);
     475                return phb_free(phb, FALSE);
    471476        }
    472477        sock_make_blocking(source);
     
    486491
    487492        if (write(source, buf, i) < i) {
    488                 return phb_close(phb);
     493                return phb_free(phb, FALSE);
    489494        }
    490495
Note: See TracChangeset for help on using the changeset viewer.