Commit 67d16160 authored by Cameron Kaiser's avatar Cameron Kaiser Committed by Daniel Stenberg
Browse files

Gopher using Curl_write; test suite (4 tests)

parent 65629f29
Loading
Loading
Loading
Loading
+21 −4
Original line number Diff line number Diff line
@@ -121,8 +121,8 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)

  curl_off_t *bytecount = &data->req.bytecount;
  char *path = data->state.path;

  char *sel;
  ssize_t amount, k;

  *done = TRUE; /* unconditionally */

@@ -149,12 +149,29 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done)
      return CURLE_OUT_OF_MEMORY;
  }

  result = Curl_sendf(sockfd, conn, "%s\r\n", sel);

  if(result) {
  /* We use Curl_write instead of Curl_sendf to make sure the entire buffer
     is sent, which could be sizeable with long selectors. */
  k = strlen(sel);
  for(;;) {
    result = Curl_write(conn, sockfd, sel, k, &amount);
    if (CURLE_OK == result) { /* Which may not have written it all! */
      k -= amount;
      sel += amount;
      if (k < 1)
        break; /* but it did write it all */
    } else {
      failf(data, "Failed sending Gopher request");
      return result;
    }
  }
  /* We can use Curl_sendf to send the terminal \r\n relatively safely and
     save allocing another string/doing another _write loop. */
  result = Curl_sendf(sockfd, conn, "\r\n");
  if (result != CURLE_OK) {
    failf(data, "Failed sending Gopher request");
    return result;
  }

  Curl_setup_transfer(conn, FIRSTSOCKET, -1, FALSE, bytecount,
                      -1, NULL); /* no upload */
  return CURLE_OK;
+39 −38
Original line number Diff line number Diff line
@@ -19,30 +19,30 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \
 test505 test74 test75 test76 test77 test78 test147 test148 test506 test79 \
 test80 test81 test82 test83 test84 test85 test86 test87 test507 test149   \
 test88 test89 test90 test508 test91 test92 test203 test93 test94 test95   \
 test510 test97 test98 test99 test150 test151 test152 test153	   \
 test154 test155 test156 test157 test158 test159 test511 test160 test161   \
 test162 test163 test164 test512 test165 test166 test167 test168 test169   \
 test170 test171 test172 test204 test205 test173 test174 test175 test176   \
 test177 test513 test514 test178 test179 test180 test181 test182 test183   \
 test184 test185 test186 test187 test188 test189 test191 test192 test193   \
 test194 test195 test196 test197 test198 test515 test516 test517 test518   \
 test210 test211 test212 test220 test221 test222 test223 test224 test206   \
 test207 test208 test209 test213 test240 test241 test242 test519 test214   \
 test215 test216 test217 test218 test199 test225 test226 test227 test228   \
 test229 test233 test234 test235 test236 test520 test237 test238 test239   \
 test243 test245 test246 test247 test248 test249 test250 test251 test252   \
 test253 test254 test255 test521 test522 test523 test256 test257 test258   \
 test259 test260 test261 test262 test263 test264 test265 test266 test267   \
 test268 test269 test270 test271 test272 test273 test274 test275 test524   \
 test525 test276 test277 test526 test527 test528 test530 DISABLED test278  \
 test279 test531 test280 test529 test532 test533 test534 test535 test281   \
 test537 test282 test283 test284 test538 test285 test286 test307 test308   \
 test287 test400 test288 test600 test601 test602 test603 test401 test402   \
 test290 test291 test292 test293 test403 test404 test405 test604 test605   \
 test606 test607 test608 test609 test294 test295 test296 test297 test298   \
 test610 test611 test612 test406 test407 test408 test409 test613 test614   \
 test700 test701 test702 test704 test705 test703 test706 test707 test350   \
 test351 test352 test353 test289 test540 test354 test231 test1000 test1001 \
 test510 test97 test98 test99 test150 test151 test152 test153 test154	   \
 test155 test156 test157 test158 test159 test511 test160 test161 test162   \
 test163 test164 test512 test165 test166 test167 test168 test169 test170   \
 test171 test172 test204 test205 test173 test174 test175 test176 test177   \
 test513 test514 test178 test179 test180 test181 test182 test183 test184   \
 test185 test186 test187 test188 test189 test191 test192 test193 test194   \
 test195 test196 test197 test198 test515 test516 test517 test518 test210   \
 test211 test212 test220 test221 test222 test223 test224 test206 test207   \
 test208 test209 test213 test240 test241 test242 test519 test214 test215   \
 test216 test217 test218 test199 test225 test226 test227 test228 test229   \
 test233 test234 test235 test236 test520 test237 test238 test239 test243   \
 test245 test246 test247 test248 test249 test250 test251 test252 test253   \
 test254 test255 test521 test522 test523 test256 test257 test258 test259   \
 test260 test261 test262 test263 test264 test265 test266 test267 test268   \
 test269 test270 test271 test272 test273 test274 test275 test524 test525   \
 test276 test277 test526 test527 test528 test530 DISABLED test278 test279  \
 test531 test280 test529 test532 test533 test534 test535 test281 test537   \
 test282 test283 test284 test538 test285 test286 test307 test308 test287   \
 test400 test288 test600 test601 test602 test603 test401 test402 test290   \
 test291 test292 test293 test403 test404 test405 test604 test605 test606   \
 test607 test608 test609 test294 test295 test296 test297 test298 test610   \
 test611 test612 test406 test407 test408 test409 test613 test614 test700   \
 test701 test702 test704 test705 test703 test706 test707 test350 test351   \
 test352 test353 test289 test540 test354 test231 test1000 test1001	   \
 test1002 test1003 test1004 test1005 test1006 test615 test1007 test541	   \
 test1010 test1011 test1012 test542 test543 test536 test1008 test1009	   \
 test2000 test2001 test2002 test2003 test35 test544 test545 test2004	   \
@@ -60,14 +60,15 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \
 test1072 test1073 test1074 test1075 test1076 test1077 test1078 test1079   \
 test1080 test1081 test1082 test1083 test1084 test1085 test633 test634	   \
 test635 test636 test637 test558 test559 test1086 test1087 test1088	   \
 test574 test575 test576 test577 test1113 test1114 \
 test1089 test1090 test1091 test1092 test1093 test1094 test1095 test1096   \
 test1097 test560 test561 test1098 test1099 test562 test563 test1100       \
 test564 test1101 test1102 test1103 test1104 test299 test310 test311       \
 test312 test1105 test565 test800 test1106 test801 test566 test802 test803 \
 test1107 test1108 test1109 test1110 test1111 test1112 test129 test567     \
 test568 test569 test570 test571 test572 test804 test805 test806 test807 \
 test573 test313 test1115 test578 test579 test1116
 test574 test575 test576 test577 test1113 test1114 test1089 test1090	   \
 test1091 test1092 test1093 test1094 test1095 test1096 test1097 test560	   \
 test561 test1098 test1099 test562 test563 test1100 test564 test1101	   \
 test1102 test1103 test1104 test299 test310 test311 test312 test1105	   \
 test565 test800 test1106 test801 test566 test802 test803 test1107	   \
 test1108 test1109 test1110 test1111 test1112 test129 test567 test568	   \
 test569 test570 test571 test572 test804 test805 test806 test807 test573   \
 test313 test1115 test578 test579 test1116 test1200 test1201 test1202	   \
 test1203

filecheck:
	@mkdir test-place; \

tests/data/test1200

0 → 100644
+40 −0
Original line number Diff line number Diff line
# Gopher directory fetch
<testcase>
<info>
<keywords>
GOPHER
INDEX
</keywords>
</info>

#
# Server-side
<reply>
<datacheck>
iMenu results		error.host	1
0Selector 	/bar	bar.foo.invalid	70
.
</datacheck>
</reply>

# Client-side
<client>
<server>
gopher
</server>
 <name>
Gopher index
 </name>
 <command>
gopher://%HOSTIP:%GOPHERPORT
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>

</protocol>
</verify>
</testcase>

tests/data/test1201

0 → 100644
+40 −0
Original line number Diff line number Diff line
# Gopher selector fetch
<testcase>
<info>
<keywords>
GOPHER
SELECTOR
</keywords>
</info>

#
# Server-side
<reply>
<datacheck>
iMenu results		error.host	1
0Selector /selector/SELECTOR	/bar	bar.foo.invalid	70
.
</datacheck>
</reply>

# Client-side
<client>
<server>
gopher
</server>
 <name>
Gopher selector
 </name>
 <command>
gopher://%HOSTIP:%GOPHERPORT/1/selector/SELECTOR
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
/selector/SELECTOR
</protocol>
</verify>
</testcase>

tests/data/test1202

0 → 100644
+41 −0
Original line number Diff line number Diff line
# Gopher query fetch
<testcase>
<info>
<keywords>
GOPHER
QUERY
</keywords>
</info>

#
# Server-side
<reply>
<datacheck>
iSearch results		error.host	1
0Query query succeeded	/foo	foo.bar.invalid	70
0Selector /the/search/engine	/bar	bar.foo.invalid	70
.
</datacheck>
</reply>

# Client-side
<client>
<server>
gopher
</server>
 <name>
Gopher query
 </name>
 <command>
gopher://%HOSTIP:%GOPHERPORT/7/the/search/engine?query%20succeeded
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<protocol>
/the/search/engine	query succeeded
</protocol>
</verify>
</testcase>
Loading