Fixes found in smtp testing
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@356 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
f43ffa05aa
commit
00093c0a08
@ -45,6 +45,7 @@
|
||||
|
||||
#include <sys/ioctl.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
|
||||
@ -70,11 +71,29 @@
|
||||
# include <net/uip/resolv.h>
|
||||
#elif defined(CONFIG_EXAMPLE_UIP_WEBCLIENT)
|
||||
# include <net/uip/webclient.h>
|
||||
#else
|
||||
# error "No network application specified"
|
||||
#endif
|
||||
|
||||
/************************************************************
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_EXAMPLE_UIP_SMTP)
|
||||
static const char g_host_name[] = "localhost";
|
||||
static const char g_recipient[] = "spudmonkey@racsa.co.cr";
|
||||
static const char g_sender[] = "nuttx-testing@example.com";
|
||||
static const char g_subject[] = "Testing SMTP from NuttX";
|
||||
static const char g_msg_body[] = "Test message sent by NuttX\r\n";
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* user_initialize
|
||||
************************************************************/
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef CONFIG_HAVE_WEAKFUNCTIONS
|
||||
void user_initialize(void)
|
||||
@ -85,11 +104,11 @@ void user_initialize(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
/************************************************************
|
||||
/****************************************************************************
|
||||
* user_start
|
||||
************************************************************/
|
||||
****************************************************************************/
|
||||
|
||||
int user_start(int argc, char *argv[])
|
||||
int user_start(int argc, char *argv[])
|
||||
{
|
||||
struct in_addr addr;
|
||||
#if defined(CONFIG_EXAMPLE_UIP_DHCPC) || defined(CONFIG_ARCH_SIM)
|
||||
@ -154,9 +173,9 @@ void user_initialize(void)
|
||||
handle = smtp_open();
|
||||
if (handle)
|
||||
{
|
||||
smtp_configure("localhost", addr.s_addr);
|
||||
smtp_send("adam@sics.se", NULL, "uip-testing@example.com",
|
||||
"Testing SMTP from uIP", "Test message sent by uIP\r\n");
|
||||
smtp_configure(handle, g_host_name, &addr.s_addr);
|
||||
smtp_send(handle, g_recipient, NULL, g_sender, g_subject,
|
||||
g_msg_body, strlen(g_msg_body));
|
||||
smtp_close(handle);
|
||||
}
|
||||
#elif defined(CONFIG_EXAMPLE_UIP_WEBCLIENT)
|
||||
@ -180,6 +199,7 @@ void uip_log(char *m)
|
||||
printf("uIP log message: %s\n", m);
|
||||
}
|
||||
|
||||
#if defined(CONFIG_EXAMPLE_UIP_WEBCLIENT)
|
||||
void webclient_closed(void)
|
||||
{
|
||||
printf("Webclient: connection closed\n");
|
||||
@ -204,3 +224,4 @@ void webclient_datahandler(char *data, uint16 len)
|
||||
{
|
||||
printf("Webclient: got %d bytes of data.\n", len);
|
||||
}
|
||||
#endif
|
||||
|
@ -57,8 +57,11 @@
|
||||
****************************************************************************/
|
||||
|
||||
extern void *smtp_open(void);
|
||||
extern void smtp_configure(void *handle, char *localhostname, void *smtpserver);
|
||||
extern int smtp_send(void *handle, char *to, char *cc, char *from, char *subject, char *msg, int msglen);
|
||||
extern void smtp_configure(void *handle, const char *localhostname,
|
||||
const uip_ipaddr_t *paddr);
|
||||
extern int smtp_send(void *handle, const char *to, const char *cc,
|
||||
const char *from, const char *subject,
|
||||
const char *msg, int msglen);
|
||||
extern void smtp_close(void *handle);
|
||||
|
||||
#endif /* __SMTP_H__ */
|
||||
|
@ -258,8 +258,7 @@ int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen)
|
||||
goto errout;
|
||||
}
|
||||
|
||||
err = ENOSYS;
|
||||
/*return OK;*/
|
||||
return OK;
|
||||
|
||||
errout:
|
||||
*get_errno_ptr() = err;
|
||||
|
@ -406,7 +406,7 @@ static ssize_t recvfrom_result(int result, struct recvfrom_s *pstate)
|
||||
* psock Pointer to the socket structure for the SOCK_DRAM socket
|
||||
* buf Buffer to receive data
|
||||
* len Length of buffer
|
||||
* infrom INET ddress of source
|
||||
* infrom INET ddress of source (may be NULL)
|
||||
*
|
||||
* Returned Value:
|
||||
* On success, returns the number of characters sent. On error,
|
||||
@ -489,7 +489,7 @@ static ssize_t udp_recvfrom(FAR struct socket *psock, FAR void *buf, size_t len,
|
||||
* psock Pointer to the socket structure for the SOCK_DRAM socket
|
||||
* buf Buffer to receive data
|
||||
* len Length of buffer
|
||||
* infrom INET ddress of source
|
||||
* infrom INET ddress of source (may be NULL)
|
||||
*
|
||||
* Returned Value:
|
||||
* On success, returns the number of characters sent. On error,
|
||||
@ -575,7 +575,7 @@ static ssize_t tcp_recvfrom(FAR struct socket *psock, FAR void *buf, size_t len,
|
||||
* buf Buffer to receive data
|
||||
* len Length of buffer
|
||||
* flags Receive flags
|
||||
* from Address of source
|
||||
* from Address of source (may be NULL)
|
||||
* fromlen The length of the address structure
|
||||
*
|
||||
* Returned Value:
|
||||
@ -624,7 +624,7 @@ ssize_t recvfrom(int sockfd, FAR void *buf, size_t len, int flags, FAR struct so
|
||||
|
||||
/* Verify that non-NULL pointers were passed */
|
||||
|
||||
if (!buf || !from || !fromlen)
|
||||
if (!buf)
|
||||
{
|
||||
err = EINVAL;
|
||||
goto errout;
|
||||
@ -640,17 +640,20 @@ ssize_t recvfrom(int sockfd, FAR void *buf, size_t len, int flags, FAR struct so
|
||||
goto errout;
|
||||
}
|
||||
|
||||
/* Verify that a valid address has been provided */
|
||||
/* If a 'from' address has been provided, verify that it is valid */
|
||||
|
||||
if (from)
|
||||
{
|
||||
#ifdef CONFIG_NET_IPv6
|
||||
if (from->sa_family != AF_INET6 || *fromlen < sizeof(struct sockaddr_in6))
|
||||
if (from->sa_family != AF_INET6 || *fromlen < sizeof(struct sockaddr_in6))
|
||||
#else
|
||||
if (from->sa_family != AF_INET || *fromlen < sizeof(struct sockaddr_in))
|
||||
if (from->sa_family != AF_INET || *fromlen < sizeof(struct sockaddr_in))
|
||||
#endif
|
||||
{
|
||||
err = EBADF;
|
||||
goto errout;
|
||||
}
|
||||
{
|
||||
err = EBADF;
|
||||
goto errout;
|
||||
}
|
||||
}
|
||||
|
||||
/* Set the socket state to receiving */
|
||||
|
||||
|
@ -75,21 +75,21 @@
|
||||
|
||||
struct smtp_state
|
||||
{
|
||||
uint8 state;
|
||||
boolean connected;
|
||||
sem_t sem;
|
||||
uint8 state;
|
||||
boolean connected;
|
||||
sem_t sem;
|
||||
uip_ipaddr_t smtpserver;
|
||||
char *localhostname;
|
||||
char *to;
|
||||
char *cc;
|
||||
char *from;
|
||||
char *subject;
|
||||
char *msg;
|
||||
int msglen;
|
||||
int sentlen;
|
||||
int textlen;
|
||||
int sendptr;
|
||||
char buffer[SMTP_INPUT_BUFFER_SIZE];
|
||||
const char *localhostname;
|
||||
const char *to;
|
||||
const char *cc;
|
||||
const char *from;
|
||||
const char *subject;
|
||||
const char *msg;
|
||||
int msglen;
|
||||
int sentlen;
|
||||
int textlen;
|
||||
int sendptr;
|
||||
char buffer[SMTP_INPUT_BUFFER_SIZE];
|
||||
};
|
||||
|
||||
static inline int smtp_send_message(int sockfd, struct smtp_state *psmtp)
|
||||
@ -242,33 +242,35 @@ static inline int smtp_send_message(int sockfd, struct smtp_state *psmtp)
|
||||
|
||||
/* Specificy an SMTP server and hostname.
|
||||
*
|
||||
* This function is used to configure the SMTP module with an SMTP
|
||||
* server and the hostname of the host.
|
||||
* This function is used to configure the SMTP module with an SMTP server and
|
||||
* the hostname of the host.
|
||||
*
|
||||
* lhostname The hostname of the uIP host.
|
||||
* lhostname - The hostname of the local, uIP host.
|
||||
*
|
||||
* server A pointer to a 4-byte array representing the IP
|
||||
* address of the SMTP server to be configured.
|
||||
* paddr - A pointer to the IP address of the SMTP server to be
|
||||
* configured.
|
||||
*/
|
||||
|
||||
void smtp_configure(void *handle, char *lhostname, void *server)
|
||||
void smtp_configure(void *handle, const char *lhostname,
|
||||
const uip_ipaddr_t *paddr)
|
||||
{
|
||||
struct smtp_state *psmtp = (struct smtp_state *)handle;
|
||||
psmtp->localhostname = lhostname;
|
||||
uip_ipaddr_copy(psmtp->smtpserver, server);
|
||||
uip_ipaddr_copy(psmtp->smtpserver, paddr);
|
||||
}
|
||||
|
||||
/* Send an e-mail.
|
||||
*
|
||||
* to The e-mail address of the receiver of the e-mail.
|
||||
* cc The e-mail address of the CC: receivers of the e-mail.
|
||||
* from The e-mail address of the sender of the e-mail.
|
||||
* subject The subject of the e-mail.
|
||||
* msg The actual e-mail message.
|
||||
* msglen The length of the e-mail message.
|
||||
* to - The e-mail address of the receiver of the e-mail.
|
||||
* cc - The e-mail address of the CC: receivers of the e-mail.
|
||||
* from - The e-mail address of the sender of the e-mail.
|
||||
* subject - The subject of the e-mail.
|
||||
* msg - The actual e-mail message.
|
||||
* msglen - The length of the e-mail message.
|
||||
*/
|
||||
|
||||
int smtp_send(void *handle, char *to, char *cc, char *from, char *subject, char *msg, int msglen)
|
||||
int smtp_send(void *handle, const char *to, const char *cc, const char *from,
|
||||
const char *subject, const char *msg, int msglen)
|
||||
{
|
||||
struct smtp_state *psmtp = (struct smtp_state *)handle;
|
||||
struct sockaddr_in server;
|
||||
|
@ -289,6 +289,7 @@ static void handle_connection(struct httpd_state *pstate)
|
||||
int httpd_listen(void)
|
||||
{
|
||||
#warning "this is all very broken at the moment"
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
Loading…
Reference in New Issue
Block a user