Skip to content
Snippets Groups Projects
Commit b13afba0 authored by rswindell's avatar rswindell
Browse files

Changed SENDERPORT header field to ASCII instead of BINARY.

Added support for FORWARDED header field to smb_hfieldtype().
Better thread-safety for smb_zonestr() and smb_faddrtoa().
parent 4095fc5c
No related branches found
No related tags found
No related merge requests found
...@@ -189,7 +189,8 @@ ...@@ -189,7 +189,8 @@
#define SENDERIPADDR 0x07 /* for tracing */ #define SENDERIPADDR 0x07 /* for tracing */
#define SENDERHOSTNAME 0x08 /* for tracing */ #define SENDERHOSTNAME 0x08 /* for tracing */
#define SENDERPROTOCOL 0x09 /* for tracing */ #define SENDERPROTOCOL 0x09 /* for tracing */
#define SENDERPORT 0x0a /* for tracing */ #define SENDERPORT_BIN 0x0a /* deprecated */
#define SENDERPORT 0x0b /* for tracing */
#define AUTHOR 0x10 #define AUTHOR 0x10
#define AUTHORAGENT 0x11 #define AUTHORAGENT 0x11
......
...@@ -54,6 +54,7 @@ char* SMBCALL smb_hfieldtype(ushort type) ...@@ -54,6 +54,7 @@ char* SMBCALL smb_hfieldtype(ushort type)
case SENDERIPADDR: return("SenderIpAddr"); case SENDERIPADDR: return("SenderIpAddr");
case SENDERHOSTNAME: return("SenderHostName"); case SENDERHOSTNAME: return("SenderHostName");
case SENDERPROTOCOL: return("SenderProtocol"); case SENDERPROTOCOL: return("SenderProtocol");
case SENDERPORT_BIN return("SenderPortBin");
case SENDERPORT: return("SenderPort"); case SENDERPORT: return("SenderPort");
case REPLYTO: return("Reply-To"); /* RFC-compliant */ case REPLYTO: return("Reply-To"); /* RFC-compliant */
...@@ -76,6 +77,7 @@ char* SMBCALL smb_hfieldtype(ushort type) ...@@ -76,6 +77,7 @@ char* SMBCALL smb_hfieldtype(ushort type)
case SMB_EXPIRATION: return("Expiration"); case SMB_EXPIRATION: return("Expiration");
case SMB_PRIORITY: return("Priority"); case SMB_PRIORITY: return("Priority");
case SMB_COST: return("Cost"); case SMB_COST: return("Cost");
case FORWARDED: return("Forwarded");
/* All X-FTN-* are RFC-compliant */ /* All X-FTN-* are RFC-compliant */
case FIDOCTRL: return("X-FTN-Kludge"); case FIDOCTRL: return("X-FTN-Kludge");
...@@ -166,11 +168,13 @@ char* SMBCALL smb_hashsource(smbmsg_t* msg, int source) ...@@ -166,11 +168,13 @@ char* SMBCALL smb_hashsource(smbmsg_t* msg, int source)
/****************************************************************************/ /****************************************************************************/
/* Converts when_t.zone into ASCII format */ /* Converts when_t.zone into ASCII format */
/****************************************************************************/ /****************************************************************************/
char* SMBCALL smb_zonestr(short zone, char* outstr) char* SMBCALL smb_zonestr(short zone, char* str)
{ {
char* plus; char* plus;
static char str[32]; static char buf[32];
if(str==NULL)
str=buf;
switch((ushort)zone) { switch((ushort)zone) {
case 0: return("UTC"); case 0: return("UTC");
case AST: return("AST"); case AST: return("AST");
...@@ -229,31 +233,27 @@ char* SMBCALL smb_zonestr(short zone, char* outstr) ...@@ -229,31 +233,27 @@ char* SMBCALL smb_zonestr(short zone, char* outstr)
plus=""; plus="";
sprintf(str,"UTC%s%d:%02u", plus, zone/60, zone<0 ? (-zone)%60 : zone%60); sprintf(str,"UTC%s%d:%02u", plus, zone/60, zone<0 ? (-zone)%60 : zone%60);
if(outstr==NULL) return(str);
return(str);
strcpy(outstr,str);
return(outstr);
} }
/****************************************************************************/ /****************************************************************************/
/* Returns an ASCII string for FidoNet address 'addr' */ /* Returns an ASCII string for FidoNet address 'addr' */
/****************************************************************************/ /****************************************************************************/
char* SMBCALL smb_faddrtoa(fidoaddr_t* addr, char* outstr) char* SMBCALL smb_faddrtoa(fidoaddr_t* addr, char* str)
{ {
static char str[64]; static char buf[64];
char point[25]; char point[25];
if(addr==NULL) if(addr==NULL)
return("0:0/0"); return("0:0/0");
if(str==NULL)
str=buf;
sprintf(str,"%hu:%hu/%hu",addr->zone,addr->net,addr->node); sprintf(str,"%hu:%hu/%hu",addr->zone,addr->net,addr->node);
if(addr->point) { if(addr->point) {
sprintf(point,".%hu",addr->point); sprintf(point,".%hu",addr->point);
strcat(str,point); strcat(str,point);
} }
if(outstr==NULL) return(str);
return(str);
strcpy(outstr,str);
return(outstr);
} }
/****************************************************************************/ /****************************************************************************/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment