summaryrefslogtreecommitdiff
path: root/appl/charon
diff options
context:
space:
mode:
Diffstat (limited to 'appl/charon')
-rw-r--r--appl/charon/chutils.b6
-rw-r--r--appl/charon/chutils.m3
-rw-r--r--appl/charon/common.m1
-rw-r--r--appl/charon/cookiesrv.b2
-rw-r--r--appl/charon/ftp.b15
-rw-r--r--appl/charon/http.b11
6 files changed, 23 insertions, 15 deletions
diff --git a/appl/charon/chutils.b b/appl/charon/chutils.b
index 8d8bdf33..3f507108 100644
--- a/appl/charon/chutils.b
+++ b/appl/charon/chutils.b
@@ -201,6 +201,10 @@ init(ch: Charon, c: CharonUtils, argl: list of string, evc: chan of ref E->Event
return Url->PATH;
U->init();
+ DI = load Dial Dial->PATH;
+ if(DI == nil)
+ return Dial->PATH;
+
T = load StringIntTab StringIntTab->PATH;
if(T == nil)
return StringIntTab->PATH;
@@ -801,7 +805,7 @@ Netconn.new(id: int) : ref Netconn
"", # host
0, # port
"", # scheme
- sys->Connection(nil, nil, ""), # conn
+ ref Dial->Connection(nil, nil, ""), # conn
nil, # ssl context
0, # undetermined ssl version
NCfree, # state
diff --git a/appl/charon/chutils.m b/appl/charon/chutils.m
index 15c3308f..8cff7163 100644
--- a/appl/charon/chutils.m
+++ b/appl/charon/chutils.m
@@ -13,6 +13,7 @@ CharonUtils: module
J: Script;
CH: Charon;
CK: Cookiesrv;
+ DI: Dial;
# HTTP methods
HGet, HPost : con iota;
@@ -234,7 +235,7 @@ CharonUtils: module
host: string; # host name
port: int; # port number
scheme: string; # Url scheme ("http", "file", etc.)
- conn: Sys->Connection; # fds, etc.
+ conn: ref Dial->Connection; # fds, etc.
sslx: ref SSL3->Context; # ssl connection
vers: int; # ssl version
state: int; # NCfree, etc.
diff --git a/appl/charon/common.m b/appl/charon/common.m
index 714d6d6e..56a61782 100644
--- a/appl/charon/common.m
+++ b/appl/charon/common.m
@@ -8,6 +8,7 @@ include "keyring.m";
include "asn1.m";
include "pkcs.m";
include "x509.m";
+include "dial.m";
include "sslsession.m";
include "ssl3.m";
include "convcs.m";
diff --git a/appl/charon/cookiesrv.b b/appl/charon/cookiesrv.b
index f50c1ce9..1670e63c 100644
--- a/appl/charon/cookiesrv.b
+++ b/appl/charon/cookiesrv.b
@@ -433,7 +433,7 @@ save()
ix := getallcookies(doms, cka, 0);
mergesort(cka, nil, SORT_TOUCHED);
- for (i := 0; i < ncookies; i++) {
+ for (i := 0; i < ix; i++) {
ck := cka[i];
if (ck.expire > now)
sys->fprint(fd, "%s\n", cookie2str(cka[i]));
diff --git a/appl/charon/ftp.b b/appl/charon/ftp.b
index 4f564a71..20834235 100644
--- a/appl/charon/ftp.b
+++ b/appl/charon/ftp.b
@@ -8,6 +8,7 @@ sys: Sys;
U: Url;
Parsedurl: import U;
S: String;
+DI: Dial;
CU: CharonUtils;
Netconn, ByteSource, Header, config: import CU;
@@ -27,6 +28,7 @@ init(c: CharonUtils)
U = load Url Url->PATH;
if (U != nil)
U->init();
+ DI = CU->DI;
dbg = int (CU->config).dbg['n'];
}
@@ -35,14 +37,13 @@ connect(nc: ref Netconn, bs: ref ByteSource)
port := nc.port;
if(port == 0)
port = FTPPORT;
- addr := "tcp!" + nc.host + "!" + string port;
+ addr := DI->netmkaddr(nc.host, "net", string port);
if(dbg)
sys->print("ftp %d: dialing %s\n", nc.id, addr);
err := "";
ctlfd : ref sys->FD = nil;
- rv : int;
- (rv, nc.conn) = sys->dial(addr, nil);
- if(rv < 0) {
+ nc.conn = DI->dial(addr, nil);
+ if(nc.conn == nil) {
syserr := sys->sprint("%r");
if(S->prefix("cs: dialup", syserr))
err = syserr[4:];
@@ -113,11 +114,11 @@ dialdata(nc: ref Netconn, ctlfd: ref sys->FD) : string
if(paddr == "")
return "passive mode protocol botch: " + msg;
# dial data port
- daddr := "tcp!" + paddr + "!" + pport;
+ daddr := DI->netmkaddr(paddr, "net", pport);
if(dbg)
sys->print("ftp %d: dialing data %s", nc.id, daddr);
- (ok, dnet) := sys->dial(daddr, nil);
- if(ok < 0)
+ dnet := DI->dial(daddr, nil);
+ if(dnet == nil)
return "data dial error";
nc.conn.dfd = dnet.dfd;
return "";
diff --git a/appl/charon/http.b b/appl/charon/http.b
index d1208091..05d2396c 100644
--- a/appl/charon/http.b
+++ b/appl/charon/http.b
@@ -52,6 +52,7 @@ U: Url;
S: String;
C: Ctype;
T: StringIntTab;
+DI: Dial;
CU: CharonUtils;
Netconn, ByteSource, Header, config, Nameval : import CU;
@@ -251,6 +252,7 @@ init(cu: CharonUtils)
U = load Url Url->PATH;
if (U != nil)
U->init();
+ DI = cu->DI;
C = cu->C;
T = load StringIntTab StringIntTab->PATH;
# D = load Date CU->loadpath(Date->PATH);
@@ -280,13 +282,12 @@ connect(nc: ref Netconn, bs: ref ByteSource)
if(config.httpproxy.port != "")
dialport = config.httpproxy.port;
}
- addr := "tcp!" + dialhost + "!" + dialport;
+ addr := DI->netmkaddr(dialhost, "net", dialport);
err := "";
if(dbg)
sys->print("http %d: dialing %s\n", nc.id, addr);
- rv: int;
- (rv, nc.conn) = sys->dial(addr, nil);
- if(rv < 0) {
+ nc.conn = DI->dial(addr, nil);
+ if(nc.conn == nil) {
syserr := sys->sprint("%r");
if(S->prefix("cs: dialup", syserr))
err = syserr[4:];
@@ -352,7 +353,7 @@ vers = 3;
}
}
-constate(msg: string, conn: Sys->Connection)
+constate(msg: string, conn: ref Dial->Connection)
{
fd := conn.dfd;
fdfd := -1;