X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=etc%2Fafpd%2Fmessages.c;fp=etc%2Fafpd%2Fmessages.c;h=2812886229b7d5e96688012bf55a117f62d81c8f;hb=8bd8ce41c319619c64721f6e4d1f80df8ab79813;hp=164bb200ab1c69e9b10f9ab55d1023c43af679b2;hpb=dc8a6815946e2c15af3565aaa42eb631a62812cc;p=netatalk.git diff --git a/etc/afpd/messages.c b/etc/afpd/messages.c index 164bb200..28128862 100644 --- a/etc/afpd/messages.c +++ b/etc/afpd/messages.c @@ -1,5 +1,5 @@ /* - * $Id: messages.c,v 1.22 2009-10-29 13:38:15 didg Exp $ + * $Id: messages.c,v 1.23 2009-11-24 15:44:40 didg Exp $ * * Copyright (c) 1997 Adrian Sun (asun@zoology.washington.edu) * All Rights Reserved. See COPYRIGHT. @@ -64,7 +64,7 @@ void readmessage(AFPObj *obj) message=fopen(filename, "r"); if (message==NULL) { - LOG(log_info, logtype_afpd, "Unable to open file %s", filename); + /* try without the process id */ sprintf(filename, "%s/message", SERVERTEXT); message=fopen(filename, "r"); } @@ -129,12 +129,20 @@ int afp_getsrvrmesg(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, siz memcpy(&type, ibuf + 2, sizeof(type)); memcpy(&bitmap, ibuf + 4, sizeof(bitmap)); + message = servermesg; switch (ntohs(type)) { case AFPMESG_LOGIN: /* login */ - message = obj->options.loginmesg; + /* at least TIGER loses server messages + * if it receives a server msg attention before + * it has asked the login msg... + * Workaround: concatenate the two if any, ugly. + */ + if (*message && *obj->options.loginmesg) { + strlcat(message, " - ", MAXMESGSIZE); + } + strlcat(message, obj->options.loginmesg, MAXMESGSIZE); break; case AFPMESG_SERVER: /* server */ - message = servermesg; break; default: return AFPERR_BITMAP; @@ -182,6 +190,6 @@ int afp_getsrvrmesg(AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, siz *rbuflen += 1; } *rbuflen += outlen; - + *message = 0; return AFP_OK; }