svn commit: r351684 - user/pho/stress2/misc
Peter Holm
pho at FreeBSD.org
Mon Sep 2 07:52:40 UTC 2019
Author: pho
Date: Mon Sep 2 07:52:39 2019
New Revision: 351684
URL: https://svnweb.freebsd.org/changeset/base/351684
Log:
Added "Fixed by". Pointed out problem with an uninitialized "flags"
variable. Style fixes.
Sponsored by: Dell EMC Isilon
Modified:
user/pho/stress2/misc/sctp.sh
Modified: user/pho/stress2/misc/sctp.sh
==============================================================================
--- user/pho/stress2/misc/sctp.sh Mon Sep 2 02:51:51 2019 (r351683)
+++ user/pho/stress2/misc/sctp.sh Mon Sep 2 07:52:39 2019 (r351684)
@@ -5,6 +5,7 @@
# "panic: general protection fault" seen:
# https://people.freebsd.org/~pho/stress/log/sctp.txt
+# Fixed by r350626
# $FreeBSD$
@@ -25,91 +26,92 @@ static int my_port_num;
static void
die(const char *s)
{
- perror(s);
- exit(1);
+ perror(s);
+ exit(1);
}
-static void
+ static void
server(void)
{
- struct sctp_sndrcvinfo sndrcvinfo;
- struct sockaddr_in servaddr = {
- .sin_family = AF_INET,
- .sin_addr.s_addr = htonl(INADDR_ANY),
- .sin_port = htons(my_port_num),
- };
- struct sctp_initmsg initmsg = {
- .sinit_num_ostreams = 5,
- .sinit_max_instreams = 5,
- .sinit_max_attempts = 4,
- };
- int listen_fd, conn_fd, flags, ret, in;
+ struct sctp_sndrcvinfo sndrcvinfo;
+ struct sockaddr_in servaddr = {
+ .sin_family = AF_INET,
+ .sin_addr.s_addr = htonl(INADDR_ANY),
+ .sin_port = htons(my_port_num),
+ };
+ struct sctp_initmsg initmsg = {
+ .sinit_num_ostreams = 5,
+ .sinit_max_instreams = 5,
+ .sinit_max_attempts = 4,
+ };
+ int listen_fd, conn_fd, flags, ret, in;
- listen_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
- if (listen_fd < 0)
- die("socket");
+ listen_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
+ if (listen_fd < 0)
+ die("socket");
- ret = bind(listen_fd, (struct sockaddr *) &servaddr, sizeof(servaddr));
- if (ret < 0)
- die("bind");
+ ret = bind(listen_fd, (struct sockaddr *) &servaddr, sizeof(servaddr));
+ if (ret < 0)
+ die("bind");
- ret = setsockopt(listen_fd, IPPROTO_SCTP, SCTP_INITMSG, &initmsg,
- sizeof(initmsg));
- if (ret < 0)
- die("setsockopt");
+ ret = setsockopt(listen_fd, IPPROTO_SCTP, SCTP_INITMSG, &initmsg,
+ sizeof(initmsg));
+ if (ret < 0)
+ die("setsockopt");
- ret = listen(listen_fd, initmsg.sinit_max_instreams);
- if (ret < 0)
- die("listen");
+ ret = listen(listen_fd, initmsg.sinit_max_instreams);
+ if (ret < 0)
+ die("listen");
- for (;;) {
- char buffer[1024];
+ for (;;) {
+ char buffer[1024];
- printf("Waiting for connection\n");
- fflush(stdout);
+ printf("Waiting for connection\n");
+ fflush(stdout);
- conn_fd = accept(listen_fd, (struct sockaddr *) NULL, NULL);
- if(conn_fd < 0)
- die("accept()");
+ conn_fd = accept(listen_fd, (struct sockaddr *) NULL, NULL);
+ if(conn_fd < 0)
+ die("accept()");
- printf("New client connected\n");
- fflush(stdout);
+ printf("New client connected\n");
+ fflush(stdout);
- in = sctp_recvmsg(conn_fd, buffer, sizeof(buffer), NULL, 0,
- &sndrcvinfo, &flags);
- if (in > 0) {
- printf("Received data: %s\n", buffer);
- fflush(stdout);
- }
+ /* Note that flags is uninitialized here */
+ in = sctp_recvmsg(conn_fd, buffer, sizeof(buffer), NULL, 0,
+ &sndrcvinfo, &flags);
+ if (in > 0) {
+ printf("Received data: %s\n", buffer);
+ fflush(stdout);
+ }
- close(conn_fd);
- }
+ close(conn_fd);
+ }
}
static void
client(void)
{
- struct sockaddr_in servaddr = {
- .sin_family = AF_INET,
- .sin_port = htons(my_port_num),
- .sin_addr.s_addr = inet_addr("127.0.0.1"),
- };
- int conn_fd, ret;
- const char *msg = "Hello, Server!";
+ struct sockaddr_in servaddr = {
+ .sin_family = AF_INET,
+ .sin_port = htons(my_port_num),
+ .sin_addr.s_addr = inet_addr("127.0.0.1"),
+ };
+ int conn_fd, ret;
+ const char *msg = "Hello, Server!";
- conn_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
- if (conn_fd < 0)
- die("socket()");
+ conn_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);
+ if (conn_fd < 0)
+ die("socket()");
- ret = connect(conn_fd, (struct sockaddr *) &servaddr, sizeof(servaddr));
- if (ret < 0)
- die("connect()");
+ ret = connect(conn_fd, (struct sockaddr *) &servaddr, sizeof(servaddr));
+ if (ret < 0)
+ die("connect()");
- ret = sctp_sendmsg(conn_fd, (void *) msg, strlen(msg) + 1, NULL, 0, 0, 0, 0, 0, 0 );
- if (ret < 0)
- die("sctp_sendmsg");
+ ret = sctp_sendmsg(conn_fd, (void *) msg, strlen(msg) + 1, NULL, 0, 0, 0, 0, 0, 0 );
+ if (ret < 0)
+ die("sctp_sendmsg");
- close(conn_fd);
+ close(conn_fd);
}
int
@@ -117,12 +119,12 @@ main(int argc __unused, char *argv[])
{
my_port_num = atoi(argv[1]);
- if (strstr(basename(argv[0]), "server"))
- server();
- else
- client();
+ if (strstr(basename(argv[0]), "server"))
+ server();
+ else
+ client();
- return 0;
+ return (0);
}
EOF
@@ -153,5 +155,5 @@ pkill server
wait
while pkill swap; do :; done
wait
-rm -f /tmp/server /tmp/client
+rm -f /tmp/sctp.c /tmp/server /tmp/client
exit 0
More information about the svn-src-user
mailing list