summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-10-27 18:56:04 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-10-27 18:56:04 +0000
commit1e60556b89305022b6cefe9bb28badb51dc15620 (patch)
treed07c947b44430bff1520bd7ced5fe49e19b26bf3
parenta7e644a852025eeb8af8648f73aac7c9ffc315bd (diff)
downloadnuttx-1e60556b89305022b6cefe9bb28badb51dc15620.tar.gz
nuttx-1e60556b89305022b6cefe9bb28badb51dc15620.tar.bz2
nuttx-1e60556b89305022b6cefe9bb28badb51dc15620.zip
Fixes found in smtp testing
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@356 42af7a65-404d-4744-a932-0658087f49c3
-rw-r--r--nuttx/examples/uip/main.c37
-rw-r--r--nuttx/include/net/uip/smtp.h7
-rw-r--r--nuttx/net/connect.c3
-rw-r--r--nuttx/net/recvfrom.c25
-rw-r--r--nuttx/netutils/smtp/smtp.c58
-rw-r--r--nuttx/netutils/webserver/httpd.c1
6 files changed, 80 insertions, 51 deletions
diff --git a/nuttx/examples/uip/main.c b/nuttx/examples/uip/main.c
index 3024de873..9cddb0ab9 100644
--- a/nuttx/examples/uip/main.c
+++ b/nuttx/examples/uip/main.c
@@ -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
diff --git a/nuttx/include/net/uip/smtp.h b/nuttx/include/net/uip/smtp.h
index c90240d6d..aae9c972e 100644
--- a/nuttx/include/net/uip/smtp.h
+++ b/nuttx/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/nuttx/net/connect.c b/nuttx/net/connect.c
index 523c1d7c1..786a0e4e7 100644
--- a/nuttx/net/connect.c
+++ b/nuttx/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/nuttx/net/recvfrom.c b/nuttx/net/recvfrom.c
index 0665b54f1..8548924ec 100644
--- a/nuttx/net/recvfrom.c
+++ b/nuttx/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/nuttx/netutils/smtp/smtp.c b/nuttx/netutils/smtp/smtp.c
index 7a2e69c03..aa351d64b 100644
--- a/nuttx/netutils/smtp/smtp.c
+++ b/nuttx/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/nuttx/netutils/webserver/httpd.c b/nuttx/netutils/webserver/httpd.c
index 7c3271fd6..1f6f58df8 100644
--- a/nuttx/netutils/webserver/httpd.c
+++ b/nuttx/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;
}
/****************************************************************************