$OpenBSD: patch-drivers_netjack_netjack_packet_c,v 1.1 2010/06/07 01:44:38 jakemsr Exp $ --- drivers/netjack/netjack_packet.c.orig Wed May 19 21:19:11 2010 +++ drivers/netjack/netjack_packet.c Wed May 19 21:32:41 2010 @@ -672,13 +672,15 @@ packet_cache_find_latency( packet_cache *pcache, jack_ int netjack_recvfrom (int sockfd, char *packet_buf, int pkt_size, int flags, struct sockaddr *addr, socklen_t *addr_size, int mtu) { - if (pkt_size <= mtu) - return recvfrom (sockfd, packet_buf, pkt_size, flags, addr, addr_size); - char *rx_packet = alloca (mtu); - jacknet_packet_header *pkthdr = (jacknet_packet_header *) rx_packet; + char *rx_packet; + jacknet_packet_header *pkthdr; int rcv_len; jack_nframes_t framecnt; cache_packet *cpack; + if (pkt_size <= mtu) + return recvfrom (sockfd, packet_buf, pkt_size, flags, addr, addr_size); + rx_packet = alloca (mtu); + pkthdr = (jacknet_packet_header *) rx_packet; do { rcv_len = recvfrom (sockfd, rx_packet, mtu, 0, addr, addr_size); @@ -696,13 +698,16 @@ netjack_recvfrom (int sockfd, char *packet_buf, int pk int netjack_recv (int sockfd, char *packet_buf, int pkt_size, int flags, int mtu) { - if (pkt_size <= mtu) - return recv (sockfd, packet_buf, pkt_size, flags); - char *rx_packet = alloca (mtu); - jacknet_packet_header *pkthdr = (jacknet_packet_header *) rx_packet; + char *rx_packet; + jacknet_packet_header *pkthdr; int rcv_len; jack_nframes_t framecnt; cache_packet *cpack; + + if (pkt_size <= mtu) + return recv (sockfd, packet_buf, pkt_size, flags); + rx_packet = alloca (mtu); + pkthdr = (jacknet_packet_header *) rx_packet; do { rcv_len = recv (sockfd, rx_packet, mtu, flags); @@ -723,15 +728,18 @@ netjack_sendto (int sockfd, char *packet_buf, int pkt_ int frag_cnt = 0; char *tx_packet, *dataX; jacknet_packet_header *pkthdr; + int fragment_payload_size; + int err; + char *packet_bufX; + int last_payload_size; tx_packet = alloca (mtu + 10); dataX = tx_packet + sizeof (jacknet_packet_header); pkthdr = (jacknet_packet_header *) tx_packet; - int fragment_payload_size = mtu - sizeof (jacknet_packet_header); + fragment_payload_size = mtu - sizeof (jacknet_packet_header); if (pkt_size <= mtu) { - int err; pkthdr = (jacknet_packet_header *) packet_buf; pkthdr->fragment_nr = htonl (0); err = sendto(sockfd, packet_buf, pkt_size, flags, addr, addr_size); @@ -742,12 +750,11 @@ netjack_sendto (int sockfd, char *packet_buf, int pkt_ } else { - int err; // Copy the packet header to the tx pack first. memcpy(tx_packet, packet_buf, sizeof (jacknet_packet_header)); // Now loop and send all - char *packet_bufX = packet_buf + sizeof (jacknet_packet_header); + packet_bufX = packet_buf + sizeof (jacknet_packet_header); while (packet_bufX < (packet_buf + pkt_size - fragment_payload_size)) { @@ -757,7 +764,7 @@ netjack_sendto (int sockfd, char *packet_buf, int pkt_ packet_bufX += fragment_payload_size; } - int last_payload_size = packet_buf + pkt_size - packet_bufX; + last_payload_size = packet_buf + pkt_size - packet_bufX; memcpy (dataX, packet_bufX, last_payload_size); pkthdr->fragment_nr = htonl (frag_cnt); //jack_error("last fragment_count = %d, payload_size = %d\n", fragment_count, last_payload_size); @@ -779,6 +786,7 @@ decode_midi_buffer (uint32_t *buffer_uint32, unsigned for (i = 0; i < buffer_size_uint32 - 3;) { uint32_t payload_size; + unsigned int nb_data_quads; payload_size = buffer_uint32[i]; payload_size = ntohl (payload_size); if (payload_size) @@ -790,7 +798,7 @@ decode_midi_buffer (uint32_t *buffer_uint32, unsigned jack_midi_event_write (buf, event.time, event.buffer, event.size); // skip to the next event - unsigned int nb_data_quads = (((event.size-1) & ~0x3) >> 2)+1; + nb_data_quads = (((event.size-1) & ~0x3) >> 2)+1; i += 3+nb_data_quads; } else @@ -808,9 +816,12 @@ encode_midi_buffer (uint32_t *buffer_uint32, unsigned for (i = 0; i < nevents; ++i) { jack_midi_event_t event; + unsigned int nb_data_quads; + unsigned int payload_size; + jack_midi_data_t* tmpbuff; jack_midi_event_get (&event, buf, i); - unsigned int nb_data_quads = (((event.size - 1) & ~0x3) >> 2) + 1; - unsigned int payload_size = 3 + nb_data_quads; + nb_data_quads = (((event.size - 1) & ~0x3) >> 2) + 1; + payload_size = 3 + nb_data_quads; // only write if we have sufficient space for the event // otherwise drop it if (written + payload_size < buffer_size_uint32 - 1) @@ -824,7 +835,7 @@ encode_midi_buffer (uint32_t *buffer_uint32, unsigned written++; // write data - jack_midi_data_t* tmpbuff = (jack_midi_data_t*)(&(buffer_uint32[written])); + tmpbuff = (jack_midi_data_t*)(&(buffer_uint32[written])); memcpy (tmpbuff, event.buffer, event.size); written += nb_data_quads; }