better handle continuation lines (from Aidan Cully)

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@11045 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
2002-07-01 16:45:02 +00:00
parent 406ec954e9
commit cd4b3ab2cd

View File

@@ -313,6 +313,7 @@ getreply (int expecteof)
int c; int c;
struct sigaction sa, osa; struct sigaction sa, osa;
char buf[8192]; char buf[8192];
int reply_code;
int long_warn = 0; int long_warn = 0;
sigemptyset (&sa.sa_mask); sigemptyset (&sa.sa_mask);
@@ -322,6 +323,7 @@ getreply (int expecteof)
p = buf; p = buf;
reply_code = 0;
while (1) { while (1) {
c = getc (cin); c = getc (cin);
switch (c) { switch (c) {
@@ -351,14 +353,17 @@ getreply (int expecteof)
if(isdigit(buf[0])){ if(isdigit(buf[0])){
sscanf(buf, "%d", &code); sscanf(buf, "%d", &code);
if(code == 631){ if(code == 631){
code = 0;
sec_read_msg(buf, prot_safe); sec_read_msg(buf, prot_safe);
sscanf(buf, "%d", &code); sscanf(buf, "%d", &code);
lead_string = "S:"; lead_string = "S:";
} else if(code == 632){ } else if(code == 632){
code = 0;
sec_read_msg(buf, prot_private); sec_read_msg(buf, prot_private);
sscanf(buf, "%d", &code); sscanf(buf, "%d", &code);
lead_string = "P:"; lead_string = "P:";
}else if(code == 633){ }else if(code == 633){
code = 0;
sec_read_msg(buf, prot_confidential); sec_read_msg(buf, prot_confidential);
sscanf(buf, "%d", &code); sscanf(buf, "%d", &code);
lead_string = "C:"; lead_string = "C:";
@@ -366,9 +371,11 @@ getreply (int expecteof)
lead_string = "!!"; lead_string = "!!";
else else
lead_string = ""; lead_string = "";
if(code != 0 && reply_code == 0)
reply_code = code;
if (verbose > 0 || (verbose > -1 && code > 499)) if (verbose > 0 || (verbose > -1 && code > 499))
fprintf (stdout, "%s%s\n", lead_string, buf); fprintf (stdout, "%s%s\n", lead_string, buf);
if (buf[3] == ' ') { if (code == reply_code && buf[3] == ' ') {
strlcpy (reply_string, buf, sizeof(reply_string)); strlcpy (reply_string, buf, sizeof(reply_string));
if (code >= 200) if (code >= 200)
cpend = 0; cpend = 0;