diff --git a/examples/uip/main.c b/examples/uip/main.c index 3024de873b..9cddb0ab98 100644 --- a/examples/uip/main.c +++ b/examples/uip/main.c @@ -45,6 +45,7 @@ #include #include +#include #include #include @@ -70,11 +71,29 @@ # include #elif defined(CONFIG_EXAMPLE_UIP_WEBCLIENT) # include +#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 diff --git a/include/net/uip/smtp.h b/include/net/uip/smtp.h index c90240d6de..aae9c972e4 100644 --- a/include/net/uip/smtp.h +++ b/include/net/uip/smtp.h @@ -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__ */ diff --git a/net/connect.c b/net/connect.c index 523c1d7c1e..786a0e4e71 100644 --- a/net/connect.c +++ b/net/connect.c @@ -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; diff --git a/net/recvfrom.c b/net/recvfrom.c index 0665b54f1a..8548924ec0 100644 --- a/net/recvfrom.c +++ b/net/recvfrom.c @@ -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 */ diff --git a/netutils/smtp/smtp.c b/netutils/smtp/smtp.c index 7a2e69c035..aa351d64b8 100644 --- a/netutils/smtp/smtp.c +++ b/netutils/smtp/smtp.c @@ -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; diff --git a/netutils/webserver/httpd.c b/netutils/webserver/httpd.c index 7c3271fd61..1f6f58df8b 100644 --- a/netutils/webserver/httpd.c +++ b/netutils/webserver/httpd.c @@ -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; } /****************************************************************************